{ "schemaVersion": 1, "task": "PKG-DANMUKU-04", "status": "done", "capturedAt": "2026-09-13T11:18:49.542Z", "baselineCommit": "0b2efb07f", "units": [ { "format": "source", "tests": 104, "implementationDependent": 83, "commonSourceWorkerTests": 18, "commonFrozenNumericTests": 3, "file": "refactor/.cache/danmuku04-candidate-source-complete.log", "sha256": "f05f78034322803aa28e5eedadbf31e86de97ff8af96155158336bc68d341953" }, { "format": "main", "tests": 104, "implementationDependent": 83, "commonSourceWorkerTests": 18, "commonFrozenNumericTests": 3, "file": "refactor/.cache/danmuku04-candidate-main-complete.log", "sha256": "58f27d6d25e2f70a626b442494be833e14ca232b435b0f9d9b783a44926e3a8c" }, { "format": "legacy", "tests": 104, "implementationDependent": 83, "commonSourceWorkerTests": 18, "commonFrozenNumericTests": 3, "file": "refactor/.cache/danmuku04-candidate-legacy-complete.log", "sha256": "b626d2a2069dfa7f9a608c7e2c83c8b910236df2ec4586117d68892ac97d6204" } ], "browsers": [ { "format": "source", "tests": 66, "file": "refactor/.cache/danmuku04-browser-source-numeric-final/report.json", "sha256": "e31066f57d89fa987012e06db83112a0ad0b3a47e668402ec877321832b9c89a", "run": { "file": "refactor/.cache/danmuku04-browser-source-numeric-final/run.log", "sha256": "2e0a30a909fd07daf08bb532739b85c6635b5fa5dc39c53fac302cf989f942e1" }, "spec": { "file": "refactor/.cache/danmuku04-browser-source-numeric-final/danmuku-scheduler.spec.js", "sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e" }, "archiveResultsRoot": "refactor/.cache/danmuku04-browser-source-numeric-final/results", "originalResultsRoot": "refactor/.cache/browser/results", "versions": [ "chromium: 153.0.8010.12", "firefox: 155.0", "webkit: 26.6" ], "cases": [ { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "chromium", "durationMs": 1594, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "chromium", "durationMs": 1331, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.907252 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/31792b31-5dc6-454d-a9e4-5c8b37ccfac0", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "chromium", "durationMs": 1306, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.898323 }, { "index": 0, "event": "stop", "time": 0.898323 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/7871692b-932d-4d8e-b806-fca0b9362426", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2385, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2369, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2252, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 1307, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "durationMs": 1389, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1662, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "durationMs": 2290, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.7918090820312, "next": 602.7918090820312, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "durationMs": 4241, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "chromium", "durationMs": 1301, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "chromium", "durationMs": 1313, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.908902 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/09c0a843-b399-472c-9aa6-50c11c27a0ff", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "chromium", "durationMs": 1303, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.89769 }, { "index": 0, "event": "stop", "time": 0.89769 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/fd03c655-a488-4c87-bcec-fc044f33771f", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2506, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 1808, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2524, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 1345, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "durationMs": 1373, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1576, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "durationMs": 2437, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.788818359375, "next": 602.788818359375, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "durationMs": 4210, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "firefox", "durationMs": 3172, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "firefox", "durationMs": 1888, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.905723 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/e8b3fd31-4ba6-4a93-b5e9-f241eb4f6582", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "firefox", "durationMs": 1686, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.874999 }, { "index": 0, "event": "stop", "time": 0.874999 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/7b7739a5-842b-44b3-acdb-38bce3ef999d", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2670, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2044, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2636, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 1792, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "durationMs": 1703, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2878, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "durationMs": 2923, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 601.3333129882812, "next": 601.3333129882812, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "durationMs": 4910, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "firefox", "durationMs": 1806, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "firefox", "durationMs": 1871, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.901248 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/d3ccaf64-24f7-412d-95f4-1f046a39eed1", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "firefox", "durationMs": 1561, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.874999 }, { "index": 0, "event": "stop", "time": 0.874999 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/fb84e1d6-1169-49e9-9a95-4248cef05bf3", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2900, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2247, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 3923, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 1570, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "durationMs": 1764, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 1708, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "durationMs": 2967, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 601.2999877929688, "next": 601.2999877929688, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "durationMs": 4996, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "webkit", "durationMs": 2506, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "webkit", "durationMs": 2816, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.5477604 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/8887345c-74d7-4df2-9db3-33ad1b6b63ed", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "webkit", "durationMs": 2744, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.4936346 }, { "index": 0, "event": "stop", "time": 0.4937073 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/8abdf89e-4053-43e1-b126-18156c22a4e3", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3964, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3803, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3585, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2973, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "durationMs": 3650, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4195, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "durationMs": 5271, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 609.4124755859375, "next": 609.4124755859375, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "durationMs": 8351, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "webkit", "durationMs": 2581, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "webkit", "durationMs": 2693, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.5058696 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/377e84c9-5640-420c-9ebc-bcebd222cf0a", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "webkit", "durationMs": 2799, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.5110266 }, { "index": 0, "event": "stop", "time": 0.5111032 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/63387ef8-4a3a-4793-af0f-16188ec8be58", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3630, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2881, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3943, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2839, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "durationMs": 3184, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3994, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "durationMs": 5486, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 613.9625244140625, "next": 613.9625244140625, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "durationMs": 8337, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "in-memory source UMD", "sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] } ] }, { "format": "main", "tests": 66, "file": "refactor/.cache/danmuku04-browser-main-numeric-final/report.json", "sha256": "5a77e4c6e59c7f78702b120c04b64ce3740c653a7751d55ada373646ea103533", "run": { "file": "refactor/.cache/danmuku04-browser-main-numeric-final/run.log", "sha256": "dffddff7b686591aac8902cdd2e8d8b5ac3c1e1c907ddecadcb5cee6a9fa5477" }, "spec": { "file": "refactor/.cache/danmuku04-browser-main-numeric-final/danmuku-scheduler.spec.js", "sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e" }, "archiveResultsRoot": "refactor/.cache/danmuku04-browser-main-numeric-final/results", "originalResultsRoot": "refactor/.cache/browser/results", "versions": [ "chromium: 153.0.8010.12", "firefox: 155.0", "webkit: 26.6" ], "cases": [ { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "chromium", "durationMs": 1409, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "chromium", "durationMs": 1303, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.899133 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/6c9706bb-601b-42de-9d19-a9863257d58a", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "chromium", "durationMs": 1347, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.899634 }, { "index": 0, "event": "stop", "time": 0.899634 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/4cf3e456-5043-4049-9fdc-542c77e91532", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2336, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2264, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2225, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 1295, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "durationMs": 1364, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1511, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "durationMs": 2418, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 599.8820190429688, "next": 599.8820190429688, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "durationMs": 4146, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "chromium", "durationMs": 1290, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "chromium", "durationMs": 1270, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.897016 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/a28799c8-5f27-420f-8a8d-2c50ff8a8e95", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "chromium", "durationMs": 1307, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.907498 }, { "index": 0, "event": "stop", "time": 0.907498 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/23a88b13-af5c-4769-a3ab-29df34b9738b", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2424, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2361, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2438, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 1325, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "durationMs": 1349, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1476, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "durationMs": 2377, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 601.33740234375, "next": 601.33740234375, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "durationMs": 4140, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "firefox", "durationMs": 2349, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "firefox", "durationMs": 1681, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.90678 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/92bd0b6a-c128-420f-91b8-d107541e3357", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "firefox", "durationMs": 1632, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.872461 }, { "index": 0, "event": "stop", "time": 0.872461 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/f2c7a295-89ef-4802-877e-099982efdac9", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2740, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2088, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2658, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 1205, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "durationMs": 1903, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3024, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "durationMs": 2654, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 601.3333129882812, "next": 601.3333129882812, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "durationMs": 4660, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "firefox", "durationMs": 1697, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "firefox", "durationMs": 1796, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.919782 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/7f9fadf7-14b3-4712-921f-57c4968893f1", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "firefox", "durationMs": 1772, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.874999 }, { "index": 0, "event": "stop", "time": 0.874999 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/fd38ba4c-7a2d-48a5-b0d0-65c28e092b5c", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2838, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2126, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 3733, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 1563, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "durationMs": 1622, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 1769, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "durationMs": 2992, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.75, "next": 602.75, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "durationMs": 4773, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "webkit", "durationMs": 2516, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "webkit", "durationMs": 2160, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.5270586 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/f6a43b1c-f948-44ac-9f8c-034aac7d3a57", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "webkit", "durationMs": 2483, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.5209417 }, { "index": 0, "event": "stop", "time": 0.5210177 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/bba3ffdd-5710-4bd8-b5be-fd9cbd514a34", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3801, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2857, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3446, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2259, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "durationMs": 3023, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3108, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "durationMs": 5045, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 574.0625, "next": 574.0625, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "durationMs": 7930, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "webkit", "durationMs": 2282, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "webkit", "durationMs": 2565, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.9559543 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/8c0e38c5-06cb-4041-b2d3-b93322009b72", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "webkit", "durationMs": 2040, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.4843741 }, { "index": 0, "event": "stop", "time": 0.4844099 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/3ccfde56-4324-4b8b-8f99-36f1667ba9a5", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 4025, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3258, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3269, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2932, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "durationMs": 3063, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3197, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "durationMs": 4512, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 617.9000244140625, "next": 617.9000244140625, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "durationMs": 7496, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] } ] }, { "format": "legacy", "tests": 66, "file": "refactor/.cache/danmuku04-browser-legacy-numeric-final/report.json", "sha256": "ee02ab34e771542ba228a958b8052a1df5f2c0e54bf7468915332b1a9d833b50", "run": { "file": "refactor/.cache/danmuku04-browser-legacy-numeric-final/run.log", "sha256": "41ba9761a9f953a4905c53cf1f04f5f9e1a5f900eb2f354d052c81ecd8bd58e9" }, "spec": { "file": "refactor/.cache/danmuku04-browser-legacy-numeric-final/danmuku-scheduler.spec.js", "sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e" }, "archiveResultsRoot": "refactor/.cache/danmuku04-browser-legacy-numeric-final/results", "originalResultsRoot": "refactor/.cache/browser/results", "versions": [ "chromium: 153.0.8010.12", "firefox: 155.0", "webkit: 26.6" ], "cases": [ { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "chromium", "durationMs": 1442, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "chromium", "durationMs": 1312, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.910342 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/f95625d3-da3c-43cd-bd5e-44485457b5c8", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "chromium", "durationMs": 1288, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.900038 }, { "index": 0, "event": "stop", "time": 0.900038 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/6c1db542-01cf-4aba-91bb-0d59a367a38f", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2447, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2256, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2224, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 1275, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "durationMs": 1341, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1605, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "durationMs": 2419, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.7915649414062, "next": 602.7915649414062, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "durationMs": 4165, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "chromium", "durationMs": 1267, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "chromium", "durationMs": 1243, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.893598 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/019300e7-47a5-4891-a112-1bd126940bec", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "chromium", "durationMs": 1289, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.904498 }, { "index": 0, "event": "stop", "time": 0.904498 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/53f97fbd-4b03-443f-b2b0-4808abd97a28", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2405, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2320, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 2436, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "chromium", "durationMs": 1289, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "durationMs": 1343, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1522, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "durationMs": 2245, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.7899780273438, "next": 602.7899780273438, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "durationMs": 4116, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "firefox", "durationMs": 2506, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "firefox", "durationMs": 1743, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.874999 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/e61312b7-89bc-4e2b-acf2-de1a93430333", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "firefox", "durationMs": 1610, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.875433 }, { "index": 0, "event": "stop", "time": 0.875433 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/f54b5650-4ad7-4e5e-a9be-38ed500e72b4", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2632, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2612, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2662, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 1548, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "durationMs": 1646, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2685, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "durationMs": 2657, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.7999877929688, "next": 602.7999877929688, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "durationMs": 4784, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "firefox", "durationMs": 1654, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "firefox", "durationMs": 1510, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.872581 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/43f7405f-e3b1-44d7-a839-608da97ba808", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "firefox", "durationMs": 1566, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.916666 }, { "index": 0, "event": "stop", "time": 0.916666 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/07c5a8d4-40f8-411c-8309-ac7f3feb3375", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2299, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 2645, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 3635, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "firefox", "durationMs": 1638, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "durationMs": 1578, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 1643, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "durationMs": 2696, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 601.3333129882812, "next": 601.3333129882812, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "durationMs": 4769, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "webkit", "durationMs": 2279, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "webkit", "durationMs": 2510, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.5531477 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/3fb921b4-0608-4f22-9250-eb324ffb5b34", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "webkit", "durationMs": 2413, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.5130193 }, { "index": 0, "event": "stop", "time": 0.5130772 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/afc7addf-b473-4964-9e75-b0b9b697c06f", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3917, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3696, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3504, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2188, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "durationMs": 2488, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3636, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "durationMs": 5298, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 572.4874877929688, "next": 572.4874877929688, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "durationMs": 7204, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback", "browser": "webkit", "durationMs": 2215, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-numeric-compatibility", "value": { "expected": 0.5, "inputTime": 0.5, "queueTime": 0.5, "isNaN": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener", "browser": "webkit", "durationMs": 2325, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "destroy", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": true, "events": [ { "index": 0, "event": "error", "time": 0.4766665 }, { "index": 0, "event": "stop", "time": 0 }, { "index": 0, "event": "destroy", "time": 0 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/4486a410-7b34-430f-8464-ff4b20cd45bf", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener", "browser": "webkit", "durationMs": 2206, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-recovery-reentry", "value": { "action": "stop", "sameOwner": true, "rowState": "stop", "isStop": true, "isDestroy": false, "events": [ { "index": 0, "event": "error", "time": 0.5243332 }, { "index": 0, "event": "stop", "time": 0.5243703 } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/4939d7b4-cfac-466a-b775-d95f1411d6e7", "requests": [ { "type": "getDanmuTop", "target": { "mode": 1, "height": 23, "speed": 90 }, "visibles": [], "antiOverlap": true, "clientWidth": 640, "clientHeight": 360, "marginBottom": 10, "marginTop": 10, "id": 1 } ], "replies": [ { "id": 1, "result": 10 } ], "terminated": 1, "errors": [ "controlled track failure" ] } ], "fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [ "controlled track failure" ] } ], "failures": [ "Error: controlled track failure", "Error: controlled track reconstruction failure" ] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3896, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "pause", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2629, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "reset", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 3577, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "seek", "before": { "requests": [ 1 ], "visible": [ "fresh-after-cancel" ] }, "after": [ "fresh-after-cancel" ], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work", "browser": "webkit", "durationMs": 2440, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-native-cancel", "value": { "action": "destroy", "before": { "requests": [ 0 ], "visible": [] }, "after": [], "cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active." } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "durationMs": 2818, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "modes", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 4, "replies": 4, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3670, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "durationMs": 5009, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "playback", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 578, "next": 578, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": true, "original": { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" }, "extraNodes": [], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 3, "replies": 3, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "durationMs": 7436, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "settings", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 0, "replies": 0, "terminated": 1, "errors": [] }, { "requests": 1, "replies": 1, "terminated": 1, "errors": [] } ], "failures": [] } } ] } ] }, { "format": "dense-main", "tests": 30, "file": "refactor/.cache/danmuku04-browser-dense-main-numeric-final/report.json", "sha256": "5fdf278fac810a7abf22970932a9f140316b77af23d74b8e92606bbcfe290976", "run": { "file": "refactor/.cache/danmuku04-browser-dense-main-numeric-final/run.log", "sha256": "9dd7c9bcbb94ce6f1139907b88336c2b5ce01b1c1870807aa8c7fbb14f86cb0b" }, "spec": { "file": "refactor/.cache/danmuku04-browser-dense-main-numeric-final/danmuku-scheduler.spec.js", "sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e" }, "archiveResultsRoot": "refactor/.cache/danmuku04-browser-dense-main-numeric-final/results", "originalResultsRoot": "refactor/.cache/browser/results", "versions": [ "chromium: 153.0.8010.12", "firefox: 155.0", "webkit: 26.6" ], "cases": [ { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1627, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1641, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1643, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1660, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1542, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1588, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1650, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1665, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1542, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1629, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2351, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3003, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3303, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3321, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3018, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2207, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3000, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2978, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2915, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3148, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3719, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3767, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3589, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3072, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4284, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3704, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4218, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3659, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3778, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3691, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] } ] }, { "format": "dense-legacy", "tests": 30, "file": "refactor/.cache/danmuku04-browser-dense-legacy-numeric-final/report.json", "sha256": "ddd9e5d8a986e96f50bb6607444c5f50376aa746fd70bf64d010aafb96a3fba7", "run": { "file": "refactor/.cache/danmuku04-browser-dense-legacy-numeric-final/run.log", "sha256": "68f6e7895933021f2f63458803f40affb282ec3493f50b0fcf157aaee9ab7301" }, "spec": { "file": "refactor/.cache/danmuku04-browser-dense-legacy-numeric-final/danmuku-scheduler.spec.js", "sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e" }, "archiveResultsRoot": "refactor/.cache/danmuku04-browser-dense-legacy-numeric-final/results", "originalResultsRoot": "refactor/.cache/browser/results", "versions": [ "chromium: 153.0.8010.12", "firefox: 155.0", "webkit: 26.6" ], "cases": [ { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1785, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1829, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1819, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1693, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1698, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1684, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1679, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1738, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1963, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "durationMs": 1758, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2987, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3089, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2928, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3068, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3033, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3241, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2783, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2963, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 2982, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "durationMs": 3477, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4208, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4244, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4385, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4070, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3820, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4302, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4235, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3945, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 3990, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] }, { "title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "durationMs": 4023, "observations": [ { "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "format": "candidate", "artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "media": "/test/pattern.mp4", "scenario": "density", "worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked", "heatmap": false } }, { "name": "danmuku-dense-tracks", "value": [ { "id": "dense-0", "mode": "1", "state": "stop", "text": "TRACK 0", "x": 285, "y": 10, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-1", "mode": "1", "state": "stop", "text": "TRACK 1", "x": 285, "y": 33, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-2", "mode": "1", "state": "stop", "text": "TRACK 2", "x": 285, "y": 56, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-3", "mode": "1", "state": "stop", "text": "TRACK 3", "x": 285, "y": 79, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-4", "mode": "1", "state": "stop", "text": "TRACK 4", "x": 285, "y": 102, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" }, { "id": "dense-5", "mode": "1", "state": "stop", "text": "TRACK 5", "x": 285, "y": 125, "width": 70, "height": 22.5, "visibility": "visible", "display": "block", "transition": "", "opacity": "1" } ] }, { "name": "danmuku-worker-and-lifecycle", "value": { "workers": [ { "requests": 6, "replies": 6, "terminated": 1, "errors": [] } ], "failures": [] } } ] } ] } ], "regressions": [ { "file": "refactor/.cache/danmuku04-scheduler-initial.log", "sha256": "5c85015ab899f73f514e83b881005c4d002bdc9c5418ad0ab9fbf1bbaa85cbb3", "tests": 18, "passed": 6, "failed": 12, "cause": "Initial candidate scheduler ownership, cancellation and request regression tests before implementation." }, { "file": "refactor/.cache/danmuku04-scheduler-reentry-all-red.log", "sha256": "37194aa46c183f67a0bcda9e50394766971e1c8c2f66301a5e07a1839b8cffaf", "tests": 32, "passed": 27, "failed": 5, "cause": "Saved actual pre-guard main artifact: synchronous error listener destroy/stop/reset/hide/nested start leaves obsolete start continuation." }, { "file": "refactor/.cache/danmuku04-time-nan-red.log", "sha256": "4492a27bbe61b2718ab586a11c7617ae572a2043c8e9aeb741d145a1b1d74ed8", "tests": 24, "passed": 23, "failed": 1, "cause": "Frozen source/main/legacy preserve accepted NaN fallback. Intermediate task03 candidate regressed NaN while fixing explicit zero." } ], "nativeBefore": { "file": "refactor/.cache/danmuku04-browser-before/report.json", "sha256": "ef2b218f71737d379a5fbc9d93d2c0e11f38a556f1e3221efa5164535e80c0e0", "tests": 8, "passed": 4, "failed": 4, "source": "Task03 actual main, Chromium, two cores; extra same-ID requests and unused duplicate DOM. This snapshot did not itself overlap; task02 had separate actual overlap evidence." }, "checks": [ { "file": "refactor/.cache/danmuku04-build-numeric-final.log", "sha256": "f679e4dd9e03605ecfefb68e8b973acb05a0b891f0cedd9000b73f9e6fe4e8f7" }, { "file": "refactor/.cache/danmuku04-lint-complete.log", "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } ], "typecheck": { "file": "refactor/.cache/danmuku03-typecheck.log", "sha256": "33ced90b0fff4881e9a4477aca1e8c51a5715b8170f71c860518bbdff1c4e606", "reusedFromTask": "PKG-DANMUKU-03", "explanation": "No production TS or public declaration changes in task04. Previous complete check covers 366 migrated TS source files and consumers, not the remaining JS." }, "buildRetry": { "failure": { "file": "refactor/.cache/danmuku04-build-copy-failure.log", "sha256": "9cf9f9b99ce59ba7521b67d4bafcc3163e2a931ea29a79a4a8013facec8d6a1f" }, "serialRetry": { "file": "refactor/.cache/danmuku04-build-final.log", "sha256": "a4ad0ed8d61452d5af294359c5afcb5866227e28a490946ab91b3f2f8da0dc69" }, "identity": { "file": "refactor/.cache/danmuku04-build-identity.log", "sha256": "904d45eb95129f13f0ccce541fea75496be37291a2caa66cf9c2ec06f9b72cc3" }, "explanation": "Windows UNKNOWN copy error during a browser run; serial retry succeeded and matched already-tested main/legacy bytes. Later numeric fix received another complete normal build and its own final matrices." }, "sizes": [ { "file": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c", "beforeBytes": 55126, "afterBytes": 59100, "deltaBytes": 3974, "beforeGzipBytes": 15687, "afterGzipBytes": 16799 }, { "file": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368", "beforeBytes": 56172, "afterBytes": 60243, "deltaBytes": 4071, "beforeGzipBytes": 16050, "afterGzipBytes": 17160 }, { "file": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs", "sha256": "bb96eb930c4ed9910cf4eca65b3a0fcb85cf6c6a49429f5c9c437490a4680ce3", "beforeBytes": 80876, "afterBytes": 87065, "deltaBytes": 6189, "beforeGzipBytes": 19534, "afterGzipBytes": 20852 } ], "inputs": [ { "path": "package.json", "algorithm": "sha256-lf", "sha256": "b85c8ca62eaab7b400f613620908274c6e02551f2987752220443a00c9de703c" }, { "path": "packages/artplayer-plugin-danmuku/ARCHITECTURE.md", "algorithm": "sha256-lf", "sha256": "5a6111ec42c5e930786b9a01369f4c1a63e43e8d536f818f23869fd05f3765cf" }, { "path": "packages/artplayer-plugin-danmuku/README.md", "algorithm": "sha256-lf", "sha256": "6111a8d52b68ee86e43383ee8686ba0676f57741d5da733a400b29a596dba8d7" }, { "path": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", "algorithm": "sha256-lf", "sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c" }, { "path": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js", "algorithm": "sha256-lf", "sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368" }, { "path": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs", "algorithm": "sha256-lf", "sha256": "bb96eb930c4ed9910cf4eca65b3a0fcb85cf6c6a49429f5c9c437490a4680ce3" }, { "path": "packages/artplayer-plugin-danmuku/src/bilibili-parser.js", "algorithm": "sha256-lf", "sha256": "46720235c8b9f986ecdda436a16b03a8215e4f3dc0151c16df17dca68f0302bc" }, { "path": "packages/artplayer-plugin-danmuku/src/bilibili.js", "algorithm": "sha256-lf", "sha256": "39310fb20dfe5f98a492460d7a9f7d3078367ce8f70e383d89f9dc7029d297cc" }, { "path": "packages/artplayer-plugin-danmuku/src/config.js", "algorithm": "sha256-lf", "sha256": "33b70af031f5a5df0b93bc2dcef74b32ce4674b6a248476dc3a6f65a29deeb1c" }, { "path": "packages/artplayer-plugin-danmuku/src/danmuku.js", "algorithm": "sha256-lf", "sha256": "8e1d22d382ca6ec14945e77384e78f6ff8bd01506736222d747c077788ac888b" }, { "path": "packages/artplayer-plugin-danmuku/src/heatmap.js", "algorithm": "sha256-lf", "sha256": "3cf77ff82f62958728445eaf9c044bc4cbcf04a4ea82e753e7c44e59128c16f4" }, { "path": "packages/artplayer-plugin-danmuku/src/img/check_off.svg", "algorithm": "sha256-lf", "sha256": "8cb8e31da1bf7b5be8f4065920b46e1988755910218fb121dd3d9649c50156cf" }, { "path": "packages/artplayer-plugin-danmuku/src/img/check_on.svg", "algorithm": "sha256-lf", "sha256": "c5a34f56c56b0f696b4e3740c73e803076b5bfdfdee89714793118fc4c6baa84" }, { "path": "packages/artplayer-plugin-danmuku/src/img/config.svg", "algorithm": "sha256-lf", "sha256": "bbd7c2952740ac8220f396477eaca3b01f6c249866d880ece38c565cc77c5e36" }, { "path": "packages/artplayer-plugin-danmuku/src/img/mode_0_off.svg", "algorithm": "sha256-lf", "sha256": "fe9e5e1745e8206a4eda0d0ac30815f301c37acccec2564bbda51c1fa4bd1e1e" }, { "path": "packages/artplayer-plugin-danmuku/src/img/mode_0_on.svg", "algorithm": "sha256-lf", "sha256": "96720a81f0315caf6c70664de934e49d22e6dd070a9f6ca1fec2a9a96af4d138" }, { "path": "packages/artplayer-plugin-danmuku/src/img/mode_1_off.svg", "algorithm": "sha256-lf", "sha256": "3ccd22bf3648dc260cd1d0b6a60a9226a853764ae20efb8fe9c940cd856c81b2" }, { "path": "packages/artplayer-plugin-danmuku/src/img/mode_1_on.svg", "algorithm": "sha256-lf", "sha256": "2238ca27e3c7c4c687d10de13b794d8be70ae1c5ba9225ebad27f251cfe5f12a" }, { "path": "packages/artplayer-plugin-danmuku/src/img/mode_2_off.svg", "algorithm": "sha256-lf", "sha256": "31423e3d67c00839adc77dd871dc1da55f77c8b83b5a37b445e4b4c3f46c6d6d" }, { "path": "packages/artplayer-plugin-danmuku/src/img/mode_2_on.svg", "algorithm": "sha256-lf", "sha256": "96b4c9db8d5055c8777fda74cb5e0f32b3e12e62a1e0bacbf75d2088f4505e2f" }, { "path": "packages/artplayer-plugin-danmuku/src/img/off.svg", "algorithm": "sha256-lf", "sha256": "4e6743ee28002e16117caf47ea3bffb34ca75bcc4118744b4ee720829ae3b563" }, { "path": "packages/artplayer-plugin-danmuku/src/img/on.svg", "algorithm": "sha256-lf", "sha256": "cc0fb7048bff6dc3f14a17ed549209c67e9bc34368cb1571e0abd8035c7b59b7" }, { "path": "packages/artplayer-plugin-danmuku/src/img/style.svg", "algorithm": "sha256-lf", "sha256": "9034ea7b9a214a6d4c086c02cf85f42b1c4487cec0906e919fc91e99dfff529a" }, { "path": "packages/artplayer-plugin-danmuku/src/index.js", "algorithm": "sha256-lf", "sha256": "956e30c857dbb15147506924308c363dcc4a07bcf1bb97ce3fc436afa366cd9c" }, { "path": "packages/artplayer-plugin-danmuku/src/input.js", "algorithm": "sha256-lf", "sha256": "6740c347018290de2a8d90925148f63ec005d294426ed8d3192e69313171b8fc" }, { "path": "packages/artplayer-plugin-danmuku/src/queue.js", "algorithm": "sha256-lf", "sha256": "d566e312686fa486daee0c1618766c41cfb074c04bf872b7bf1bb783a7c57595" }, { "path": "packages/artplayer-plugin-danmuku/src/scheduler.js", "algorithm": "sha256-lf", "sha256": "cc158ab266c96323d99230183c47e60f162087daa15c8374a73b8d619e305cb6" }, { "path": "packages/artplayer-plugin-danmuku/src/setting.js", "algorithm": "sha256-lf", "sha256": "ffbaa808551410dc015a5f3ffe4e091f5e1b1bb45eee2d9790cf15cbf82eace2" }, { "path": "packages/artplayer-plugin-danmuku/src/style.less", "algorithm": "sha256-lf", "sha256": "7148a1bd32f5d3d743db4a4ae8d39dc0e1406d2bff18df42cbb20e6705d5fed9" }, { "path": "packages/artplayer-plugin-danmuku/src/worker-client.js", "algorithm": "sha256-lf", "sha256": "aca4c442a5722787b28d6b4b0aaa50521fe71c4c0e63e17636dc5e2268cbd925" }, { "path": "packages/artplayer-plugin-danmuku/src/worker.js", "algorithm": "sha256-lf", "sha256": "05995a16cd728dd5ca513587a777b4be9012b8cc4b77e3a46fed1826e6769c53" }, { "path": "playwright.config.js", "algorithm": "sha256-lf", "sha256": "df2384f5626252ec933725867e400ec22eb92bc5e6f04873059b32decf2f2d56" }, { "path": "test/browser/danmuku-scheduler.spec.js", "algorithm": "sha256-lf", "sha256": "506cc9dc75be822ea79d51c7e8fe6a68d526b41f26af626401d1d60329cbb724" }, { "path": "test/browser/fixtures.js", "algorithm": "sha256-lf", "sha256": "313414b8958eb5b03a2da8595fa0bbf6bfdc01484373898c6cb7179545df175d" }, { "path": "test/browser/server.mjs", "algorithm": "sha256-lf", "sha256": "1406fac75eabc83b987e79ec7b5f97a948b27770bfd5f5290d7cb9155196f08f" }, { "path": "test/danmuku-input.test.js", "algorithm": "sha256-lf", "sha256": "bccd24096dabd5270ba3624dc071d56a492cf44b3045c78ae261d4510ae6e712" }, { "path": "test/danmuku-parser.test.js", "algorithm": "sha256-lf", "sha256": "ae2dae43f447c1361662f70e90009c8978e1d96bbb133b7b07baafc9d765d70e" }, { "path": "test/danmuku-scheduler.test.js", "algorithm": "sha256-lf", "sha256": "7c1c3d81c4cc37f1ddcd18f3c35c8825061887ada6e1f395cb4d8efb73f66727" }, { "path": "test/danmuku-worker-client.test.js", "algorithm": "sha256-lf", "sha256": "55d7754224afa5567cafd880c28d923b9ff0e0661ecfb4ea1d9c923ddb84ae3b" }, { "path": "test/helpers/danmuku-candidate.js", "algorithm": "sha256-lf", "sha256": "215aa631baa36f2434e95fc11f178fd9a4cca71834db0dd5e93d06356674445a" } ], "decisions": [ "Single pending RAF or async frame, generation and node ownership after awaits/callbacks.", "Unique correlated Worker IDs and pending settlement on cancellation/failure/disposal; unchanged actual track algorithm.", "Preserve public facade and ordinary repeated start/stop events, timing, pool order, callback receiver and configuration semantics.", "Guard recovery reentry using generation and start-attempt identity as well as lifecycle/fault state.", "Restore legacy NaN currentTime+0.5 fallback while retaining corrected zero and old positive/negative Infinity behavior." ], "limitations": [ "JS responsibility separation; full owned TS and root/runtime installed declarations remain task06.", "Synthetic long-clock regression is not an hours-long native workload or heap benchmark; package stability acceptance remains task07.", "Native recovery fault events and constructor failure use explicit seams; not real CSP/SDK constructor-failure coverage.", "ESM built and dist/docs bytes match; ESM is not counted as an additional runtime-tested format.", "Settings external DOM/timer/late-send and heatmap issues remain open for task05.", "Windows WebKit is not physical Safari. Local fixture video does not establish arbitrary remote content compatibility.", "Intermediate 48/60 native matrices passed before later edge-case discoveries; final acceptance is only the five numeric-final archives listed above." ], "releaseReady": false }