REPOSITORY SOURCE

completed-frame-entry.json

docs/evidence/completed-frame-entry.json

1{
2  "date": "2026-10-25",
3  "scope": "Completed first-scene GPU frame before initial player entry, corrected headless Vulkan surface configuration, and explicitly incomplete Chromium 155 multiplayer qualification.",
4  "source": {
5    "baseCommit": "63fbca03936e0a6fd0656b70f84eb4b461a9685a",
6    "files": [
7      {
8        "path": "apps/player/main.ts",
9        "sha256": "23790195980044f8feb2ad0bbf0bdd6bf17ba0d2dfbd8f0c0b9840b53d031eee"
10      },
11      {
12        "path": "playwright.config.ts",
13        "sha256": "02042817ed56698d5bc9b2a3449dd2487c5195db0f90c6683c52e6ca81d449c4"
14      },
15      {
16        "path": "tools/cli/review-traveler.mjs",
17        "sha256": "7973b07dc10ddbd9235eac85a901cb0746c70d5634df2c46fbc2a911cecbb603"
18      },
19      {
20        "path": "tests/browser/player.spec.ts",
21        "sha256": "1ca4c52d69cd943a6b43b4762136ac7a0a210ff695f8da4e3fa0da5eeea27b1b"
22      }
23    ]
24  },
25  "typecheck": "Passed; 123 source-file package boundaries",
26  "clearExperiment": [
27    {
28      "name": "155-original",
29      "browser": "155.0.8059.84",
30      "args": [
31        "--enable-unsafe-webgpu",
32        "--enable-unsafe-swiftshader",
33        "--use-angle=vulkan",
34        "--use-vulkan=swiftshader",
35        "--use-webgpu-adapter=swiftshader",
36        "--enable-features=Vulkan",
37        "--disable-vulkan-surface"
38      ],
39      "ready": {
40        "error": "Error: No adapter"
41      },
42      "main": [
43        0,
44        0,
45        0,
46        255
47      ],
48      "worker": [
49        0,
50        0,
51        0,
52        255
53      ]
54    },
55    {
56      "name": "155-surface",
57      "browser": "155.0.8059.84",
58      "args": [
59        "--enable-unsafe-webgpu",
60        "--enable-unsafe-swiftshader",
61        "--use-angle=vulkan",
62        "--use-vulkan=swiftshader",
63        "--use-webgpu-adapter=swiftshader",
64        "--enable-features=Vulkan"
65      ],
66      "ready": {
67        "ready": true
68      },
69      "main": [
70        255,
71        0,
72        0,
73        255
74      ],
75      "worker": [
76        0,
77        255,
78        0,
79        255
80      ]
81    },
82    {
83      "name": "141-surface",
84      "browser": "141.0.7390.37",
85      "args": [
86        "--enable-unsafe-webgpu",
87        "--enable-unsafe-swiftshader",
88        "--use-angle=vulkan",
89        "--use-vulkan=swiftshader",
90        "--use-webgpu-adapter=swiftshader",
91        "--enable-features=Vulkan"
92      ],
93      "ready": {
94        "ready": true
95      },
96      "main": [
97        255,
98        0,
99        0,
100        255
101      ],
102      "worker": [
103        0,
104        255,
105        0,
106        255
107      ]
108    },
109    {
110      "name": "141-original",
111      "browser": "141.0.7390.37",
112      "args": [
113        "--enable-unsafe-webgpu",
114        "--enable-unsafe-swiftshader",
115        "--use-angle=vulkan",
116        "--use-vulkan=swiftshader",
117        "--use-webgpu-adapter=swiftshader",
118        "--enable-features=Vulkan",
119        "--disable-vulkan-surface"
120      ],
121      "ready": {
122        "ready": true
123      },
124      "main": [
125        255,
126        0,
127        0,
128        255
129      ],
130      "worker": [
131        0,
132        255,
133        0,
134        255
135      ]
136    }
137  ],
138  "rejectedAlternative": [
139    {
140      "name": "155-swangle",
141      "browser": "155.0.8059.84",
142      "args": [
143        "--enable-unsafe-webgpu",
144        "--enable-unsafe-swiftshader",
145        "--use-gl=angle",
146        "--use-angle=swiftshader",
147        "--use-vulkan=swiftshader",
148        "--use-webgpu-adapter=swiftshader"
149      ],
150      "ready": {
151        "error": "OperationError: A valid external Instance reference no longer exists."
152      },
153      "main": [
154        255,
155        255,
156        255,
157        255
158      ],
159      "worker": [
160        0,
161        0,
162        0,
163        255
164      ]
165    },
166    {
167      "name": "141-swangle",
168      "browser": "141.0.7390.37",
169      "args": [
170        "--enable-unsafe-webgpu",
171        "--enable-unsafe-swiftshader",
172        "--use-gl=angle",
173        "--use-angle=swiftshader",
174        "--use-vulkan=swiftshader",
175        "--use-webgpu-adapter=swiftshader"
176      ],
177      "ready": {
178        "error": "OperationError: A valid external Instance reference no longer exists."
179      },
180      "main": [
181        255,
182        255,
183        255,
184        255
185      ],
186      "worker": [
187        0,
188        0,
189        0,
190        255
191      ]
192    }
193  ],
194  "chromium155": {
195    "stats": {
196      "startTime": "2026-10-25T13:11:53.295Z",
197      "duration": 22577.095,
198      "expected": 3,
199      "skipped": 0,
200      "unexpected": 0,
201      "flaky": 0
202    },
203    "cases": [
204      {
205        "title": "entry waits for the first accepted scene frame to complete (worker)",
206        "status": "expected",
207        "durationsMs": [
208          5533
209        ]
210      },
211      {
212        "title": "entry waits for the first accepted scene frame to complete (main)",
213        "status": "expected",
214        "durationsMs": [
215          7318
216        ]
217      },
218      {
219        "title": "world pixel checks use completed presentation and reject an invisible canvas despite visible UI",
220        "status": "expected",
221        "durationsMs": [
222          6461
223        ]
224      }
225    ]
226  },
227  "chromium141": {
228    "stats": {
229      "startTime": "2026-10-25T13:14:34.268Z",
230      "duration": 56167.191000000006,
231      "expected": 5,
232      "skipped": 0,
233      "unexpected": 0,
234      "flaky": 0
235    },
236    "cases": [
237      {
238        "title": "startup deadline closes an admitted simulation while initial graphics remain held",
239        "status": "expected",
240        "durationsMs": [
241          20803
242        ]
243      },
244      {
245        "title": "entry waits for the first accepted scene frame to complete (worker)",
246        "status": "expected",
247        "durationsMs": [
248          4468
249        ]
250      },
251      {
252        "title": "entry waits for the first accepted scene frame to complete (main)",
253        "status": "expected",
254        "durationsMs": [
255          3628
256        ]
257      },
258      {
259        "title": "world pixel checks use completed presentation and reject an invisible canvas despite visible UI",
260        "status": "expected",
261        "durationsMs": [
262          6580
263        ]
264      },
265      {
266        "title": "renders, walks, pauses, releases input, and restores the local checkpoint",
267        "status": "expected",
268        "durationsMs": [
269          17401
270        ]
271      }
272    ]
273  },
274  "persistent141": {
275    "stats": {
276      "startTime": "2026-10-25T13:15:33.639Z",
277      "duration": 60302.702000000005,
278      "expected": 1,
279      "skipped": 0,
280      "unexpected": 0,
281      "flaky": 0
282    },
283    "cases": [
284      {
285        "title": "persistent players share objects and restore committed travel without local position saves",
286        "status": "expected",
287        "durationsMs": [
288          58722
289        ]
290      }
291    ]
292  },
293  "firstFrameReports155": {
294    "first-frame-worker-held.json": {
295      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/155.0.0.0 Safari/537.36",
296      "renderPlacement": "worker",
297      "startupStages": {
298        "started": 75.90000003576279,
299        "admission": 79.20000004768372,
300        "graphics": 1264.6000000238419,
301        "simulation": 522.4000000357628,
302        "presentation": 1264.9000000357628,
303        "room": null,
304        "ready": null,
305        "failed": null
306      },
307      "render": {
308        "instances": 674,
309        "triangles": 47016,
310        "visibleInstances": 575,
311        "shadowInstances": 378,
312        "visibleTriangles": 41304,
313        "shadowTriangles": 30732,
314        "drawCalls": 9,
315        "buffers": 53,
316        "textures": 4,
317        "targetBytes": 32329216,
318        "targetGeneration": 1,
319        "width": 1440,
320        "height": 900,
321        "frameMs": 2.900000035762787,
322        "submittedFrames": 1,
323        "completedFrames": 0,
324        "failedFrames": 0,
325        "cancelledFrames": 0,
326        "pendingFrames": 1,
327        "skippedFrames": 51,
328        "completionWaitMs": 0,
329        "maxCompletionWaitMs": 0,
330        "lastSubmittedAtMs": 1301.299853503704,
331        "lastCompletedAtMs": null
332      },
333      "graphicsIncidents": [],
334      "viewport": [
335        1440,
336        900,
337        1
338      ]
339    },
340    "first-frame-worker-ready.json": {
341      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/155.0.0.0 Safari/537.36",
342      "renderPlacement": "worker",
343      "startupStages": {
344        "started": 75.90000003576279,
345        "admission": 79.20000004768372,
346        "graphics": 1264.6000000238419,
347        "simulation": 522.4000000357628,
348        "presentation": 1264.9000000357628,
349        "room": null,
350        "ready": 2155.100000023842,
351        "failed": null
352      },
353      "render": {
354        "instances": 674,
355        "triangles": 47016,
356        "visibleInstances": 575,
357        "shadowInstances": 378,
358        "visibleTriangles": 41304,
359        "shadowTriangles": 30732,
360        "drawCalls": 9,
361        "buffers": 53,
362        "textures": 4,
363        "targetBytes": 32329216,
364        "targetGeneration": 1,
365        "width": 1440,
366        "height": 900,
367        "frameMs": 1.300000011920929,
368        "submittedFrames": 9,
369        "completedFrames": 8,
370        "failedFrames": 0,
371        "cancelledFrames": 0,
372        "pendingFrames": 1,
373        "skippedFrames": 162,
374        "completionWaitMs": 266,
375        "maxCompletionWaitMs": 842.9000000357628,
376        "lastSubmittedAtMs": 3987.799853503704,
377        "lastCompletedAtMs": 3981.999853491783
378      },
379      "graphicsIncidents": [],
380      "viewport": [
381        1440,
382        900,
383        1
384      ]
385    },
386    "first-frame-main-held.json": {
387      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/155.0.0.0 Safari/537.36",
388      "renderPlacement": "main",
389      "startupStages": {
390        "started": 106.60000002384186,
391        "admission": 111.40000003576279,
392        "graphics": 1147.9000000357628,
393        "simulation": 854.3000000119209,
394        "presentation": 1147.9000000357628,
395        "room": null,
396        "ready": null,
397        "failed": null
398      },
399      "render": {
400        "instances": 674,
401        "triangles": 47016,
402        "visibleInstances": 575,
403        "shadowInstances": 378,
404        "visibleTriangles": 41304,
405        "shadowTriangles": 30732,
406        "drawCalls": 9,
407        "buffers": 53,
408        "textures": 4,
409        "targetBytes": 32329216,
410        "targetGeneration": 1,
411        "width": 1440,
412        "height": 900,
413        "frameMs": 3.5,
414        "submittedFrames": 1,
415        "completedFrames": 0,
416        "failedFrames": 0,
417        "cancelledFrames": 0,
418        "pendingFrames": 1,
419        "skippedFrames": 6,
420        "completionWaitMs": 0,
421        "maxCompletionWaitMs": 0,
422        "lastSubmittedAtMs": 1201.699999988079,
423        "lastCompletedAtMs": null
424      },
425      "graphicsIncidents": [],
426      "viewport": [
427        1440,
428        900,
429        1
430      ]
431    },
432    "first-frame-main-ready.json": {
433      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/155.0.0.0 Safari/537.36",
434      "renderPlacement": "main",
435      "startupStages": {
436        "started": 106.60000002384186,
437        "admission": 111.40000003576279,
438        "graphics": 1147.9000000357628,
439        "simulation": 854.3000000119209,
440        "presentation": 1147.9000000357628,
441        "room": null,
442        "ready": 1787.9000000357628,
443        "failed": null
444      },
445      "render": {
446        "instances": 674,
447        "triangles": 47016,
448        "visibleInstances": 575,
449        "shadowInstances": 378,
450        "visibleTriangles": 41304,
451        "shadowTriangles": 30732,
452        "drawCalls": 9,
453        "buffers": 53,
454        "textures": 4,
455        "targetBytes": 32329216,
456        "targetGeneration": 1,
457        "width": 1440,
458        "height": 900,
459        "frameMs": 1.9000000357627869,
460        "submittedFrames": 7,
461        "completedFrames": 7,
462        "failedFrames": 0,
463        "cancelledFrames": 0,
464        "pendingFrames": 0,
465        "skippedFrames": 19,
466        "completionWaitMs": 517.6999999880791,
467        "maxCompletionWaitMs": 589.9000000357628,
468        "lastSubmittedAtMs": 4383.400000035763,
469        "lastCompletedAtMs": 4901.100000023842
470      },
471      "graphicsIncidents": [],
472      "viewport": [
473        1440,
474        900,
475        1
476      ]
477    }
478  },
479  "firstFrameReports141": {
480    "first-frame-worker-held.json": {
481      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
482      "renderPlacement": "worker",
483      "startupStages": {
484        "started": 63.89999997615814,
485        "admission": 66.39999997615814,
486        "graphics": 1202.300000011921,
487        "simulation": 462.80000001192093,
488        "presentation": 1202.6000000238419,
489        "room": null,
490        "ready": null,
491        "failed": null
492      },
493      "render": {
494        "instances": 674,
495        "triangles": 47016,
496        "visibleInstances": 575,
497        "shadowInstances": 378,
498        "visibleTriangles": 41304,
499        "shadowTriangles": 30732,
500        "drawCalls": 9,
501        "buffers": 53,
502        "textures": 4,
503        "targetBytes": 32329216,
504        "targetGeneration": 1,
505        "width": 1440,
506        "height": 900,
507        "frameMs": 2.100000023841858,
508        "submittedFrames": 1,
509        "completedFrames": 0,
510        "failedFrames": 0,
511        "cancelledFrames": 0,
512        "pendingFrames": 1,
513        "skippedFrames": 48,
514        "completionWaitMs": 0,
515        "maxCompletionWaitMs": 0,
516        "lastSubmittedAtMs": 1242.6000000238419,
517        "lastCompletedAtMs": null
518      },
519      "graphicsIncidents": [],
520      "viewport": [
521        1440,
522        900,
523        1
524      ]
525    },
526    "first-frame-worker-ready.json": {
527      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
528      "renderPlacement": "worker",
529      "startupStages": {
530        "started": 63.89999997615814,
531        "admission": 66.39999997615814,
532        "graphics": 1202.300000011921,
533        "simulation": 462.80000001192093,
534        "presentation": 1202.6000000238419,
535        "room": null,
536        "ready": 2078.100000023842,
537        "failed": null
538      },
539      "render": {
540        "instances": 674,
541        "triangles": 47016,
542        "visibleInstances": 575,
543        "shadowInstances": 378,
544        "visibleTriangles": 41304,
545        "shadowTriangles": 30732,
546        "drawCalls": 9,
547        "buffers": 53,
548        "textures": 4,
549        "targetBytes": 32329216,
550        "targetGeneration": 1,
551        "width": 1440,
552        "height": 900,
553        "frameMs": 1.5999999642372131,
554        "submittedFrames": 6,
555        "completedFrames": 5,
556        "failedFrames": 0,
557        "cancelledFrames": 0,
558        "pendingFrames": 1,
559        "skippedFrames": 114,
560        "completionWaitMs": 245.5999999642372,
561        "maxCompletionWaitMs": 798.3999999761581,
562        "lastSubmittedAtMs": 3081.800000011921,
563        "lastCompletedAtMs": 3071.399999976158
564      },
565      "graphicsIncidents": [],
566      "viewport": [
567        1440,
568        900,
569        1
570      ]
571    },
572    "first-frame-main-held.json": {
573      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
574      "renderPlacement": "main",
575      "startupStages": {
576        "started": 54.19999998807907,
577        "admission": 58.10000002384186,
578        "graphics": 784.6999999880791,
579        "simulation": 785.5,
580        "presentation": 784.8000000119209,
581        "room": null,
582        "ready": null,
583        "failed": null
584      },
585      "render": {
586        "instances": 674,
587        "triangles": 47016,
588        "visibleInstances": 575,
589        "shadowInstances": 378,
590        "visibleTriangles": 41304,
591        "shadowTriangles": 30732,
592        "drawCalls": 9,
593        "buffers": 53,
594        "textures": 4,
595        "targetBytes": 32329216,
596        "targetGeneration": 1,
597        "width": 1440,
598        "height": 900,
599        "frameMs": 2.400000035762787,
600        "submittedFrames": 1,
601        "completedFrames": 0,
602        "failedFrames": 0,
603        "cancelledFrames": 0,
604        "pendingFrames": 1,
605        "skippedFrames": 5,
606        "completionWaitMs": 0,
607        "maxCompletionWaitMs": 0,
608        "lastSubmittedAtMs": 824.6000000238419,
609        "lastCompletedAtMs": null
610      },
611      "graphicsIncidents": [],
612      "viewport": [
613        1440,
614        900,
615        1
616      ]
617    },
618    "first-frame-main-ready.json": {
619      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
620      "renderPlacement": "main",
621      "startupStages": {
622        "started": 54.19999998807907,
623        "admission": 58.10000002384186,
624        "graphics": 784.6999999880791,
625        "simulation": 785.5,
626        "presentation": 784.8000000119209,
627        "room": null,
628        "ready": 1190.6000000238419,
629        "failed": null
630      },
631      "render": {
632        "instances": 674,
633        "triangles": 47016,
634        "visibleInstances": 575,
635        "shadowInstances": 378,
636        "visibleTriangles": 41304,
637        "shadowTriangles": 30732,
638        "drawCalls": 9,
639        "buffers": 53,
640        "textures": 4,
641        "targetBytes": 32329216,
642        "targetGeneration": 1,
643        "width": 1440,
644        "height": 900,
645        "frameMs": 0.8999999761581421,
646        "submittedFrames": 7,
647        "completedFrames": 6,
648        "failedFrames": 0,
649        "cancelledFrames": 0,
650        "pendingFrames": 1,
651        "skippedFrames": 16,
652        "completionWaitMs": 294.60000002384186,
653        "maxCompletionWaitMs": 354.39999997615814,
654        "lastSubmittedAtMs": 2580.300000011921,
655        "lastCompletedAtMs": 2579.400000035763
656      },
657      "graphicsIncidents": [],
658      "viewport": [
659        1440,
660        900,
661        1
662      ]
663    }
664  },
665  "commands": [
666    "PLAYWRIGHT_EXECUTABLE_PATH=/usr/bin/chromium npm run test:browser -- tests/browser/player.spec.ts -g 'entry waits for the first|world pixel checks'",
667    "PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell npm run test:browser -- tests/browser/player.spec.ts -g 'entry waits for the first|world pixel checks|startup deadline|renders, walks'",
668    "PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell npm run test:browser:persistent"
669  ],
670  "remaining": [
671    "Chromium 155 persistent acceptance failed twice while enabling the second traveler; screenshot showed Shader compilation deadline exceeded. Neither the existing 15-second shader budget nor the scenario was weakened.",
672    "Clear experiment checks GPU admission and compositor output, not engine shader features or multi-client performance.",
673    "Software GPU testing does not qualify physical desktop or phone hardware.",
674    "Full milestones 0\u201318 remain active; approximate completion remains 62%."
675  ],
676  "references": [
677    "https://chromium.googlesource.com/chromium/src/+/main/docs/gpu/swiftshader.md"
678  ],
679  "clearExperimentSource": "import {createServer} from 'node:http';\nimport {writeFileSync} from 'node:fs';\nimport {chromium} from '/home/jason/coding/dw-web/node_modules/playwright/index.mjs';\nimport {createRequire} from 'node:module';\nconst require=createRequire('/home/jason/coding/dw-web/package.json'),{decode}=require('fast-png');\nconst html=`<style>body{margin:0;background:black}canvas{width:128px;height:128px;display:inline-block}</style><canvas id=\"a\" width=\"128\" height=\"128\"></canvas><canvas id=\"b\" width=\"128\" height=\"128\"></canvas><script>\nasync function paint(canvas,color){const adapter=await navigator.gpu.requestAdapter({powerPreference:\"high-performance\"});if(!adapter)throw Error('No adapter');const device=await adapter.requestDevice(),context=canvas.getContext('webgpu');context.configure({device,format:navigator.gpu.getPreferredCanvasFormat(),alphaMode:'opaque'});let count=0;function draw(){const command=device.createCommandEncoder(),pass=command.beginRenderPass({colorAttachments:[{view:context.getCurrentTexture().createView(),clearValue:color,loadOp:'clear',storeOp:'store'}]});pass.end();device.queue.submit([command.finish()]);count++;requestAnimationFrame(draw);}draw();await device.queue.onSubmittedWorkDone();return {adapter:adapter.info,frames:()=>count};}\n(async()=>{await paint(document.querySelector('#a'),{r:1,g:0,b:0,a:1});const code='('+paint.toString()+');';const source='const paint='+paint.toString()+';onmessage=async e=>{try{await paint(e.data,{r:0,g:1,b:0,a:1});postMessage({ready:true});}catch(error){postMessage({error:String(error)});}}';const worker=new Worker(URL.createObjectURL(new Blob([source],{type:'text/javascript'})));worker.onmessage=e=>{window.result=e.data};const canvas=document.querySelector('#b').transferControlToOffscreen();worker.postMessage(canvas,[canvas]);})().catch(error=>window.result={error:String(error)});\n</script>`;\nconst server=createServer((req,res)=>{res.setHeader('Content-Type','text/html');res.end(html);});await new Promise(r=>server.listen(0,'127.0.0.1',r));\nconst base='http://127.0.0.1:'+server.address().port;\nconst common=['--enable-unsafe-webgpu','--enable-unsafe-swiftshader'];\nconst cases=[\n ['155-original','/usr/bin/chromium',[...common,'--use-angle=vulkan','--use-vulkan=swiftshader','--use-webgpu-adapter=swiftshader','--enable-features=Vulkan','--disable-vulkan-surface']],\n ['155-surface','/usr/bin/chromium',[...common,'--use-angle=vulkan','--use-vulkan=swiftshader','--use-webgpu-adapter=swiftshader','--enable-features=Vulkan']],\n ['141-surface','/tmp/dw-browser-test/chrome-linux/headless_shell',[...common,'--use-angle=vulkan','--use-vulkan=swiftshader','--use-webgpu-adapter=swiftshader','--enable-features=Vulkan']],\n ['141-original','/tmp/dw-browser-test/chrome-linux/headless_shell',[...common,'--use-angle=vulkan','--use-vulkan=swiftshader','--use-webgpu-adapter=swiftshader','--enable-features=Vulkan','--disable-vulkan-surface']],\n];\nconst results=[];\ntry{for(const [name,executablePath,args] of cases){const browser=await chromium.launch({executablePath,args});try{const page=await browser.newPage({viewport:{width:300,height:150}});await page.goto(base);await page.waitForFunction(()=>window.result,{timeout:10000});const ready=await page.evaluate(()=>window.result);await page.evaluate(()=>new Promise(r=>requestAnimationFrame(()=>requestAnimationFrame(r))));const bytes=await page.screenshot(),png=decode(bytes);const pixel=x=>[...Array.from(png.data.slice((64*png.width+x)*png.channels,(64*png.width+x)*png.channels+3)),png.channels===4?png.data[(64*png.width+x)*png.channels+3]:255];const result={name,browser:browser.version(),args,ready,main:pixel(64),worker:pixel(192)};results.push(result);console.log(JSON.stringify(result));writeFileSync('/tmp/dw-'+name+'.png',bytes);}catch(error){results.push({name,error:String(error)});console.log(name,String(error));}finally{await browser.close();}}}finally{server.close();writeFileSync('/tmp/dw-compositor-results.json',JSON.stringify(results,null,2));}\n"
680}
681