{ "task": "PKG-JASSUB-09", "status": "doing", "baselineCommit": "319dccb60593f6206418dc04b27b1170767fa716", "productionChanges": false, "node": "24.21.0", "yarn": "1.22.22", "runs": [ { "path": "refactor/.cache/jassub-single-flight.json", "sha256": "5f55a8abd7d53a49f1bdd6019bc8a59b4d0f721d30e4204e6d07f8732bfad276", "log": { "path": "refactor/.cache/jassub-single-flight.log", "sha256": "028327e1e48786520947c52e3dbbfd6ce4d31452d938140567217018b818f0d1" }, "resultsArchive": "refactor/.cache/jassub-single-flight-results", "sourceRevision": "Initial bounded queue and worker heartbeat; no call-return or sample timings", "stats": { "startTime": "2026-09-15T10:15:50.021Z", "duration": 20555.049, "expected": 2, "skipped": 0, "unexpected": 1, "flaky": 0 }, "cases": [ { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "firefox", "status": "passed", "duration": 1840, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 90 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 91 }, { "stage": "drawn", "id": 1, "time": 0, "at": 91 }, { "stage": "bitmap-start", "id": 2, "time": 0.040336, "at": 149 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040336, "at": 149 }, { "stage": "drawn", "id": 2, "time": 0.040336, "at": 150 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 415 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 416 }, { "stage": "drawn", "id": 3, "time": 10, "at": 446 }, { "stage": "bitmap-start", "id": 4, "time": 10.04052, "at": 483 }, { "stage": "bitmap-ready", "id": 4, "time": 10.04052, "at": 485 }, { "stage": "drawn", "id": 4, "time": 10.04052, "at": 487 }, { "stage": "bitmap-start", "id": 5, "time": 10.081124, "at": 516 }, { "stage": "bitmap-ready", "id": 5, "time": 10.081124, "at": 520 }, { "stage": "drawn", "id": 5, "time": 10.081124, "at": 522 }, { "stage": "bitmap-start", "id": 6, "time": 10.122386, "at": 566 }, { "stage": "bitmap-ready", "id": 6, "time": 10.122386, "at": 568 }, { "stage": "drawn", "id": 6, "time": 10.122386, "at": 569 }, { "stage": "bitmap-start", "id": 7, "time": 10.162489, "at": 600 }, { "stage": "bitmap-ready", "id": 7, "time": 10.162489, "at": 602 }, { "stage": "drawn", "id": 7, "time": 10.162489, "at": 603 }, { "stage": "bitmap-start", "id": 8, "time": 10.202764, "at": 633 }, { "stage": "bitmap-ready", "id": 8, "time": 10.202764, "at": 635 }, { "stage": "drawn", "id": 8, "time": 10.202764, "at": 637 }, { "stage": "bitmap-start", "id": 9, "time": 10.243189, "at": 683 }, { "stage": "bitmap-ready", "id": 9, "time": 10.243189, "at": 685 }, { "stage": "drawn", "id": 9, "time": 10.243189, "at": 687 } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.243189, "frames": 10, "sent": 9, "received": 9, "skipped": 1, "maxOutstanding": 1, "quality": 6 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "firefox", "status": "failed", "duration": 11394, "errors": [ { "location": { "file": "D:\\github\\ArtPlayer\\test\\browser\\jassub-platform.spec.js", "column": 107, "line": 147 }, "message": "Error: Timeout 7000ms exceeded while waiting on the predicate\n\n 145 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).width).toBeGreaterThan(before.width)\n 146 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).time).toBeGreaterThan(10.2)\n> 147 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).pixel).toEqual([0, 0, 255, 255])\n | ^\n 148 | }\n 149 | finally {\n 150 | const evidence = await page.evaluate(() => {\n at D:\\github\\ArtPlayer\\test\\browser\\jassub-platform.spec.js:147:107" } ], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "published", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 31 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 31 }, { "stage": "drawn", "id": 1, "time": 0, "at": 33 }, { "stage": "bitmap-start", "id": 2, "time": 0.040342, "at": 92 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040342, "at": 93 }, { "stage": "drawn", "id": 2, "time": 0.040342, "at": 94 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 358 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 359 }, { "stage": "drawn", "id": 3, "time": 10, "at": 394 }, { "stage": "bitmap-start", "id": 4, "time": 10.000019, "at": 413 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000019, "at": 415 }, { "stage": "drawn", "id": 4, "time": 10.000019, "at": 417 }, { "stage": "bitmap-start", "id": 5, "time": 10.081001, "at": 467 }, { "stage": "bitmap-ready", "id": 5, "time": 10.081001, "at": 469 }, { "stage": "drawn", "id": 5, "time": 10.081001, "at": 471 }, { "stage": "bitmap-start", "id": 6, "time": 10.121499, "at": 496 }, { "stage": "bitmap-ready", "id": 6, "time": 10.121499, "at": 498 }, { "stage": "drawn", "id": 6, "time": 10.121499, "at": 500 }, { "stage": "bitmap-start", "id": 7, "time": 10.162048, "at": 549 }, { "stage": "bitmap-ready", "id": 7, "time": 10.162048, "at": 551 }, { "stage": "drawn", "id": 7, "time": 10.162048, "at": 552 }, { "stage": "bitmap-start", "id": 8, "time": 10.202281, "at": 580 }, { "stage": "bitmap-ready", "id": 8, "time": 10.202281, "at": 582 }, { "stage": "drawn", "id": 8, "time": 10.202281, "at": 584 }, { "stage": "bitmap-start", "id": 9, "time": 10.243053, "at": 631 }, { "stage": "bitmap-ready", "id": 9, "time": 10.243053, "at": 634 }, { "stage": "drawn", "id": 9, "time": 10.243053, "at": 636 }, { "stage": "bitmap-start", "id": 10, "time": 10.283132, "at": 663 }, { "stage": "bitmap-ready", "id": 10, "time": 10.283132, "at": 666 }, { "stage": "drawn", "id": 10, "time": 10.283132, "at": 666 }, { "stage": "bitmap-start", "id": 11, "time": 10.323727, "at": 696 }, { "stage": "pending", "ids": [ 11 ], "at": 10716 }, { "stage": "bitmap-ready", "id": 11, "time": 10.323727, "at": 10716 } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 0, 0 ], "width": 1280, "height": 720, "time": 20.349107, "frames": 12, "sent": 11, "received": 10, "skipped": 1, "maxOutstanding": 1, "quality": 258 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "firefox", "status": "passed", "duration": 1971, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 204 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 205 }, { "stage": "drawn", "id": 1, "time": 0, "at": 205 }, { "stage": "bitmap-start", "id": 2, "time": 0.046516, "at": 267 }, { "stage": "bitmap-ready", "id": 2, "time": 0.046516, "at": 267 }, { "stage": "drawn", "id": 2, "time": 0.046516, "at": 267 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 646 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 647 }, { "stage": "drawn", "id": 3, "time": 10, "at": 647 }, { "stage": "bitmap-start", "id": 4, "time": 10.00002, "at": 668 }, { "stage": "bitmap-ready", "id": 4, "time": 10.00002, "at": 668 }, { "stage": "drawn", "id": 4, "time": 10.00002, "at": 669 }, { "stage": "bitmap-start", "id": 5, "time": 10.040478, "at": 710 }, { "stage": "bitmap-ready", "id": 5, "time": 10.040478, "at": 712 }, { "stage": "drawn", "id": 5, "time": 10.040478, "at": 716 }, { "stage": "bitmap-start", "id": 6, "time": 10.08099, "at": 752 }, { "stage": "bitmap-ready", "id": 6, "time": 10.08099, "at": 754 }, { "stage": "drawn", "id": 6, "time": 10.08099, "at": 757 }, { "stage": "bitmap-start", "id": 7, "time": 10.121186, "at": 791 }, { "stage": "bitmap-ready", "id": 7, "time": 10.121186, "at": 793 }, { "stage": "drawn", "id": 7, "time": 10.121186, "at": 795 }, { "stage": "bitmap-start", "id": 8, "time": 10.161497, "at": 831 }, { "stage": "bitmap-ready", "id": 8, "time": 10.161497, "at": 834 }, { "stage": "drawn", "id": 8, "time": 10.161497, "at": 836 }, { "stage": "bitmap-start", "id": 9, "time": 10.201796, "at": 871 }, { "stage": "bitmap-ready", "id": 9, "time": 10.201796, "at": 874 }, { "stage": "drawn", "id": 9, "time": 10.201796, "at": 876 }, { "stage": "bitmap-start", "id": 10, "time": 10.242348, "at": 913 }, { "stage": "bitmap-ready", "id": 10, "time": 10.242348, "at": 915 }, { "stage": "drawn", "id": 10, "time": 10.242348, "at": 919 } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.242348, "frames": 10, "sent": 10, "received": 10, "skipped": 0, "maxOutstanding": 1, "quality": 6 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } } ] }, { "path": "refactor/.cache/jassub-bitmap-boundary.json", "sha256": "e2999e31f565b259895955d58d1c87e0d5481fe03647d418c947f24982d7acdd", "log": { "path": "refactor/.cache/jassub-bitmap-boundary.log", "sha256": "d7d5713061ca22866be52abe23e161bc6e9f12ec27630ec20331181cf1a47dda" }, "resultsArchive": "refactor/.cache/jassub-bitmap-boundary-results", "sourceRevision": "Call-expression return and sample timings; ImageData construction still inside timed expression; no latency assertion", "stats": { "startTime": "2026-09-15T10:17:02.953Z", "duration": 30377.481, "expected": 2, "skipped": 0, "unexpected": 1, "flaky": 0 }, "cases": [ { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "firefox", "status": "passed", "duration": 1961, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 2, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 86 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 86 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 86 }, { "stage": "drawn", "id": 1, "time": 0, "at": 87 }, { "stage": "bitmap-start", "id": 2, "time": 0.040588, "at": 142 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040588, "at": 143 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040588, "at": 143 }, { "stage": "drawn", "id": 2, "time": 0.040588, "at": 143 }, { "stage": "bitmap-start", "id": 3, "time": 0.080581, "at": 191 }, { "stage": "bitmap-returned", "id": 3, "time": 0.080581, "at": 192 }, { "stage": "bitmap-ready", "id": 3, "time": 0.080581, "at": 192 }, { "stage": "drawn", "id": 3, "time": 0.080581, "at": 192 }, { "stage": "bitmap-start", "id": 4, "time": 10.000023, "at": 491 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000023, "at": 492 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000023, "at": 492 }, { "stage": "drawn", "id": 4, "time": 10.000023, "at": 492 }, { "stage": "bitmap-start", "id": 5, "time": 10.044549, "at": 542 }, { "stage": "bitmap-returned", "id": 5, "time": 10.044549, "at": 543 }, { "stage": "bitmap-ready", "id": 5, "time": 10.044549, "at": 543 }, { "stage": "drawn", "id": 5, "time": 10.044549, "at": 543 }, { "stage": "bitmap-start", "id": 6, "time": 10.084796, "at": 575 }, { "stage": "bitmap-returned", "id": 6, "time": 10.084796, "at": 575 }, { "stage": "bitmap-ready", "id": 6, "time": 10.084796, "at": 575 }, { "stage": "drawn", "id": 6, "time": 10.084796, "at": 576 }, { "stage": "bitmap-start", "id": 7, "time": 10.124967, "at": 616 }, { "stage": "bitmap-returned", "id": 7, "time": 10.124967, "at": 618 }, { "stage": "bitmap-ready", "id": 7, "time": 10.124967, "at": 618 }, { "stage": "drawn", "id": 7, "time": 10.124967, "at": 620 }, { "stage": "bitmap-start", "id": 8, "time": 10.165033, "at": 664 }, { "stage": "bitmap-returned", "id": 8, "time": 10.165033, "at": 666 }, { "stage": "bitmap-ready", "id": 8, "time": 10.165033, "at": 668 }, { "stage": "drawn", "id": 8, "time": 10.165033, "at": 670 }, { "stage": "bitmap-start", "id": 9, "time": 10.205584, "at": 693 }, { "stage": "bitmap-returned", "id": 9, "time": 10.205584, "at": 694 }, { "stage": "bitmap-ready", "id": 9, "time": 10.205584, "at": 695 }, { "stage": "drawn", "id": 9, "time": 10.205584, "at": 697 }, { "stage": "bitmap-start", "id": 10, "time": 10.246224, "at": 749 }, { "stage": "bitmap-returned", "id": 10, "time": 10.246224, "at": 750 }, { "stage": "bitmap-ready", "id": 10, "time": 10.246224, "at": 751 }, { "stage": "drawn", "id": 10, "time": 10.246224, "at": 752 }, { "stage": "bitmap-start", "id": 11, "time": 10.28641, "at": 778 } ], "samples": [ { "start": 434, "sent": 1, "received": 1, "drawn": 435, "read": 435, "pixel": [ 255, 0, 0, 255 ] }, { "start": 486, "sent": 2, "received": 2, "drawn": 487, "read": 487, "pixel": [ 255, 0, 0, 255 ] }, { "start": 791, "sent": 3, "received": 3, "drawn": 792, "read": 792, "pixel": [ 255, 0, 0, 255 ] }, { "start": 910, "sent": 6, "received": 6, "drawn": 910, "read": 910, "pixel": [ 0, 0, 255, 255 ] }, { "start": 933, "sent": 7, "received": 6, "drawn": 936, "read": 936, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1063, "sent": 10, "received": 9, "drawn": 1067, "read": 1068, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1076, "sent": 10, "received": 10, "drawn": 1078, "read": 1078, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1083, "sent": 10, "received": 10, "drawn": 1085, "read": 1085, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.28641, "frames": 11, "sent": 11, "received": 10, "skipped": 0, "maxOutstanding": 1, "quality": 8 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "firefox", "status": "failed", "duration": 11351, "errors": [ { "location": { "file": "D:\\github\\ArtPlayer\\test\\browser\\jassub-platform.spec.js", "column": 106, "line": 154 }, "message": "Error: Timeout 7000ms exceeded while waiting on the predicate\n\n 152 | }, host)\n 153 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).width).toBeGreaterThan(before.width)\n> 154 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).time).toBeGreaterThan(10.2)\n | ^\n 155 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).pixel).toEqual([0, 0, 255, 255])\n 156 | }\n 157 | finally {\n at D:\\github\\ArtPlayer\\test\\browser\\jassub-platform.spec.js:154:106" } ], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 10013, "slowCalls": [ { "id": 9, "milliseconds": 10013 } ], "slowSamples": [ { "start": 706, "sent": 9, "received": 8, "drawn": 10712, "read": 10712, "pixel": [ 0, 0, 0, 0 ] } ], "control": { "host": "published", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 34 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 35 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 35 }, { "stage": "drawn", "id": 1, "time": 0, "at": 36 }, { "stage": "bitmap-start", "id": 2, "time": 0.040281, "at": 88 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040281, "at": 88 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040281, "at": 88 }, { "stage": "drawn", "id": 2, "time": 0.040281, "at": 89 }, { "stage": "bitmap-start", "id": 3, "time": 10.000041, "at": 387 }, { "stage": "bitmap-returned", "id": 3, "time": 10.000041, "at": 388 }, { "stage": "bitmap-ready", "id": 3, "time": 10.000041, "at": 388 }, { "stage": "drawn", "id": 3, "time": 10.000041, "at": 418 }, { "stage": "bitmap-start", "id": 4, "time": 10.041817, "at": 438 }, { "stage": "bitmap-returned", "id": 4, "time": 10.041817, "at": 439 }, { "stage": "bitmap-ready", "id": 4, "time": 10.041817, "at": 439 }, { "stage": "drawn", "id": 4, "time": 10.041817, "at": 439 }, { "stage": "bitmap-start", "id": 5, "time": 10.082226, "at": 472 }, { "stage": "bitmap-returned", "id": 5, "time": 10.082226, "at": 473 }, { "stage": "bitmap-ready", "id": 5, "time": 10.082226, "at": 473 }, { "stage": "drawn", "id": 5, "time": 10.082226, "at": 474 }, { "stage": "bitmap-start", "id": 6, "time": 10.122645, "at": 525 }, { "stage": "bitmap-returned", "id": 6, "time": 10.122645, "at": 526 }, { "stage": "pending", "ids": [ 6 ], "at": 526 }, { "stage": "bitmap-ready", "id": 6, "time": 10.122645, "at": 526 }, { "stage": "drawn", "id": 6, "time": 10.122645, "at": 529 }, { "stage": "bitmap-start", "id": 7, "time": 10.163209, "at": 560 }, { "stage": "bitmap-returned", "id": 7, "time": 10.163209, "at": 562 }, { "stage": "bitmap-ready", "id": 7, "time": 10.163209, "at": 563 }, { "stage": "drawn", "id": 7, "time": 10.163209, "at": 566 }, { "stage": "bitmap-start", "id": 8, "time": 10.203777, "at": 610 }, { "stage": "bitmap-returned", "id": 8, "time": 10.203777, "at": 611 }, { "stage": "bitmap-ready", "id": 8, "time": 10.203777, "at": 612 }, { "stage": "drawn", "id": 8, "time": 10.203777, "at": 614 }, { "stage": "bitmap-start", "id": 9, "time": 10.244097, "at": 640 }, { "stage": "bitmap-returned", "id": 9, "time": 10.244097, "at": 10653 }, { "stage": "pending", "ids": [ 9 ], "at": 10654 }, { "stage": "bitmap-ready", "id": 9, "time": 10.244097, "at": 10654 }, { "stage": "drawn", "id": 9, "time": 10.244097, "at": 10657 } ], "samples": [ { "start": 172, "sent": 2, "received": 2, "drawn": 174, "read": 174, "pixel": [ 255, 0, 0, 255 ] }, { "start": 181, "sent": 2, "received": 2, "drawn": 181, "read": 181, "pixel": [ 255, 0, 0, 255 ] }, { "start": 448, "sent": 2, "received": 2, "drawn": 449, "read": 449, "pixel": [ 255, 0, 0, 255 ] }, { "start": 561, "sent": 5, "received": 5, "drawn": 562, "read": 562, "pixel": [ 0, 0, 255, 255 ] }, { "start": 581, "sent": 5, "received": 5, "drawn": 583, "read": 583, "pixel": [ 0, 0, 255, 255 ] }, { "start": 694, "sent": 8, "received": 8, "drawn": 697, "read": 697, "pixel": [ 0, 0, 255, 255 ] }, { "start": 706, "sent": 9, "received": 8, "drawn": 10712, "read": 10712, "pixel": [ 0, 0, 0, 0 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 0, 0 ], "width": 1280, "height": 720, "time": 20.263101, "frames": 10, "sent": 10, "received": 9, "skipped": 0, "maxOutstanding": 1, "quality": 256 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "firefox", "status": "passed", "duration": 11857, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 10005, "slowCalls": [ { "id": 2, "milliseconds": 10005 } ], "slowSamples": [ { "start": 422, "sent": 2, "received": 1, "drawn": 10425, "read": 10425, "pixel": [ 0, 0, 0, 0 ] } ], "control": { "host": "native", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 154 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 155 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 155 }, { "stage": "drawn", "id": 1, "time": 0, "at": 156 }, { "stage": "bitmap-start", "id": 2, "time": 0.044607, "at": 214 }, { "stage": "bitmap-returned", "id": 2, "time": 0.044607, "at": 10219 }, { "stage": "pending", "ids": [ 2 ], "at": 10221 }, { "stage": "bitmap-ready", "id": 2, "time": 0.044607, "at": 10221 }, { "stage": "drawn", "id": 2, "time": 0.044607, "at": 10222 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 10496 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 10496 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 10496 }, { "stage": "drawn", "id": 3, "time": 10, "at": 10497 }, { "stage": "bitmap-start", "id": 4, "time": 10.00002, "at": 10508 }, { "stage": "bitmap-returned", "id": 4, "time": 10.00002, "at": 10508 }, { "stage": "bitmap-ready", "id": 4, "time": 10.00002, "at": 10508 }, { "stage": "drawn", "id": 4, "time": 10.00002, "at": 10508 }, { "stage": "bitmap-start", "id": 5, "time": 10.040276, "at": 10550 }, { "stage": "bitmap-returned", "id": 5, "time": 10.040276, "at": 10552 }, { "stage": "bitmap-ready", "id": 5, "time": 10.040276, "at": 10552 }, { "stage": "drawn", "id": 5, "time": 10.040276, "at": 10556 }, { "stage": "bitmap-start", "id": 6, "time": 10.080722, "at": 10590 }, { "stage": "bitmap-returned", "id": 6, "time": 10.080722, "at": 10592 }, { "stage": "bitmap-ready", "id": 6, "time": 10.080722, "at": 10592 }, { "stage": "drawn", "id": 6, "time": 10.080722, "at": 10594 }, { "stage": "bitmap-start", "id": 7, "time": 10.121554, "at": 10633 }, { "stage": "bitmap-returned", "id": 7, "time": 10.121554, "at": 10635 }, { "stage": "bitmap-ready", "id": 7, "time": 10.121554, "at": 10635 }, { "stage": "drawn", "id": 7, "time": 10.121554, "at": 10638 }, { "stage": "bitmap-start", "id": 8, "time": 10.161691, "at": 10672 }, { "stage": "bitmap-returned", "id": 8, "time": 10.161691, "at": 10673 }, { "stage": "bitmap-ready", "id": 8, "time": 10.161691, "at": 10674 }, { "stage": "drawn", "id": 8, "time": 10.161691, "at": 10675 }, { "stage": "bitmap-start", "id": 9, "time": 10.202183, "at": 10718 }, { "stage": "bitmap-returned", "id": 9, "time": 10.202183, "at": 10720 }, { "stage": "bitmap-ready", "id": 9, "time": 10.202183, "at": 10721 }, { "stage": "drawn", "id": 9, "time": 10.202183, "at": 10722 }, { "stage": "bitmap-start", "id": 10, "time": 10.242573, "at": 10758 }, { "stage": "bitmap-returned", "id": 10, "time": 10.242573, "at": 10762 }, { "stage": "bitmap-ready", "id": 10, "time": 10.242573, "at": 10762 }, { "stage": "drawn", "id": 10, "time": 10.242573, "at": 10763 } ], "samples": [ { "start": 406, "sent": 1, "received": 1, "drawn": 407, "read": 407, "pixel": [ 255, 0, 0, 255 ] }, { "start": 422, "sent": 2, "received": 1, "drawn": 10425, "read": 10425, "pixel": [ 0, 0, 0, 0 ] }, { "start": 10712, "sent": 3, "received": 3, "drawn": 10712, "read": 10712, "pixel": [ 0, 0, 255, 255 ] }, { "start": 10733, "sent": 4, "received": 4, "drawn": 10734, "read": 10734, "pixel": [ 0, 0, 255, 255 ] }, { "start": 10848, "sent": 7, "received": 6, "drawn": 10850, "read": 10850, "pixel": [ 0, 0, 255, 255 ] }, { "start": 10855, "sent": 7, "received": 7, "drawn": 10856, "read": 10857, "pixel": [ 0, 0, 255, 255 ] }, { "start": 10972, "sent": 10, "received": 9, "drawn": 10975, "read": 10975, "pixel": [ 0, 0, 255, 255 ] }, { "start": 10985, "sent": 10, "received": 10, "drawn": 10986, "read": 10986, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.242573, "frames": 11, "sent": 10, "received": 10, "skipped": 1, "maxOutstanding": 1, "quality": 256 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } } ] }, { "path": "refactor/.cache/jassub-native-call.json", "sha256": "32a315730da2a41df96167fa9407b332e52e6d4df5349085efd0352ccf154a11", "log": { "path": "refactor/.cache/jassub-native-call.log", "sha256": "689fa3afd36441f3108061617c8ce5633cb2db588d0e53076792abe4f60a1f76" }, "resultsArchive": "refactor/.cache/jassub-native-call-results", "sourceRevision": "ImageData constructed before timed native call; sample copyStart; latency assertion then covered pre-layout only", "stats": { "startTime": "2026-09-15T10:18:24.989Z", "duration": 19885.343999999997, "expected": 2, "skipped": 0, "unexpected": 1, "flaky": 0 }, "cases": [ { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "firefox", "status": "passed", "duration": 1891, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 7, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 91 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 91 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 92 }, { "stage": "drawn", "id": 1, "time": 0, "at": 92 }, { "stage": "bitmap-start", "id": 2, "time": 0.040343, "at": 148 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040343, "at": 150 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040343, "at": 150 }, { "stage": "drawn", "id": 2, "time": 0.040343, "at": 150 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 415 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 416 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 416 }, { "stage": "drawn", "id": 3, "time": 10, "at": 448 }, { "stage": "bitmap-start", "id": 4, "time": 10.000023, "at": 463 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000023, "at": 470 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000023, "at": 470 }, { "stage": "drawn", "id": 4, "time": 10.000023, "at": 470 }, { "stage": "bitmap-start", "id": 5, "time": 10.08096, "at": 515 }, { "stage": "bitmap-returned", "id": 5, "time": 10.08096, "at": 517 }, { "stage": "bitmap-ready", "id": 5, "time": 10.08096, "at": 517 }, { "stage": "drawn", "id": 5, "time": 10.08096, "at": 519 }, { "stage": "bitmap-start", "id": 6, "time": 10.123904, "at": 571 }, { "stage": "bitmap-returned", "id": 6, "time": 10.123904, "at": 574 }, { "stage": "bitmap-ready", "id": 6, "time": 10.123904, "at": 576 }, { "stage": "drawn", "id": 6, "time": 10.123904, "at": 578 }, { "stage": "bitmap-start", "id": 7, "time": 10.164359, "at": 601 }, { "stage": "bitmap-returned", "id": 7, "time": 10.164359, "at": 603 }, { "stage": "bitmap-ready", "id": 7, "time": 10.164359, "at": 603 }, { "stage": "drawn", "id": 7, "time": 10.164359, "at": 604 }, { "stage": "bitmap-start", "id": 8, "time": 10.204811, "at": 650 }, { "stage": "bitmap-returned", "id": 8, "time": 10.204811, "at": 651 }, { "stage": "bitmap-ready", "id": 8, "time": 10.204811, "at": 651 }, { "stage": "drawn", "id": 8, "time": 10.204811, "at": 653 }, { "stage": "bitmap-start", "id": 9, "time": 10.245086, "at": 686 }, { "stage": "bitmap-returned", "id": 9, "time": 10.245086, "at": 688 }, { "stage": "bitmap-ready", "id": 9, "time": 10.245086, "at": 688 }, { "stage": "drawn", "id": 9, "time": 10.245086, "at": 689 }, { "stage": "bitmap-start", "id": 10, "time": 10.285387, "at": 716 }, { "stage": "bitmap-returned", "id": 10, "time": 10.285387, "at": 718 }, { "stage": "bitmap-ready", "id": 10, "time": 10.285387, "at": 718 }, { "stage": "drawn", "id": 10, "time": 10.285387, "at": 720 } ], "samples": [ { "start": 434, "sent": 1, "received": 1, "copyStart": 434, "drawn": 436, "read": 436, "pixel": [ 255, 0, 0, 255 ] }, { "start": 449, "sent": 1, "received": 1, "copyStart": 449, "drawn": 449, "read": 449, "pixel": [ 255, 0, 0, 255 ] }, { "start": 759, "sent": 3, "received": 2, "copyStart": 759, "drawn": 760, "read": 760, "pixel": [ 0, 0, 255, 255 ] }, { "start": 786, "sent": 4, "received": 4, "copyStart": 786, "drawn": 786, "read": 786, "pixel": [ 0, 0, 255, 255 ] }, { "start": 896, "sent": 6, "received": 6, "copyStart": 896, "drawn": 899, "read": 899, "pixel": [ 0, 0, 255, 255 ] }, { "start": 905, "sent": 6, "received": 6, "copyStart": 905, "drawn": 906, "read": 906, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1021, "sent": 9, "received": 9, "copyStart": 1021, "drawn": 1023, "read": 1023, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1032, "sent": 10, "received": 9, "copyStart": 1032, "drawn": 1034, "read": 1034, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.285387, "frames": 10, "sent": 10, "received": 10, "skipped": 0, "maxOutstanding": 1, "quality": 7 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "firefox", "status": "failed", "duration": 11294, "errors": [ { "location": { "file": "D:\\github\\ArtPlayer\\test\\browser\\jassub-platform.spec.js", "column": 106, "line": 161 }, "message": "Error: Timeout 7000ms exceeded while waiting on the predicate\n\n 159 | }, host)\n 160 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).width).toBeGreaterThan(before.width)\n> 161 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).time).toBeGreaterThan(10.2)\n | ^\n 162 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).pixel).toEqual([0, 0, 255, 255])\n 163 | }\n 164 | finally {\n at D:\\github\\ArtPlayer\\test\\browser\\jassub-platform.spec.js:161:106" } ], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 10010, "slowCalls": [ { "id": 7, "milliseconds": 10010 } ], "slowSamples": [ { "start": 607, "sent": 7, "received": 6, "copyStart": 607, "drawn": 10611, "read": 10611, "pixel": [ 0, 0, 0, 0 ] } ], "control": { "host": "published", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 30 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 31 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 31 }, { "stage": "drawn", "id": 1, "time": 0, "at": 31 }, { "stage": "bitmap-start", "id": 2, "time": 0.044498, "at": 101 }, { "stage": "bitmap-returned", "id": 2, "time": 0.044498, "at": 102 }, { "stage": "bitmap-ready", "id": 2, "time": 0.044498, "at": 102 }, { "stage": "drawn", "id": 2, "time": 0.044498, "at": 103 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 350 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 350 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 350 }, { "stage": "drawn", "id": 3, "time": 10, "at": 383 }, { "stage": "bitmap-start", "id": 4, "time": 10.00002, "at": 399 }, { "stage": "bitmap-returned", "id": 4, "time": 10.00002, "at": 400 }, { "stage": "bitmap-ready", "id": 4, "time": 10.00002, "at": 400 }, { "stage": "drawn", "id": 4, "time": 10.00002, "at": 400 }, { "stage": "bitmap-start", "id": 5, "time": 10.08124, "at": 452 }, { "stage": "bitmap-returned", "id": 5, "time": 10.08124, "at": 453 }, { "stage": "bitmap-ready", "id": 5, "time": 10.08124, "at": 453 }, { "stage": "drawn", "id": 5, "time": 10.08124, "at": 456 }, { "stage": "bitmap-start", "id": 6, "time": 10.121462, "at": 485 }, { "stage": "bitmap-returned", "id": 6, "time": 10.121462, "at": 488 }, { "stage": "bitmap-ready", "id": 6, "time": 10.121462, "at": 489 }, { "stage": "drawn", "id": 6, "time": 10.121462, "at": 491 }, { "stage": "bitmap-start", "id": 7, "time": 10.161916, "at": 536 }, { "stage": "bitmap-returned", "id": 7, "time": 10.161916, "at": 10546 }, { "stage": "pending", "ids": [ 7 ], "at": 10548 }, { "stage": "bitmap-ready", "id": 7, "time": 10.161916, "at": 10548 }, { "stage": "drawn", "id": 7, "time": 10.161916, "at": 10554 } ], "samples": [ { "start": 162, "sent": 1, "received": 1, "copyStart": 162, "drawn": 162, "read": 162, "pixel": [ 255, 0, 0, 255 ] }, { "start": 168, "sent": 1, "received": 1, "copyStart": 168, "drawn": 168, "read": 168, "pixel": [ 255, 0, 0, 255 ] }, { "start": 455, "sent": 3, "received": 2, "copyStart": 455, "drawn": 456, "read": 456, "pixel": [ 0, 0, 255, 255 ] }, { "start": 484, "sent": 4, "received": 4, "copyStart": 484, "drawn": 485, "read": 485, "pixel": [ 0, 0, 255, 255 ] }, { "start": 596, "sent": 6, "received": 6, "copyStart": 597, "drawn": 600, "read": 600, "pixel": [ 0, 0, 255, 255 ] }, { "start": 607, "sent": 7, "received": 6, "copyStart": 607, "drawn": 10611, "read": 10611, "pixel": [ 0, 0, 0, 0 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 0, 0 ], "width": 1280, "height": 720, "time": 20.043525, "frames": 8, "sent": 8, "received": 7, "skipped": 0, "maxOutstanding": 1, "quality": 251 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "firefox", "status": "passed", "duration": 1720, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 4, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 161 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 162 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 162 }, { "stage": "drawn", "id": 1, "time": 0, "at": 163 }, { "stage": "bitmap-start", "id": 2, "time": 0.040342, "at": 215 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040342, "at": 215 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040342, "at": 215 }, { "stage": "drawn", "id": 2, "time": 0.040342, "at": 216 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 476 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 478 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 478 }, { "stage": "drawn", "id": 3, "time": 10, "at": 478 }, { "stage": "bitmap-start", "id": 4, "time": 10.000019, "at": 502 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000019, "at": 503 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000019, "at": 503 }, { "stage": "drawn", "id": 4, "time": 10.000019, "at": 504 }, { "stage": "bitmap-start", "id": 5, "time": 10.040605, "at": 537 }, { "stage": "bitmap-returned", "id": 5, "time": 10.040605, "at": 538 }, { "stage": "bitmap-ready", "id": 5, "time": 10.040605, "at": 538 }, { "stage": "drawn", "id": 5, "time": 10.040605, "at": 541 }, { "stage": "bitmap-start", "id": 6, "time": 10.080921, "at": 587 }, { "stage": "bitmap-returned", "id": 6, "time": 10.080921, "at": 589 }, { "stage": "bitmap-ready", "id": 6, "time": 10.080921, "at": 589 }, { "stage": "drawn", "id": 6, "time": 10.080921, "at": 591 }, { "stage": "bitmap-start", "id": 7, "time": 10.121767, "at": 614 }, { "stage": "bitmap-returned", "id": 7, "time": 10.121767, "at": 616 }, { "stage": "bitmap-ready", "id": 7, "time": 10.121767, "at": 616 }, { "stage": "drawn", "id": 7, "time": 10.121767, "at": 618 }, { "stage": "bitmap-start", "id": 8, "time": 10.161878, "at": 655 }, { "stage": "bitmap-returned", "id": 8, "time": 10.161878, "at": 656 }, { "stage": "bitmap-ready", "id": 8, "time": 10.161878, "at": 656 }, { "stage": "drawn", "id": 8, "time": 10.161878, "at": 657 }, { "stage": "bitmap-start", "id": 9, "time": 10.202049, "at": 695 }, { "stage": "bitmap-returned", "id": 9, "time": 10.202049, "at": 697 }, { "stage": "bitmap-ready", "id": 9, "time": 10.202049, "at": 697 }, { "stage": "drawn", "id": 9, "time": 10.202049, "at": 698 }, { "stage": "bitmap-start", "id": 10, "time": 10.242519, "at": 738 }, { "stage": "bitmap-returned", "id": 10, "time": 10.242519, "at": 742 }, { "stage": "bitmap-ready", "id": 10, "time": 10.242519, "at": 742 }, { "stage": "drawn", "id": 10, "time": 10.242519, "at": 744 } ], "samples": [ { "start": 366, "sent": 1, "received": 1, "copyStart": 367, "drawn": 368, "read": 368, "pixel": [ 255, 0, 0, 255 ] }, { "start": 383, "sent": 1, "received": 1, "copyStart": 383, "drawn": 383, "read": 383, "pixel": [ 255, 0, 0, 255 ] }, { "start": 659, "sent": 3, "received": 3, "copyStart": 659, "drawn": 660, "read": 660, "pixel": [ 0, 0, 255, 255 ] }, { "start": 685, "sent": 4, "received": 4, "copyStart": 685, "drawn": 686, "read": 686, "pixel": [ 0, 0, 255, 255 ] }, { "start": 796, "sent": 7, "received": 7, "copyStart": 796, "drawn": 800, "read": 800, "pixel": [ 0, 0, 255, 255 ] }, { "start": 804, "sent": 7, "received": 7, "copyStart": 804, "drawn": 805, "read": 805, "pixel": [ 0, 0, 255, 255 ] }, { "start": 919, "sent": 10, "received": 9, "copyStart": 919, "drawn": 921, "read": 921, "pixel": [ 0, 0, 255, 255 ] }, { "start": 926, "sent": 10, "received": 10, "copyStart": 926, "drawn": 928, "read": 928, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.242519, "frames": 10, "sent": 10, "received": 10, "skipped": 0, "maxOutstanding": 1, "quality": 6 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } } ] }, { "path": "refactor/.cache/jassub-native-call-final.json", "sha256": "459883d27e9ee6503b74b4d51db93642bb7203d5e06924d8a1404c203677d409", "log": { "path": "refactor/.cache/jassub-native-call-final.log", "sha256": "9dd0fbcf9eb5fce557d141a80b4c91943e41bb93785e11cedc86cf0673153e34" }, "resultsArchive": "refactor/.cache/jassub-native-call-final-results", "sourceRevision": "final source in this checkpoint", "stats": { "startTime": "2026-09-15T10:19:40.447Z", "duration": 28853.963, "expected": 8, "skipped": 0, "unexpected": 1, "flaky": 0 }, "cases": [ { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "chromium", "status": "passed", "duration": 756, "errors": [], "browser": "153.0.8010.12", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 1.9000000357627869, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0.001182, "at": 170.30000001192093 }, { "stage": "bitmap-returned", "id": 1, "time": 0.001182, "at": 170.9000000357628 }, { "stage": "bitmap-ready", "id": 1, "time": 0.001182, "at": 171 }, { "stage": "drawn", "id": 1, "time": 0.001182, "at": 172.5 }, { "stage": "bitmap-start", "id": 2, "time": 10.007995, "at": 289.60000002384186 }, { "stage": "bitmap-returned", "id": 2, "time": 10.007995, "at": 290.10000002384186 }, { "stage": "bitmap-ready", "id": 2, "time": 10.007995, "at": 290.10000002384186 }, { "stage": "drawn", "id": 2, "time": 10.007995, "at": 290.2000000476837 }, { "stage": "bitmap-start", "id": 3, "time": 10.016096, "at": 341.5 }, { "stage": "bitmap-returned", "id": 3, "time": 10.016096, "at": 343.4000000357628 }, { "stage": "bitmap-ready", "id": 3, "time": 10.016096, "at": 343.5 }, { "stage": "drawn", "id": 3, "time": 10.016096, "at": 343.5 }, { "stage": "bitmap-start", "id": 4, "time": 10.066756, "at": 389.4000000357628 }, { "stage": "bitmap-returned", "id": 4, "time": 10.066756, "at": 390.4000000357628 }, { "stage": "bitmap-ready", "id": 4, "time": 10.066756, "at": 390.5 }, { "stage": "drawn", "id": 4, "time": 10.066756, "at": 390.60000002384186 }, { "stage": "bitmap-start", "id": 5, "time": 10.11622, "at": 440.80000001192093 }, { "stage": "bitmap-returned", "id": 5, "time": 10.11622, "at": 442.2000000476837 }, { "stage": "bitmap-ready", "id": 5, "time": 10.11622, "at": 442.2000000476837 }, { "stage": "drawn", "id": 5, "time": 10.11622, "at": 443.2000000476837 }, { "stage": "bitmap-start", "id": 6, "time": 10.133987, "at": 457.60000002384186 }, { "stage": "bitmap-returned", "id": 6, "time": 10.133987, "at": 458.9000000357628 }, { "stage": "bitmap-ready", "id": 6, "time": 10.133987, "at": 458.9000000357628 }, { "stage": "drawn", "id": 6, "time": 10.133987, "at": 459 }, { "stage": "bitmap-start", "id": 7, "time": 10.200522, "at": 524.6000000238419 }, { "stage": "bitmap-returned", "id": 7, "time": 10.200522, "at": 526 }, { "stage": "bitmap-ready", "id": 7, "time": 10.200522, "at": 526 }, { "stage": "drawn", "id": 7, "time": 10.200522, "at": 526.1000000238419 } ], "samples": [ { "start": 240.5999999642372, "sent": 1, "received": 1, "copyStart": 240.80000001192093, "drawn": 241.19999998807907, "read": 241.39999997615814, "pixel": [ 255, 0, 0, 255 ] }, { "start": 247.0999999642372, "sent": 1, "received": 1, "copyStart": 247.19999998807907, "drawn": 247.19999998807907, "read": 247.5999999642372, "pixel": [ 255, 0, 0, 255 ] }, { "start": 347.5, "sent": 1, "received": 1, "copyStart": 347.5, "drawn": 347.69999998807907, "read": 347.89999997615814, "pixel": [ 255, 0, 0, 255 ] }, { "start": 463.39999997615814, "sent": 4, "received": 4, "copyStart": 463.5, "drawn": 463.5999999642372, "read": 463.69999998807907, "pixel": [ 0, 0, 255, 255 ] }, { "start": 476.30000001192093, "sent": 4, "received": 4, "copyStart": 476.30000001192093, "drawn": 476.39999997615814, "read": 476.5999999642372, "pixel": [ 0, 0, 255, 255 ] }, { "start": 580.0999999642372, "sent": 6, "received": 6, "copyStart": 580.1999999880791, "drawn": 581.5999999642372, "read": 582.1999999880791, "pixel": [ 0, 0, 255, 255 ] }, { "start": 586.3999999761581, "sent": 7, "received": 6, "copyStart": 586.3999999761581, "drawn": 587, "read": 587.8999999761581, "pixel": [ 0, 0, 255, 255 ] }, { "start": 592.5999999642372, "sent": 7, "received": 7, "copyStart": 592.6999999880791, "drawn": 593.3000000119209, "read": 594.0999999642372, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.217196, "frames": 8, "sent": 8, "received": 7, "skipped": 0, "maxOutstanding": 1, "quality": 135 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "chromium", "status": "passed", "duration": 666, "errors": [], "browser": "153.0.8010.12", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 1.699999988079071, "slowCalls": [], "slowSamples": [], "control": { "host": "published", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0.001247, "at": 147.9000000357628 }, { "stage": "bitmap-returned", "id": 1, "time": 0.001247, "at": 148.60000002384186 }, { "stage": "bitmap-ready", "id": 1, "time": 0.001247, "at": 148.60000002384186 }, { "stage": "drawn", "id": 1, "time": 0.001247, "at": 149.80000001192093 }, { "stage": "bitmap-start", "id": 2, "time": 10, "at": 252.69999998807907 }, { "stage": "bitmap-returned", "id": 2, "time": 10, "at": 253.60000002384186 }, { "stage": "bitmap-ready", "id": 2, "time": 10, "at": 253.60000002384186 }, { "stage": "drawn", "id": 2, "time": 10, "at": 253.60000002384186 }, { "stage": "bitmap-start", "id": 3, "time": 10.038078, "at": 336.4000000357628 }, { "stage": "bitmap-returned", "id": 3, "time": 10.038078, "at": 337.9000000357628 }, { "stage": "bitmap-ready", "id": 3, "time": 10.038078, "at": 337.9000000357628 }, { "stage": "drawn", "id": 3, "time": 10.038078, "at": 338.80000001192093 }, { "stage": "bitmap-start", "id": 4, "time": 10.072322, "at": 370.30000001192093 }, { "stage": "bitmap-returned", "id": 4, "time": 10.072322, "at": 371.69999998807907 }, { "stage": "bitmap-ready", "id": 4, "time": 10.072322, "at": 371.80000001192093 }, { "stage": "drawn", "id": 4, "time": 10.072322, "at": 371.80000001192093 }, { "stage": "bitmap-start", "id": 5, "time": 10.103544, "at": 403.4000000357628 }, { "stage": "bitmap-returned", "id": 5, "time": 10.103544, "at": 404.69999998807907 }, { "stage": "bitmap-ready", "id": 5, "time": 10.103544, "at": 404.69999998807907 }, { "stage": "drawn", "id": 5, "time": 10.103544, "at": 404.80000001192093 }, { "stage": "bitmap-start", "id": 6, "time": 10.154936, "at": 453.30000001192093 }, { "stage": "bitmap-returned", "id": 6, "time": 10.154936, "at": 455 }, { "stage": "bitmap-ready", "id": 6, "time": 10.154936, "at": 455 }, { "stage": "drawn", "id": 6, "time": 10.154936, "at": 455 }, { "stage": "bitmap-start", "id": 7, "time": 10.206103, "at": 504.4000000357628 }, { "stage": "bitmap-returned", "id": 7, "time": 10.206103, "at": 506.10000002384186 }, { "stage": "bitmap-ready", "id": 7, "time": 10.206103, "at": 506.10000002384186 }, { "stage": "drawn", "id": 7, "time": 10.206103, "at": 506.19999998807907 } ], "samples": [ { "start": 196.60000002384186, "sent": 1, "received": 1, "copyStart": 196.80000001192093, "drawn": 197.10000002384186, "read": 197.30000001192093, "pixel": [ 255, 0, 0, 255 ] }, { "start": 203.5, "sent": 1, "received": 1, "copyStart": 203.60000002384186, "drawn": 203.80000001192093, "read": 204.10000002384186, "pixel": [ 255, 0, 0, 255 ] }, { "start": 304.69999998807907, "sent": 2, "received": 2, "copyStart": 304.80000001192093, "drawn": 305, "read": 305.30000001192093, "pixel": [ 0, 0, 255, 255 ] }, { "start": 318.10000002384186, "sent": 2, "received": 2, "copyStart": 318.10000002384186, "drawn": 318.19999998807907, "read": 318.4000000357628, "pixel": [ 0, 0, 255, 255 ] }, { "start": 425.10000002384186, "sent": 4, "received": 4, "copyStart": 425.19999998807907, "drawn": 426.60000002384186, "read": 427.19999998807907, "pixel": [ 0, 0, 255, 255 ] }, { "start": 431.4000000357628, "sent": 4, "received": 4, "copyStart": 431.5, "drawn": 432.10000002384186, "read": 433, "pixel": [ 0, 0, 255, 255 ] }, { "start": 539.1000000238419, "sent": 6, "received": 6, "copyStart": 539.1999999880791, "drawn": 539.8000000119209, "read": 540.6000000238419, "pixel": [ 0, 0, 255, 255 ] }, { "start": 543.6999999880791, "sent": 6, "received": 6, "copyStart": 543.6999999880791, "drawn": 544.4000000357628, "read": 545.4000000357628, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.214735, "frames": 7, "sent": 7, "received": 7, "skipped": 0, "maxOutstanding": 1, "quality": 135 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "chromium", "status": "passed", "duration": 654, "errors": [], "browser": "153.0.8010.12", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 2.200000047683716, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0.000363, "at": 80.89999997615814 }, { "stage": "bitmap-returned", "id": 1, "time": 0.000363, "at": 81.5 }, { "stage": "bitmap-ready", "id": 1, "time": 0.000363, "at": 81.5 }, { "stage": "drawn", "id": 1, "time": 0.000363, "at": 82.30000001192093 }, { "stage": "bitmap-start", "id": 2, "time": 0.053215, "at": 173.5 }, { "stage": "bitmap-returned", "id": 2, "time": 0.053215, "at": 174 }, { "stage": "bitmap-ready", "id": 2, "time": 0.053215, "at": 174 }, { "stage": "drawn", "id": 2, "time": 0.053215, "at": 174.10000002384186 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 283.30000001192093 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 283.60000002384186 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 283.60000002384186 }, { "stage": "drawn", "id": 3, "time": 10, "at": 283.69999998807907 }, { "stage": "bitmap-start", "id": 4, "time": 10.028735, "at": 358.89999997615814 }, { "stage": "bitmap-returned", "id": 4, "time": 10.028735, "at": 360.80000001192093 }, { "stage": "bitmap-ready", "id": 4, "time": 10.028735, "at": 360.80000001192093 }, { "stage": "drawn", "id": 4, "time": 10.028735, "at": 361.69999998807907 }, { "stage": "bitmap-start", "id": 5, "time": 10.06209, "at": 390.10000002384186 }, { "stage": "bitmap-returned", "id": 5, "time": 10.06209, "at": 391.5 }, { "stage": "bitmap-ready", "id": 5, "time": 10.06209, "at": 391.5 }, { "stage": "drawn", "id": 5, "time": 10.06209, "at": 391.60000002384186 }, { "stage": "bitmap-start", "id": 6, "time": 10.112095, "at": 441.39999997615814 }, { "stage": "bitmap-returned", "id": 6, "time": 10.112095, "at": 443.60000002384186 }, { "stage": "bitmap-ready", "id": 6, "time": 10.112095, "at": 443.60000002384186 }, { "stage": "drawn", "id": 6, "time": 10.112095, "at": 443.69999998807907 }, { "stage": "bitmap-start", "id": 7, "time": 10.144327, "at": 473.60000002384186 }, { "stage": "bitmap-returned", "id": 7, "time": 10.144327, "at": 475.30000001192093 }, { "stage": "bitmap-ready", "id": 7, "time": 10.144327, "at": 475.30000001192093 }, { "stage": "drawn", "id": 7, "time": 10.144327, "at": 475.30000001192093 }, { "stage": "bitmap-start", "id": 8, "time": 10.194395, "at": 524.1000000238419 }, { "stage": "bitmap-returned", "id": 8, "time": 10.194395, "at": 526 }, { "stage": "bitmap-ready", "id": 8, "time": 10.194395, "at": 526 }, { "stage": "drawn", "id": 8, "time": 10.194395, "at": 526.1000000238419 } ], "samples": [ { "start": 99.20000004768372, "sent": 1, "received": 1, "copyStart": 99.30000001192093, "drawn": 99.40000003576279, "read": 99.5, "pixel": [ 0, 0, 0, 0 ] }, { "start": 209.9000000357628, "sent": 2, "received": 2, "copyStart": 209.9000000357628, "drawn": 210.30000001192093, "read": 210.5, "pixel": [ 255, 0, 0, 255 ] }, { "start": 213.5, "sent": 2, "received": 2, "copyStart": 213.5, "drawn": 213.60000002384186, "read": 213.70000004768372, "pixel": [ 255, 0, 0, 255 ] }, { "start": 306.7000000476837, "sent": 3, "received": 3, "copyStart": 306.7000000476837, "drawn": 306.80000001192093, "read": 307.10000002384186, "pixel": [ 0, 0, 255, 255 ] }, { "start": 316.10000002384186, "sent": 3, "received": 3, "copyStart": 316.10000002384186, "drawn": 316.2000000476837, "read": 316.4000000357628, "pixel": [ 0, 0, 255, 255 ] }, { "start": 429.4000000357628, "sent": 5, "received": 5, "copyStart": 429.5, "drawn": 430.9000000357628, "read": 431.5, "pixel": [ 0, 0, 255, 255 ] }, { "start": 434.30000001192093, "sent": 5, "received": 5, "copyStart": 434.4000000357628, "drawn": 435.10000002384186, "read": 435.7000000476837, "pixel": [ 0, 0, 255, 255 ] }, { "start": 548.4000000357628, "sent": 8, "received": 8, "copyStart": 548.4000000357628, "drawn": 549.1000000238419, "read": 549.9000000357628, "pixel": [ 0, 0, 255, 255 ] }, { "start": 553.7000000476837, "sent": 8, "received": 8, "copyStart": 553.7000000476837, "drawn": 554.4000000357628, "read": 555.6000000238419, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.220343, "frames": 8, "sent": 8, "received": 8, "skipped": 0, "maxOutstanding": 1, "quality": 136 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "firefox", "status": "passed", "duration": 1952, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 3, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 121 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 122 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 122 }, { "stage": "drawn", "id": 1, "time": 0, "at": 122 }, { "stage": "bitmap-start", "id": 2, "time": 0.041282, "at": 194 }, { "stage": "bitmap-returned", "id": 2, "time": 0.041282, "at": 194 }, { "stage": "bitmap-ready", "id": 2, "time": 0.041282, "at": 194 }, { "stage": "drawn", "id": 2, "time": 0.041282, "at": 194 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 504 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 505 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 506 }, { "stage": "drawn", "id": 3, "time": 10, "at": 539 }, { "stage": "bitmap-start", "id": 4, "time": 10.000035, "at": 560 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000035, "at": 563 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000035, "at": 563 }, { "stage": "drawn", "id": 4, "time": 10.000035, "at": 566 }, { "stage": "bitmap-start", "id": 5, "time": 10.080923, "at": 607 }, { "stage": "bitmap-returned", "id": 5, "time": 10.080923, "at": 609 }, { "stage": "bitmap-ready", "id": 5, "time": 10.080923, "at": 610 }, { "stage": "drawn", "id": 5, "time": 10.080923, "at": 612 }, { "stage": "bitmap-start", "id": 6, "time": 10.121181, "at": 640 }, { "stage": "bitmap-returned", "id": 6, "time": 10.121181, "at": 642 }, { "stage": "bitmap-ready", "id": 6, "time": 10.121181, "at": 642 }, { "stage": "drawn", "id": 6, "time": 10.121181, "at": 644 }, { "stage": "bitmap-start", "id": 7, "time": 10.161447, "at": 690 }, { "stage": "bitmap-returned", "id": 7, "time": 10.161447, "at": 692 }, { "stage": "bitmap-ready", "id": 7, "time": 10.161447, "at": 692 }, { "stage": "drawn", "id": 7, "time": 10.161447, "at": 694 }, { "stage": "bitmap-start", "id": 8, "time": 10.201807, "at": 723 }, { "stage": "bitmap-returned", "id": 8, "time": 10.201807, "at": 725 }, { "stage": "bitmap-ready", "id": 8, "time": 10.201807, "at": 725 }, { "stage": "drawn", "id": 8, "time": 10.201807, "at": 726 }, { "stage": "bitmap-start", "id": 9, "time": 10.242093, "at": 773 }, { "stage": "bitmap-returned", "id": 9, "time": 10.242093, "at": 775 }, { "stage": "bitmap-ready", "id": 9, "time": 10.242093, "at": 775 }, { "stage": "drawn", "id": 9, "time": 10.242093, "at": 777 }, { "stage": "bitmap-start", "id": 10, "time": 10.282276, "at": 806 }, { "stage": "bitmap-returned", "id": 10, "time": 10.282276, "at": 808 }, { "stage": "bitmap-ready", "id": 10, "time": 10.282276, "at": 808 }, { "stage": "drawn", "id": 10, "time": 10.282276, "at": 809 }, { "stage": "bitmap-start", "id": 11, "time": 10.322817, "at": 840 }, { "stage": "bitmap-returned", "id": 11, "time": 10.322817, "at": 842 }, { "stage": "bitmap-ready", "id": 11, "time": 10.322817, "at": 842 } ], "samples": [ { "start": 443, "sent": 1, "received": 1, "copyStart": 443, "drawn": 444, "read": 444, "pixel": [ 255, 0, 0, 255 ] }, { "start": 473, "sent": 1, "received": 1, "copyStart": 473, "drawn": 476, "read": 476, "pixel": [ 255, 0, 0, 255 ] }, { "start": 826, "sent": 3, "received": 2, "copyStart": 826, "drawn": 827, "read": 827, "pixel": [ 0, 0, 255, 255 ] }, { "start": 852, "sent": 4, "received": 3, "copyStart": 852, "drawn": 857, "read": 857, "pixel": [ 0, 0, 255, 255 ] }, { "start": 979, "sent": 7, "received": 6, "copyStart": 979, "drawn": 984, "read": 984, "pixel": [ 0, 0, 255, 255 ] }, { "start": 989, "sent": 7, "received": 7, "copyStart": 989, "drawn": 990, "read": 990, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1111, "sent": 10, "received": 10, "copyStart": 1111, "drawn": 1112, "read": 1112, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1118, "sent": 10, "received": 10, "copyStart": 1118, "drawn": 1118, "read": 1118, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.322817, "frames": 11, "sent": 11, "received": 10, "skipped": 0, "maxOutstanding": 1, "quality": 8 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "firefox", "status": "failed", "duration": 11346, "errors": [ { "location": { "file": "D:\\github\\ArtPlayer\\test\\browser\\jassub-platform.spec.js", "column": 107, "line": 155 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeGreaterThan\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected: > \u001b[32m640\u001b[39m\nReceived: \u001b[31m640\u001b[39m\n\nCall Log:\n- Timeout 7000ms exceeded while waiting on the predicate\n\n 153 | }\n 154 | }, host)\n> 155 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).width).toBeGreaterThan(before.width)\n | ^\n 156 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).time).toBeGreaterThan(10.2)\n 157 | await expect.poll(async () => (await page.evaluate(() => window.nativeCanvasProbe.sample())).pixel).toEqual([0, 0, 255, 255])\n 158 | if (singleFlight) {\n at D:\\github\\ArtPlayer\\test\\browser\\jassub-platform.spec.js:155:107" } ], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 10006, "slowCalls": [ { "id": 8, "milliseconds": 10006 } ], "slowSamples": [ { "start": 667, "sent": 8, "received": 7, "copyStart": 667, "drawn": 10671, "read": 10671, "pixel": [ 0, 0, 0, 0 ] } ], "control": { "host": "published", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 47 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 48 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 48 }, { "stage": "drawn", "id": 1, "time": 0, "at": 49 }, { "stage": "bitmap-start", "id": 2, "time": 0.040262, "at": 114 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040262, "at": 116 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040262, "at": 116 }, { "stage": "drawn", "id": 2, "time": 0.040262, "at": 116 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 399 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 399 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 400 }, { "stage": "drawn", "id": 3, "time": 10, "at": 429 }, { "stage": "bitmap-start", "id": 4, "time": 10.000023, "at": 431 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000023, "at": 431 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000023, "at": 431 }, { "stage": "drawn", "id": 4, "time": 10.000023, "at": 431 }, { "stage": "bitmap-start", "id": 5, "time": 10.040364, "at": 467 }, { "stage": "bitmap-returned", "id": 5, "time": 10.040364, "at": 469 }, { "stage": "bitmap-ready", "id": 5, "time": 10.040364, "at": 469 }, { "stage": "drawn", "id": 5, "time": 10.040364, "at": 472 }, { "stage": "bitmap-start", "id": 6, "time": 10.080738, "at": 499 }, { "stage": "bitmap-returned", "id": 6, "time": 10.080738, "at": 501 }, { "stage": "bitmap-ready", "id": 6, "time": 10.080738, "at": 503 }, { "stage": "drawn", "id": 6, "time": 10.080738, "at": 506 }, { "stage": "bitmap-start", "id": 7, "time": 10.12089, "at": 534 }, { "stage": "bitmap-returned", "id": 7, "time": 10.12089, "at": 536 }, { "stage": "bitmap-ready", "id": 7, "time": 10.12089, "at": 536 }, { "stage": "drawn", "id": 7, "time": 10.12089, "at": 538 }, { "stage": "bitmap-start", "id": 8, "time": 10.161375, "at": 584 }, { "stage": "bitmap-returned", "id": 8, "time": 10.161375, "at": 10590 }, { "stage": "pending", "ids": [ 8 ], "at": 10592 }, { "stage": "bitmap-ready", "id": 8, "time": 10.161375, "at": 10593 }, { "stage": "drawn", "id": 8, "time": 10.161375, "at": 10596 } ], "samples": [ { "start": 195, "sent": 1, "received": 1, "copyStart": 195, "drawn": 196, "read": 196, "pixel": [ 255, 0, 0, 255 ] }, { "start": 204, "sent": 2, "received": 2, "copyStart": 204, "drawn": 204, "read": 204, "pixel": [ 255, 0, 0, 255 ] }, { "start": 513, "sent": 3, "received": 2, "copyStart": 513, "drawn": 513, "read": 513, "pixel": [ 0, 0, 255, 255 ] }, { "start": 538, "sent": 4, "received": 4, "copyStart": 538, "drawn": 539, "read": 539, "pixel": [ 0, 0, 255, 255 ] }, { "start": 667, "sent": 8, "received": 7, "copyStart": 667, "drawn": 10671, "read": 10671, "pixel": [ 0, 0, 0, 0 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 0, 0 ], "width": 1280, "height": 720, "time": 20.156982, "frames": 9, "sent": 9, "received": 8, "skipped": 0, "maxOutstanding": 1, "quality": 254 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "firefox", "status": "passed", "duration": 1801, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 2, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 153 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 154 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 154 }, { "stage": "drawn", "id": 1, "time": 0, "at": 154 }, { "stage": "bitmap-start", "id": 2, "time": 0.040324, "at": 205 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040324, "at": 206 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040324, "at": 206 }, { "stage": "drawn", "id": 2, "time": 0.040324, "at": 206 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 472 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 472 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 472 }, { "stage": "drawn", "id": 3, "time": 10, "at": 473 }, { "stage": "bitmap-start", "id": 4, "time": 10.000019, "at": 497 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000019, "at": 499 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000019, "at": 499 }, { "stage": "drawn", "id": 4, "time": 10.000019, "at": 502 }, { "stage": "bitmap-start", "id": 5, "time": 10.052705, "at": 541 }, { "stage": "bitmap-returned", "id": 5, "time": 10.052705, "at": 543 }, { "stage": "bitmap-ready", "id": 5, "time": 10.052705, "at": 543 }, { "stage": "drawn", "id": 5, "time": 10.052705, "at": 545 }, { "stage": "bitmap-start", "id": 6, "time": 10.093076, "at": 582 }, { "stage": "bitmap-returned", "id": 6, "time": 10.093076, "at": 582 }, { "stage": "bitmap-ready", "id": 6, "time": 10.093076, "at": 583 }, { "stage": "drawn", "id": 6, "time": 10.093076, "at": 584 }, { "stage": "bitmap-start", "id": 7, "time": 10.133241, "at": 624 }, { "stage": "bitmap-returned", "id": 7, "time": 10.133241, "at": 626 }, { "stage": "bitmap-ready", "id": 7, "time": 10.133241, "at": 626 }, { "stage": "drawn", "id": 7, "time": 10.133241, "at": 628 }, { "stage": "bitmap-start", "id": 8, "time": 10.173407, "at": 662 }, { "stage": "bitmap-returned", "id": 8, "time": 10.173407, "at": 663 }, { "stage": "bitmap-ready", "id": 8, "time": 10.173407, "at": 663 }, { "stage": "drawn", "id": 8, "time": 10.173407, "at": 665 }, { "stage": "bitmap-start", "id": 9, "time": 10.213531, "at": 702 }, { "stage": "bitmap-returned", "id": 9, "time": 10.213531, "at": 704 }, { "stage": "bitmap-ready", "id": 9, "time": 10.213531, "at": 704 }, { "stage": "drawn", "id": 9, "time": 10.213531, "at": 705 }, { "stage": "bitmap-start", "id": 10, "time": 10.254277, "at": 744 }, { "stage": "bitmap-returned", "id": 10, "time": 10.254277, "at": 745 }, { "stage": "bitmap-ready", "id": 10, "time": 10.254277, "at": 745 }, { "stage": "drawn", "id": 10, "time": 10.254277, "at": 747 } ], "samples": [ { "start": 383, "sent": 1, "received": 1, "copyStart": 383, "drawn": 384, "read": 384, "pixel": [ 255, 0, 0, 255 ] }, { "start": 396, "sent": 1, "received": 1, "copyStart": 396, "drawn": 397, "read": 397, "pixel": [ 255, 0, 0, 255 ] }, { "start": 679, "sent": 3, "received": 3, "copyStart": 679, "drawn": 679, "read": 679, "pixel": [ 0, 0, 255, 255 ] }, { "start": 699, "sent": 4, "received": 3, "copyStart": 699, "drawn": 704, "read": 704, "pixel": [ 0, 0, 255, 255 ] }, { "start": 817, "sent": 6, "received": 6, "copyStart": 818, "drawn": 820, "read": 820, "pixel": [ 0, 0, 255, 255 ] }, { "start": 828, "sent": 7, "received": 7, "copyStart": 828, "drawn": 831, "read": 831, "pixel": [ 0, 0, 255, 255 ] }, { "start": 937, "sent": 9, "received": 9, "copyStart": 937, "drawn": 940, "read": 940, "pixel": [ 0, 0, 255, 255 ] }, { "start": 947, "sent": 10, "received": 9, "copyStart": 947, "drawn": 948, "read": 949, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.254277, "frames": 10, "sent": 10, "received": 10, "skipped": 0, "maxOutstanding": 1, "quality": 6 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "webkit", "status": "passed", "duration": 2018, "errors": [], "browser": "26.6", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": false, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [], "samples": [ { "start": 712, "sent": 1, "received": 1, "copyStart": 712, "drawn": 714, "read": 715, "pixel": [ 255, 0, 0, 255 ] }, { "start": 727, "sent": 2, "received": 2, "copyStart": 727, "drawn": 728, "read": 744, "pixel": [ 255, 0, 0, 255 ] }, { "start": 1014, "sent": 7, "received": 7, "copyStart": 1014, "drawn": 1015, "read": 1015, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1038, "sent": 8, "received": 8, "copyStart": 1038, "drawn": 1039, "read": 1049, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1226, "sent": 10, "received": 10, "copyStart": 1226, "drawn": 1229, "read": 1231, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1236, "sent": 10, "received": 10, "copyStart": 1236, "drawn": 1236, "read": 1237, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1243, "sent": 11, "received": 11, "copyStart": 1243, "drawn": 1246, "read": 1298, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.3067917, "frames": 12, "sent": 12, "received": 12, "skipped": 0, "maxOutstanding": 1, "quality": 0 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "webkit", "status": "passed", "duration": 1853, "errors": [], "browser": "26.6", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "published", "evidence": { "offscreen": false, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [], "samples": [ { "start": 539, "sent": 2, "received": 2, "copyStart": 539, "drawn": 540, "read": 547, "pixel": [ 255, 0, 0, 255 ] }, { "start": 560, "sent": 2, "received": 2, "copyStart": 560, "drawn": 560, "read": 560, "pixel": [ 255, 0, 0, 255 ] }, { "start": 748, "sent": 7, "received": 7, "copyStart": 748, "drawn": 749, "read": 749, "pixel": [ 255, 0, 0, 255 ] }, { "start": 897, "sent": 11, "received": 11, "copyStart": 897, "drawn": 897, "read": 913, "pixel": [ 0, 0, 255, 255 ] }, { "start": 977, "sent": 12, "received": 12, "copyStart": 977, "drawn": 977, "read": 978, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1124, "sent": 14, "received": 14, "copyStart": 1124, "drawn": 1127, "read": 1145, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1157, "sent": 14, "received": 14, "copyStart": 1157, "drawn": 1157, "read": 1158, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1194, "sent": 15, "received": 15, "copyStart": 1194, "drawn": 1196, "read": 1225, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.4491459, "frames": 16, "sent": 16, "received": 16, "skipped": 0, "maxOutstanding": 1, "quality": 0 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "webkit", "status": "passed", "duration": 1383, "errors": [], "browser": "26.6", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": false, "bitmap": true, "idleReadback": false, "singleFlight": true, "stages": [], "samples": [ { "start": 499, "sent": 2, "received": 2, "copyStart": 499, "drawn": 501, "read": 510, "pixel": [ 255, 0, 0, 255 ] }, { "start": 545, "sent": 3, "received": 3, "copyStart": 545, "drawn": 545, "read": 559, "pixel": [ 255, 0, 0, 255 ] }, { "start": 741, "sent": 11, "received": 11, "copyStart": 741, "drawn": 742, "read": 743, "pixel": [ 0, 0, 255, 255 ] }, { "start": 756, "sent": 12, "received": 12, "copyStart": 756, "drawn": 757, "read": 762, "pixel": [ 0, 0, 255, 255 ] }, { "start": 893, "sent": 13, "received": 13, "copyStart": 893, "drawn": 896, "read": 900, "pixel": [ 0, 0, 255, 255 ] }, { "start": 905, "sent": 14, "received": 14, "copyStart": 905, "drawn": 907, "read": 980, "pixel": [ 0, 0, 255, 255 ] }, { "start": 993, "sent": 15, "received": 15, "copyStart": 993, "drawn": 995, "read": 1066, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.3971875, "frames": 16, "sent": 16, "received": 16, "skipped": 0, "maxOutstanding": 1, "quality": 0 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } } ] }, { "path": "refactor/.cache/jassub-native-idle.json", "sha256": "dd0aff9a593f540939cdef25e80448820eb5b0c42364890f4bd69897b20d98c8", "log": { "path": "refactor/.cache/jassub-native-idle.log", "sha256": "25938b224e67b649907d4a876cc6605e4ac4d416737cac153a2ef2fe03d485c3" }, "resultsArchive": "refactor/.cache/jassub-native-idle-results", "sourceRevision": "final source in this checkpoint", "stats": { "startTime": "2026-09-15T10:20:41.013Z", "duration": 7428.251, "expected": 3, "skipped": 0, "unexpected": 0, "flaky": 0 }, "cases": [ { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "firefox", "status": "passed", "duration": 1879, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 3, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": true, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 76 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 76 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 77 }, { "stage": "drawn", "id": 1, "time": 0, "at": 77 }, { "stage": "bitmap-start", "id": 2, "time": 0.040691, "at": 144 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040691, "at": 146 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040691, "at": 146 }, { "stage": "drawn", "id": 2, "time": 0.040691, "at": 146 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 412 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 412 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 412 }, { "stage": "drawn", "id": 3, "time": 10, "at": 445 }, { "stage": "bitmap-start", "id": 4, "time": 10.000023, "at": 465 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000023, "at": 467 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000023, "at": 467 }, { "stage": "drawn", "id": 4, "time": 10.000023, "at": 469 }, { "stage": "bitmap-start", "id": 5, "time": 10.080998, "at": 513 }, { "stage": "bitmap-returned", "id": 5, "time": 10.080998, "at": 514 }, { "stage": "bitmap-ready", "id": 5, "time": 10.080998, "at": 515 }, { "stage": "drawn", "id": 5, "time": 10.080998, "at": 517 }, { "stage": "bitmap-start", "id": 6, "time": 10.122633, "at": 567 }, { "stage": "bitmap-returned", "id": 6, "time": 10.122633, "at": 569 }, { "stage": "bitmap-ready", "id": 6, "time": 10.122633, "at": 569 }, { "stage": "drawn", "id": 6, "time": 10.122633, "at": 571 }, { "stage": "bitmap-start", "id": 7, "time": 10.163223, "at": 598 }, { "stage": "bitmap-returned", "id": 7, "time": 10.163223, "at": 599 }, { "stage": "bitmap-ready", "id": 7, "time": 10.163223, "at": 599 }, { "stage": "drawn", "id": 7, "time": 10.163223, "at": 602 }, { "stage": "bitmap-start", "id": 8, "time": 10.203587, "at": 629 }, { "stage": "bitmap-returned", "id": 8, "time": 10.203587, "at": 631 }, { "stage": "bitmap-ready", "id": 8, "time": 10.203587, "at": 632 }, { "stage": "drawn", "id": 8, "time": 10.203587, "at": 634 }, { "stage": "bitmap-start", "id": 9, "time": 10.244026, "at": 681 }, { "stage": "bitmap-returned", "id": 9, "time": 10.244026, "at": 684 }, { "stage": "bitmap-ready", "id": 9, "time": 10.244026, "at": 684 }, { "stage": "drawn", "id": 9, "time": 10.244026, "at": 687 }, { "stage": "bitmap-start", "id": 10, "time": 10.284167, "at": 714 }, { "stage": "bitmap-returned", "id": 10, "time": 10.284167, "at": 716 }, { "stage": "bitmap-ready", "id": 10, "time": 10.284167, "at": 716 }, { "stage": "drawn", "id": 10, "time": 10.284167, "at": 719 } ], "samples": [ { "start": 420, "sent": 1, "received": 1, "copyStart": 420, "drawn": 422, "read": 422, "pixel": [ 255, 0, 0, 255 ] }, { "start": 434, "sent": 1, "received": 1, "copyStart": 434, "drawn": 435, "read": 435, "pixel": [ 255, 0, 0, 255 ] }, { "start": 757, "sent": 3, "received": 3, "copyStart": 757, "drawn": 757, "read": 757, "pixel": [ 0, 0, 255, 255 ] }, { "start": 781, "sent": 4, "received": 4, "copyStart": 781, "drawn": 784, "read": 784, "pixel": [ 0, 0, 255, 255 ] }, { "start": 902, "sent": 6, "received": 6, "copyStart": 902, "drawn": 905, "read": 905, "pixel": [ 0, 0, 255, 255 ] }, { "start": 913, "sent": 7, "received": 7, "copyStart": 913, "drawn": 916, "read": 916, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1033, "sent": 10, "received": 10, "copyStart": 1033, "drawn": 1035, "read": 1035, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1042, "sent": 10, "received": 10, "copyStart": 1042, "drawn": 1045, "read": 1045, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.324573, "frames": 10, "sent": 10, "received": 10, "skipped": 0, "maxOutstanding": 1, "quality": 8 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "firefox", "status": "passed", "duration": 1076, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 4, "slowCalls": [], "slowSamples": [], "control": { "host": "published", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": true, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 35 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 36 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 36 }, { "stage": "drawn", "id": 1, "time": 0, "at": 37 }, { "stage": "bitmap-start", "id": 2, "time": 0.040419, "at": 93 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040419, "at": 94 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040419, "at": 94 }, { "stage": "drawn", "id": 2, "time": 0.040419, "at": 94 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 143 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 143 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 143 }, { "stage": "drawn", "id": 3, "time": 10, "at": 143 }, { "stage": "bitmap-start", "id": 4, "time": 10.000022, "at": 426 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000022, "at": 427 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000022, "at": 427 }, { "stage": "drawn", "id": 4, "time": 10.000022, "at": 460 }, { "stage": "bitmap-start", "id": 5, "time": 10.04042, "at": 478 }, { "stage": "bitmap-returned", "id": 5, "time": 10.04042, "at": 479 }, { "stage": "bitmap-ready", "id": 5, "time": 10.04042, "at": 479 }, { "stage": "drawn", "id": 5, "time": 10.04042, "at": 482 }, { "stage": "bitmap-start", "id": 6, "time": 10.080886, "at": 511 }, { "stage": "bitmap-returned", "id": 6, "time": 10.080886, "at": 513 }, { "stage": "bitmap-ready", "id": 6, "time": 10.080886, "at": 514 }, { "stage": "drawn", "id": 6, "time": 10.080886, "at": 517 }, { "stage": "bitmap-start", "id": 7, "time": 10.121055, "at": 561 }, { "stage": "bitmap-returned", "id": 7, "time": 10.121055, "at": 563 }, { "stage": "bitmap-ready", "id": 7, "time": 10.121055, "at": 564 }, { "stage": "drawn", "id": 7, "time": 10.121055, "at": 565 }, { "stage": "bitmap-start", "id": 8, "time": 10.161301, "at": 596 }, { "stage": "bitmap-returned", "id": 8, "time": 10.161301, "at": 599 }, { "stage": "bitmap-ready", "id": 8, "time": 10.161301, "at": 599 }, { "stage": "drawn", "id": 8, "time": 10.161301, "at": 601 }, { "stage": "bitmap-start", "id": 9, "time": 10.201711, "at": 644 }, { "stage": "bitmap-returned", "id": 9, "time": 10.201711, "at": 646 }, { "stage": "bitmap-ready", "id": 9, "time": 10.201711, "at": 646 }, { "stage": "drawn", "id": 9, "time": 10.201711, "at": 647 }, { "stage": "bitmap-start", "id": 10, "time": 10.242035, "at": 678 }, { "stage": "bitmap-returned", "id": 10, "time": 10.242035, "at": 682 }, { "stage": "bitmap-ready", "id": 10, "time": 10.242035, "at": 682 }, { "stage": "drawn", "id": 10, "time": 10.242035, "at": 685 }, { "stage": "bitmap-start", "id": 11, "time": 10.282187, "at": 710 }, { "stage": "bitmap-returned", "id": 11, "time": 10.282187, "at": 712 }, { "stage": "bitmap-ready", "id": 11, "time": 10.282187, "at": 712 }, { "stage": "drawn", "id": 11, "time": 10.282187, "at": 714 } ], "samples": [ { "start": 179, "sent": 2, "received": 2, "copyStart": 179, "drawn": 181, "read": 181, "pixel": [ 255, 0, 0, 255 ] }, { "start": 199, "sent": 2, "received": 2, "copyStart": 199, "drawn": 199, "read": 199, "pixel": [ 255, 0, 0, 255 ] }, { "start": 496, "sent": 3, "received": 3, "copyStart": 496, "drawn": 497, "read": 497, "pixel": [ 0, 0, 255, 255 ] }, { "start": 547, "sent": 4, "received": 4, "copyStart": 547, "drawn": 547, "read": 547, "pixel": [ 0, 0, 255, 255 ] }, { "start": 667, "sent": 7, "received": 7, "copyStart": 668, "drawn": 671, "read": 671, "pixel": [ 0, 0, 255, 255 ] }, { "start": 679, "sent": 8, "received": 8, "copyStart": 679, "drawn": 681, "read": 681, "pixel": [ 0, 0, 255, 255 ] }, { "start": 791, "sent": 11, "received": 11, "copyStart": 791, "drawn": 794, "read": 794, "pixel": [ 0, 0, 255, 255 ] }, { "start": 799, "sent": 11, "received": 11, "copyStart": 799, "drawn": 801, "read": 801, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.282187, "frames": 11, "sent": 11, "received": 11, "skipped": 0, "maxOutstanding": 1, "quality": 8 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "firefox", "status": "passed", "duration": 1078, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": 4, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": true, "bitmap": true, "idleReadback": true, "singleFlight": true, "stages": [ { "stage": "bitmap-start", "id": 1, "time": 0, "at": 30 }, { "stage": "bitmap-returned", "id": 1, "time": 0, "at": 31 }, { "stage": "bitmap-ready", "id": 1, "time": 0, "at": 32 }, { "stage": "drawn", "id": 1, "time": 0, "at": 32 }, { "stage": "bitmap-start", "id": 2, "time": 0.040351, "at": 84 }, { "stage": "bitmap-returned", "id": 2, "time": 0.040351, "at": 84 }, { "stage": "bitmap-ready", "id": 2, "time": 0.040351, "at": 84 }, { "stage": "drawn", "id": 2, "time": 0.040351, "at": 86 }, { "stage": "bitmap-start", "id": 3, "time": 10, "at": 394 }, { "stage": "bitmap-returned", "id": 3, "time": 10, "at": 394 }, { "stage": "bitmap-ready", "id": 3, "time": 10, "at": 394 }, { "stage": "drawn", "id": 3, "time": 10, "at": 395 }, { "stage": "bitmap-start", "id": 4, "time": 10.000021, "at": 418 }, { "stage": "bitmap-returned", "id": 4, "time": 10.000021, "at": 419 }, { "stage": "bitmap-ready", "id": 4, "time": 10.000021, "at": 419 }, { "stage": "drawn", "id": 4, "time": 10.000021, "at": 422 }, { "stage": "bitmap-start", "id": 5, "time": 10.040477, "at": 454 }, { "stage": "bitmap-returned", "id": 5, "time": 10.040477, "at": 457 }, { "stage": "bitmap-ready", "id": 5, "time": 10.040477, "at": 457 }, { "stage": "drawn", "id": 5, "time": 10.040477, "at": 459 }, { "stage": "bitmap-start", "id": 6, "time": 10.080822, "at": 492 }, { "stage": "bitmap-returned", "id": 6, "time": 10.080822, "at": 495 }, { "stage": "bitmap-ready", "id": 6, "time": 10.080822, "at": 495 }, { "stage": "drawn", "id": 6, "time": 10.080822, "at": 497 }, { "stage": "bitmap-start", "id": 7, "time": 10.121577, "at": 537 }, { "stage": "bitmap-returned", "id": 7, "time": 10.121577, "at": 541 }, { "stage": "bitmap-ready", "id": 7, "time": 10.121577, "at": 541 }, { "stage": "drawn", "id": 7, "time": 10.121577, "at": 543 }, { "stage": "bitmap-start", "id": 8, "time": 10.162213, "at": 573 }, { "stage": "bitmap-returned", "id": 8, "time": 10.162213, "at": 576 }, { "stage": "bitmap-ready", "id": 8, "time": 10.162213, "at": 576 }, { "stage": "drawn", "id": 8, "time": 10.162213, "at": 578 }, { "stage": "bitmap-start", "id": 9, "time": 10.202572, "at": 612 }, { "stage": "bitmap-returned", "id": 9, "time": 10.202572, "at": 615 }, { "stage": "bitmap-ready", "id": 9, "time": 10.202572, "at": 615 }, { "stage": "drawn", "id": 9, "time": 10.202572, "at": 617 }, { "stage": "bitmap-start", "id": 10, "time": 10.243209, "at": 658 }, { "stage": "bitmap-returned", "id": 10, "time": 10.243209, "at": 660 }, { "stage": "bitmap-ready", "id": 10, "time": 10.243209, "at": 660 }, { "stage": "drawn", "id": 10, "time": 10.243209, "at": 662 } ], "samples": [ { "start": 154, "sent": 2, "received": 2, "copyStart": 154, "drawn": 155, "read": 155, "pixel": [ 255, 0, 0, 255 ] }, { "start": 169, "sent": 2, "received": 2, "copyStart": 169, "drawn": 169, "read": 169, "pixel": [ 255, 0, 0, 255 ] }, { "start": 459, "sent": 3, "received": 3, "copyStart": 459, "drawn": 459, "read": 459, "pixel": [ 0, 0, 255, 255 ] }, { "start": 479, "sent": 4, "received": 4, "copyStart": 479, "drawn": 483, "read": 483, "pixel": [ 0, 0, 255, 255 ] }, { "start": 603, "sent": 7, "received": 7, "copyStart": 603, "drawn": 606, "read": 606, "pixel": [ 0, 0, 255, 255 ] }, { "start": 610, "sent": 7, "received": 7, "copyStart": 610, "drawn": 612, "read": 612, "pixel": [ 0, 0, 255, 255 ] }, { "start": 729, "sent": 10, "received": 10, "copyStart": 729, "drawn": 730, "read": 730, "pixel": [ 0, 0, 255, 255 ] }, { "start": 736, "sent": 10, "received": 10, "copyStart": 736, "drawn": 737, "read": 737, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.243209, "frames": 10, "sent": 10, "received": 10, "skipped": 0, "maxOutstanding": 1, "quality": 6 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } } ] }, { "path": "refactor/.cache/jassub-native-fillrect.json", "sha256": "6d798a0efa32804c732a28802598b2e67678d3926e1be41077decb598d3d9f6b", "log": { "path": "refactor/.cache/jassub-native-fillrect.log", "sha256": "0e2a66a27aa26adb6f6b426dd5f67f7878ff4bb0ed3ea7497c2bc68ca41e9dfe" }, "resultsArchive": "refactor/.cache/jassub-native-fillrect-results", "sourceRevision": "final source in this checkpoint", "stats": { "startTime": "2026-09-15T10:21:29.228Z", "duration": 16159.668000000001, "expected": 9, "skipped": 0, "unexpected": 0, "flaky": 0 }, "cases": [ { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "chromium", "status": "passed", "duration": 750, "errors": [], "browser": "153.0.8010.12", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": true, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [ { "stage": "drawn", "id": 1, "time": 0.001127, "at": 154.19999998807907 }, { "stage": "drawn", "id": 2, "time": 10.007648, "at": 265.19999998807907 }, { "stage": "drawn", "id": 3, "time": 10.016605, "at": 314.5 }, { "stage": "drawn", "id": 4, "time": 10.051014, "at": 348.7999999523163 }, { "stage": "drawn", "id": 5, "time": 10.100365, "at": 399.7999999523163 }, { "stage": "drawn", "id": 6, "time": 10.149599, "at": 448.19999998807907 }, { "stage": "drawn", "id": 7, "time": 10.182436, "at": 481.0999999642372 } ], "samples": [ { "start": 229.9000000357628, "sent": 1, "received": 1, "copyStart": 230, "drawn": 230.60000002384186, "read": 230.80000001192093, "pixel": [ 255, 0, 0, 255 ] }, { "start": 235.70000004768372, "sent": 1, "received": 1, "copyStart": 235.80000001192093, "drawn": 236, "read": 236.30000001192093, "pixel": [ 255, 0, 0, 255 ] }, { "start": 331, "sent": 1, "received": 1, "copyStart": 331, "drawn": 331.30000001192093, "read": 331.4000000357628, "pixel": [ 255, 0, 0, 255 ] }, { "start": 448.30000001192093, "sent": 4, "received": 4, "copyStart": 448.4000000357628, "drawn": 448.5, "read": 448.7000000476837, "pixel": [ 0, 0, 255, 255 ] }, { "start": 457.10000002384186, "sent": 4, "received": 4, "copyStart": 457.10000002384186, "drawn": 457.10000002384186, "read": 457.30000001192093, "pixel": [ 0, 0, 255, 255 ] }, { "start": 573.7000000476837, "sent": 7, "received": 7, "copyStart": 573.7000000476837, "drawn": 575, "read": 575.7000000476837, "pixel": [ 0, 0, 255, 255 ] }, { "start": 582.3000000119209, "sent": 7, "received": 7, "copyStart": 582.3000000119209, "drawn": 583.2000000476837, "read": 584.2000000476837, "pixel": [ 0, 0, 255, 255 ] }, { "start": 589.2000000476837, "sent": 7, "received": 7, "copyStart": 589.2000000476837, "drawn": 589.8000000119209, "read": 590.7000000476837, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.232401, "frames": 7, "sent": 7, "received": 7, "skipped": 0, "maxOutstanding": 1, "quality": 135 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "chromium", "status": "passed", "duration": 671, "errors": [], "browser": "153.0.8010.12", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "published", "evidence": { "offscreen": true, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [ { "stage": "drawn", "id": 1, "time": 0.001294, "at": 162.79999995231628 }, { "stage": "drawn", "id": 2, "time": 10.004339, "at": 275.5999999642372 }, { "stage": "drawn", "id": 3, "time": 10.046559, "at": 360.39999997615814 }, { "stage": "drawn", "id": 4, "time": 10.080241, "at": 393 }, { "stage": "drawn", "id": 5, "time": 10.130588, "at": 443.0999999642372 }, { "stage": "drawn", "id": 6, "time": 10.163324, "at": 475.89999997615814 }, { "stage": "drawn", "id": 7, "time": 10.196307, "at": 508.89999997615814 } ], "samples": [ { "start": 212.20000004768372, "sent": 1, "received": 1, "copyStart": 212.4000000357628, "drawn": 212.9000000357628, "read": 213, "pixel": [ 255, 0, 0, 255 ] }, { "start": 217.9000000357628, "sent": 1, "received": 1, "copyStart": 217.9000000357628, "drawn": 217.9000000357628, "read": 218.30000001192093, "pixel": [ 255, 0, 0, 255 ] }, { "start": 321.9000000357628, "sent": 2, "received": 2, "copyStart": 321.9000000357628, "drawn": 322.30000001192093, "read": 322.80000001192093, "pixel": [ 0, 0, 255, 255 ] }, { "start": 336.4000000357628, "sent": 2, "received": 2, "copyStart": 336.4000000357628, "drawn": 336.5, "read": 336.7000000476837, "pixel": [ 0, 0, 255, 255 ] }, { "start": 452.80000001192093, "sent": 4, "received": 4, "copyStart": 452.80000001192093, "drawn": 454.2000000476837, "read": 454.80000001192093, "pixel": [ 0, 0, 255, 255 ] }, { "start": 458.10000002384186, "sent": 4, "received": 4, "copyStart": 458.10000002384186, "drawn": 458.7000000476837, "read": 459.4000000357628, "pixel": [ 0, 0, 255, 255 ] }, { "start": 563.5, "sent": 7, "received": 7, "copyStart": 563.5, "drawn": 564.2000000476837, "read": 565.6000000238419, "pixel": [ 0, 0, 255, 255 ] }, { "start": 569.3000000119209, "sent": 7, "received": 7, "copyStart": 569.3000000119209, "drawn": 569.9000000357628, "read": 570.8000000119209, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.218263, "frames": 7, "sent": 7, "received": 7, "skipped": 0, "maxOutstanding": 1, "quality": 135 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "chromium", "status": "passed", "duration": 785, "errors": [], "browser": "153.0.8010.12", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": true, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [ { "stage": "drawn", "id": 1, "time": 0.000247, "at": 62.80000001192093 }, { "stage": "drawn", "id": 2, "time": 10, "at": 158.19999998807907 }, { "stage": "drawn", "id": 3, "time": 10.018715, "at": 221.80000001192093 }, { "stage": "drawn", "id": 4, "time": 10.051546, "at": 254.10000002384186 }, { "stage": "drawn", "id": 5, "time": 10.102875, "at": 305.19999998807907 }, { "stage": "drawn", "id": 6, "time": 10.153039, "at": 355.30000001192093 }, { "stage": "drawn", "id": 7, "time": 10.20122, "at": 403.60000002384186 }, { "stage": "drawn", "id": 8, "time": 10.217934, "at": 420.4000000357628 }, { "stage": "drawn", "id": 9, "time": 10.268676, "at": 471 }, { "stage": "drawn", "id": 10, "time": 10.318655, "at": 520.9000000357628 }, { "stage": "drawn", "id": 11, "time": 10.336063, "at": 538.1999999880791 }, { "stage": "drawn", "id": 12, "time": 10.386585, "at": 589.1000000238419 }, { "stage": "drawn", "id": 13, "time": 10.434933, "at": 637.3000000119209 }, { "stage": "drawn", "id": 14, "time": 10.452726, "at": 654.8000000119209 } ], "samples": [ { "start": 95, "sent": 1, "received": 1, "copyStart": 95.10000002384186, "drawn": 95.60000002384186, "read": 95.80000001192093, "pixel": [ 255, 0, 0, 255 ] }, { "start": 99.40000003576279, "sent": 1, "received": 1, "copyStart": 99.40000003576279, "drawn": 99.60000002384186, "read": 100.20000004768372, "pixel": [ 255, 0, 0, 255 ] }, { "start": 183.20000004768372, "sent": 2, "received": 2, "copyStart": 183.30000001192093, "drawn": 183.60000002384186, "read": 183.9000000357628, "pixel": [ 0, 0, 255, 255 ] }, { "start": 190.30000001192093, "sent": 2, "received": 2, "copyStart": 190.30000001192093, "drawn": 190.4000000357628, "read": 190.70000004768372, "pixel": [ 0, 0, 255, 255 ] }, { "start": 306.4000000357628, "sent": 4, "received": 4, "copyStart": 306.4000000357628, "drawn": 308, "read": 308.80000001192093, "pixel": [ 0, 0, 255, 255 ] }, { "start": 311.80000001192093, "sent": 4, "received": 4, "copyStart": 311.80000001192093, "drawn": 312.5, "read": 313.2000000476837, "pixel": [ 0, 0, 255, 255 ] }, { "start": 415.4000000357628, "sent": 6, "received": 6, "copyStart": 415.4000000357628, "drawn": 416.5, "read": 417.60000002384186, "pixel": [ 0, 0, 255, 255 ] }, { "start": 679.2000000476837, "sent": 14, "received": 14, "copyStart": 679.2000000476837, "drawn": 679.8000000119209, "read": 680.8000000119209, "pixel": [ 0, 0, 255, 255 ] }, { "start": 684.1000000238419, "sent": 14, "received": 14, "copyStart": 684.2000000476837, "drawn": 684.9000000357628, "read": 685.9000000357628, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.468325, "frames": 14, "sent": 14, "received": 14, "skipped": 0, "maxOutstanding": 1, "quality": 141 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "firefox", "status": "passed", "duration": 1931, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": true, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [ { "stage": "drawn", "id": 1, "time": 0, "at": 102 }, { "stage": "drawn", "id": 2, "time": 0.04034, "at": 155 }, { "stage": "drawn", "id": 3, "time": 10, "at": 456 }, { "stage": "drawn", "id": 4, "time": 10.000022, "at": 489 }, { "stage": "drawn", "id": 5, "time": 10.040341, "at": 505 }, { "stage": "drawn", "id": 6, "time": 10.083278, "at": 556 }, { "stage": "drawn", "id": 7, "time": 10.123847, "at": 591 }, { "stage": "drawn", "id": 8, "time": 10.164306, "at": 628 }, { "stage": "drawn", "id": 9, "time": 10.204976, "at": 676 } ], "samples": [ { "start": 501, "sent": 1, "received": 1, "copyStart": 501, "drawn": 502, "read": 502, "pixel": [ 255, 0, 0, 255 ] }, { "start": 519, "sent": 2, "received": 2, "copyStart": 519, "drawn": 520, "read": 520, "pixel": [ 255, 0, 0, 255 ] }, { "start": 810, "sent": 2, "received": 2, "copyStart": 810, "drawn": 810, "read": 810, "pixel": [ 255, 0, 0, 255 ] }, { "start": 924, "sent": 6, "received": 6, "copyStart": 924, "drawn": 924, "read": 924, "pixel": [ 0, 0, 255, 255 ] }, { "start": 942, "sent": 6, "received": 6, "copyStart": 942, "drawn": 943, "read": 943, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1052, "sent": 9, "received": 9, "copyStart": 1052, "drawn": 1055, "read": 1055, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1061, "sent": 9, "received": 9, "copyStart": 1061, "drawn": 1062, "read": 1062, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1069, "sent": 9, "received": 9, "copyStart": 1069, "drawn": 1071, "read": 1071, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.248036, "frames": 9, "sent": 9, "received": 9, "skipped": 0, "maxOutstanding": 1, "quality": 6 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "firefox", "status": "passed", "duration": 1030, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "published", "evidence": { "offscreen": true, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [ { "stage": "drawn", "id": 1, "time": 0, "at": 30 }, { "stage": "drawn", "id": 2, "time": 0.040514, "at": 86 }, { "stage": "drawn", "id": 3, "time": 10, "at": 353 }, { "stage": "drawn", "id": 4, "time": 10.040582, "at": 406 }, { "stage": "drawn", "id": 5, "time": 10.081018, "at": 454 }, { "stage": "drawn", "id": 6, "time": 10.121477, "at": 489 }, { "stage": "drawn", "id": 7, "time": 10.163221, "at": 542 }, { "stage": "drawn", "id": 8, "time": 10.203652, "at": 574 }, { "stage": "drawn", "id": 9, "time": 10.24449, "at": 623 }, { "stage": "drawn", "id": 10, "time": 10.284972, "at": 654 }, { "stage": "drawn", "id": 11, "time": 10.325091, "at": 688 } ], "samples": [ { "start": 156, "sent": 2, "received": 2, "copyStart": 156, "drawn": 156, "read": 156, "pixel": [ 255, 0, 0, 255 ] }, { "start": 162, "sent": 2, "received": 2, "copyStart": 162, "drawn": 162, "read": 162, "pixel": [ 255, 0, 0, 255 ] }, { "start": 451, "sent": 3, "received": 3, "copyStart": 451, "drawn": 452, "read": 452, "pixel": [ 0, 0, 255, 255 ] }, { "start": 470, "sent": 4, "received": 3, "copyStart": 470, "drawn": 478, "read": 478, "pixel": [ 0, 0, 255, 255 ] }, { "start": 596, "sent": 6, "received": 6, "copyStart": 597, "drawn": 604, "read": 604, "pixel": [ 0, 0, 255, 255 ] }, { "start": 615, "sent": 7, "received": 7, "copyStart": 615, "drawn": 616, "read": 616, "pixel": [ 0, 0, 255, 255 ] }, { "start": 743, "sent": 10, "received": 10, "copyStart": 743, "drawn": 745, "read": 745, "pixel": [ 0, 0, 255, 255 ] }, { "start": 759, "sent": 11, "received": 11, "copyStart": 759, "drawn": 760, "read": 760, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.325091, "frames": 11, "sent": 11, "received": 11, "skipped": 0, "maxOutstanding": 1, "quality": 8 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "firefox", "status": "passed", "duration": 1003, "errors": [], "browser": "155.0", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": true, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [ { "stage": "drawn", "id": 1, "time": 0, "at": 34 }, { "stage": "drawn", "id": 2, "time": 0.040411, "at": 88 }, { "stage": "drawn", "id": 3, "time": 10, "at": 381 }, { "stage": "drawn", "id": 4, "time": 10.000022, "at": 406 }, { "stage": "drawn", "id": 5, "time": 10.040326, "at": 439 }, { "stage": "drawn", "id": 6, "time": 10.080451, "at": 481 }, { "stage": "drawn", "id": 7, "time": 10.123945, "at": 526 }, { "stage": "drawn", "id": 8, "time": 10.164429, "at": 564 }, { "stage": "drawn", "id": 9, "time": 10.205162, "at": 605 }, { "stage": "drawn", "id": 10, "time": 10.245373, "at": 644 }, { "stage": "drawn", "id": 11, "time": 10.285975, "at": 685 } ], "samples": [ { "start": 148, "sent": 2, "received": 2, "copyStart": 148, "drawn": 149, "read": 149, "pixel": [ 255, 0, 0, 255 ] }, { "start": 155, "sent": 2, "received": 2, "copyStart": 155, "drawn": 156, "read": 156, "pixel": [ 255, 0, 0, 255 ] }, { "start": 444, "sent": 3, "received": 3, "copyStart": 444, "drawn": 445, "read": 445, "pixel": [ 0, 0, 255, 255 ] }, { "start": 460, "sent": 4, "received": 3, "copyStart": 460, "drawn": 467, "read": 467, "pixel": [ 0, 0, 255, 255 ] }, { "start": 600, "sent": 7, "received": 7, "copyStart": 601, "drawn": 603, "read": 603, "pixel": [ 0, 0, 255, 255 ] }, { "start": 612, "sent": 7, "received": 7, "copyStart": 613, "drawn": 615, "read": 615, "pixel": [ 0, 0, 255, 255 ] }, { "start": 734, "sent": 10, "received": 10, "copyStart": 734, "drawn": 736, "read": 736, "pixel": [ 0, 0, 255, 255 ] }, { "start": 741, "sent": 11, "received": 11, "copyStart": 741, "drawn": 745, "read": 745, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.285975, "frames": 11, "sent": 11, "received": 11, "skipped": 0, "maxOutstanding": 1, "quality": 7 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: candidate", "project": "webkit", "status": "passed", "duration": 1813, "errors": [], "browser": "26.6", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "candidate", "evidence": { "offscreen": false, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [], "samples": [ { "start": 570, "sent": 2, "received": 2, "copyStart": 570, "drawn": 571, "read": 586, "pixel": [ 255, 0, 0, 255 ] }, { "start": 622, "sent": 2, "received": 2, "copyStart": 622, "drawn": 622, "read": 622, "pixel": [ 255, 0, 0, 255 ] }, { "start": 869, "sent": 7, "received": 7, "copyStart": 869, "drawn": 870, "read": 870, "pixel": [ 0, 0, 255, 255 ] }, { "start": 911, "sent": 8, "received": 8, "copyStart": 911, "drawn": 914, "read": 943, "pixel": [ 0, 0, 255, 255 ] }, { "start": 981, "sent": 9, "received": 9, "copyStart": 981, "drawn": 984, "read": 1010, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1156, "sent": 11, "received": 11, "copyStart": 1156, "drawn": 1158, "read": 1162, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1197, "sent": 11, "received": 11, "copyStart": 1197, "drawn": 1197, "read": 1198, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.3526667, "frames": 12, "sent": 12, "received": 12, "skipped": 0, "maxOutstanding": 1, "quality": 0 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: published", "project": "webkit", "status": "passed", "duration": 1967, "errors": [], "browser": "26.6", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "published", "evidence": { "offscreen": false, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [], "samples": [ { "start": 596, "sent": 2, "received": 2, "copyStart": 596, "drawn": 597, "read": 607, "pixel": [ 255, 0, 0, 255 ] }, { "start": 621, "sent": 2, "received": 2, "copyStart": 621, "drawn": 621, "read": 621, "pixel": [ 255, 0, 0, 255 ] }, { "start": 1119, "sent": 12, "received": 12, "copyStart": 1119, "drawn": 1120, "read": 1121, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1139, "sent": 13, "received": 13, "copyStart": 1139, "drawn": 1140, "read": 1150, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1325, "sent": 15, "received": 15, "copyStart": 1325, "drawn": 1328, "read": 1349, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1394, "sent": 16, "received": 16, "copyStart": 1394, "drawn": 1397, "read": 1430, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1470, "sent": 17, "received": 17, "copyStart": 1470, "drawn": 1472, "read": 1503, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": true, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.4753126, "frames": 18, "sent": 18, "received": 18, "skipped": 0, "maxOutstanding": 1, "quality": 0 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } }, { "title": "Native canvas and video control through seek/layout without JASSUB: native", "project": "webkit", "status": "passed", "duration": 1644, "errors": [], "browser": "26.6", "platform": "win32", "unhandledErrors": [], "maxSynchronousCallMs": null, "slowCalls": [], "slowSamples": [], "control": { "host": "native", "evidence": { "offscreen": false, "bitmap": false, "idleReadback": false, "singleFlight": false, "stages": [], "samples": [ { "start": 537, "sent": 3, "received": 3, "copyStart": 537, "drawn": 538, "read": 545, "pixel": [ 255, 0, 0, 255 ] }, { "start": 556, "sent": 4, "received": 4, "copyStart": 556, "drawn": 557, "read": 573, "pixel": [ 255, 0, 0, 255 ] }, { "start": 838, "sent": 17, "received": 17, "copyStart": 838, "drawn": 839, "read": 840, "pixel": [ 0, 0, 255, 255 ] }, { "start": 882, "sent": 18, "received": 18, "copyStart": 882, "drawn": 886, "read": 925, "pixel": [ 0, 0, 255, 255 ] }, { "start": 959, "sent": 19, "received": 19, "copyStart": 959, "drawn": 962, "read": 1031, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1187, "sent": 21, "received": 21, "copyStart": 1187, "drawn": 1189, "read": 1199, "pixel": [ 0, 0, 255, 255 ] }, { "start": 1213, "sent": 22, "received": 22, "copyStart": 1213, "drawn": 1215, "read": 1286, "pixel": [ 0, 0, 255, 255 ] } ], "errors": [], "coreLoaded": false, "pixel": [ 0, 0, 255, 255 ], "width": 1280, "height": 720, "time": 10.4579584, "frames": 23, "sent": 23, "received": 23, "skipped": 0, "maxOutstanding": 1, "quality": 0 }, "limitation": "Native video/frame callbacks and a minimal Worker painting opaque colors. Bitmap mode uses createImageBitmap/drawImage/close; otherwise fillRect. JASSUB wrapper, WASM and fonts are absent. The native host loads no ArtPlayer scripts. Capability fallback without transfer is main-thread fillRect, not offscreen or ImageBitmap verification." } } ] } ], "sourceFiles": [ { "path": "test/browser/jassub-platform.spec.js", "sha256": "e3e8b8da8ae86c6a02995a112ca6f5b9c0c41207fba6bbeb0bd38321ea19c6f4" }, { "path": "test/browser/player.html", "sha256": "4037c6eadc5da176f9dd67b2b517acb06c8cb2246c841316df26c660e55584b4" }, { "path": "test/browser/fixtures.js", "sha256": "313414b8958eb5b03a2da8595fa0bbf6bfdc01484373898c6cb7179545df175d" }, { "path": "playwright.config.js", "sha256": "df2384f5626252ec933725867e400ec22eb92bc5e6f04873059b32decf2f2d56" } ], "findings": [ "One outstanding task still stalls: queue concurrency is not required in the reproduced published-host failure.", "Measured synchronous createImageBitmap call and main-thread drawImage readback each take roughly ten seconds; the remaining Promise settlement takes milliseconds in the captured sample.", "The script-free native host in the intermediate boundary run also records a ten-second canvas readback despite an eventual-pixel pass. Green result alone is insufficient to infer no stall.", "The final diagnostic bounds readback durations at seven seconds across initial playback, seek and layout. This opt-in bound does not change production defaults.", "Idle readback passes once but changes observation scheduling. It is not a demonstrated runtime fix or evidence that screenshot/JASSUB failures have been resolved." ], "limitations": [ "No native stack, lock identity or exact browser root cause; no offscreen-default change, vendor patch, publication, physical-device or full-package acceptance.", "Worker and main-thread performance clocks have different origins. Durations are compared within each realm, not by subtracting cross-realm timestamps.", "Early source revisions differ as explicitly identified. Final source fingerprints only cover final/idle/fillRect runs. Raw traces remain local.", "Windows WebKit lacks canvas transfer; its cases exercise main-thread fillRect, not ImageBitmap or offscreen rendering." ] }