devtools-timeline-model
devtools-timeline-model copied to clipboard
Frame model missing from trace files recorded with current Puppeteer
Traces recorded with the current 1.3.0 version of puppeteer are missing a valid frame model, instead it's just empty.
Chromium(67.0.3391.0 dev) as well as the online DevTools Timeline Viewer process it correctly, Chrome (66.0.3359.117) is missing the frames counter as well, so I'm guessing something about the file format changed?
Example trace file trace.json.txt
Recorded with
const pup = require( 'puppeteer' );
(async () => {
const browser = await pup.launch();
const page = await browser.newPage();
await page.tracing.start( {
path: "trace.json"
} );
await page.goto('https://threejs.org/examples/webgl_geometry_cube.html');
await page.waitFor(1000);
await page.tracing.stop();
await browser.close();
} )();
Output from example.js
Timeline model events:
2976
IR model interactions
0
Frame model frames:
0 <<<<<<<<<
Filmstrip model screenshots:
0
Top down tree total time:
535.9709997177124
Top down tree, not grouped:
Map {
'ParseHTML' => '291.0',
'EvaluateScript' => '126.8',
'Layout' => '60.3',
'FireAnimationFrame' => '37.1',
'CompositeLayers' => '10.7',
'UpdateLayerTree' => '5.8',
'UpdateLayoutTree' => '1.9',
'Paint' => '1.3',
'f:@15' => '1.0' }
Bottom up tree leaves:
100
bottom up tree, grouped by URL Map {
'https://threejs.org/build/three.js' => '403.2',
'https://threejs.org/examples/webgl_geometry_cube.html' => '34.1',
'native array.js' => '2.1' }
Bottom up tree, grouped, 2nd top URL:
34.08 https://threejs.org/examples/webgl_geometry_cube.html
Bottom up tree, grouped by top subdomain:
Map { 'threejs.org' => '437.3', 'native ' => '2.1' }
Bottom up tree grouped by EventName:
Map {
'JS Frame' => '385.6',
'Layout' => '60.3',
'Evaluate Script' => '28.9',
'Compile Script' => '12.7',
'Composite Layers' => '10.7',
'Minor GC' => '10.6',
'Animation Frame Fired' => '7.0',
'Update Layer Tree' => '5.8',
'Parse HTML' => '5.1',
'Recalculate Style' => '4.0',
'Image Decode' => '2.7',
'Paint' => '1.3',
'Run Microtasks' => '1.1' }
Chrome

DevTools Timeline Viewer

Chromium

it's due to the removal of sessionId in ChromeDevTools/devtools-frontend/commit@39f4e51bdf5f9d3ebd63db967cfc383f6e386328 (1, 2, etc.)
Removing the if as in here
if (this._sessionId === sessionId)
this._layerTreeId = event.args['layerTreeId'] || event.args['data']['layerTreeId'];
is enough as a hotfix it seems. This probably messes something up with frames and there are some changes for backwards compatibility reasons - but I'll leave that to the professionals :)
Yes, the file format has changed. So you're trying to open a trace recorded in a new version with an old Chrome.
Facing the same issue. So whats the solution?
I was facing the same issue. The solution seems to be to use the latestbump branch. This seems have the needed updates. Once #25 gets merged this should fix the issue, but I'm not sure when this is going to happen. For now I've just been using latestbump locally.