{ "schemaVersion": 1, "task": "PKG-DANMUKU-02", "status": "done", "capturedAt": "2026-09-13T10:02:24.536Z", "frozenSourceCommit": "b0cfbfe3a09a84a295a257e45e4577847588d1cb", "controlled": { "file": "refactor/baselines/danmuku-failures-validation.json", "sha256": "6558273bbb57ed8d307d566be5ecd6806cd3eb03a597526e9e242fd67c73f123", "tests": 42, "parentReview": { "file": "refactor/.cache/danmuku02-parent-controlled.log", "sha256": "0ab4991d032e4160a5ff6fd388c170d877368a1c3283e58ce0511dbe273fa405" } }, "browsers": [ { "file": "refactor/.cache/danmuku02-browser-three-final/report.json", "sha256": "c0d1056af6b6dc382af4c6c1738ed5551db8f1b8de55028109051ccb23866e3c", "workers": 3, "expected": 48, "unexpected": 0, "skipped": 0, "versions": [ "chromium: 153.0.8010.12", "firefox: 155.0", "webkit: 26.6" ], "observations": [ { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.989479, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "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" } ] }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0.942453, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 601.3364868164062, "next": 601.3364868164062, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 3.632016, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.9111, "rate": 1, "player": { "x": 8, "y": 295, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.955448, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "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" } ] }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0.915711, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.8008422851562, "next": 602.8008422851562, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 3.597092, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.91682, "rate": 1, "player": { "x": 8, "y": 295, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.952409, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "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" } ] }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0.930654, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.789306640625, "next": 602.789306640625, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 3.601184, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.896709, "rate": 1, "player": { "x": 8, "y": 295, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.965926, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "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" } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0.93251, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 604.2509765625, "next": 604.2509765625, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 3.602008, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.89796, "rate": 1, "player": { "x": 8, "y": 295, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "chromium", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.958332, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "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" } ] }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0.957391, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.7999877929688, "next": 602.7999877929688, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 3.657818, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.901681, "rate": 1, "player": { "x": 8, "y": 294, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.958332, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "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" } ] }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0.958332, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 643.63330078125, "next": 643.63330078125, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 3.641169, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.938596, "rate": 1, "player": { "x": 8, "y": 294, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.958332, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "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" } ] }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0.958332, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 602.7999877929688, "next": 602.7999877929688, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 3.636716, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.899656, "rate": 1, "player": { "x": 8, "y": 294, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.990909, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "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" } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0.961763, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 599.88330078125, "next": 599.88330078125, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 3.761555, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.912036, "rate": 1, "player": { "x": 8, "y": 294, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "firefox", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.5901241, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "published / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 9, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "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" } ] }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 1.2305143, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "published / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 618.5125122070312, "next": 618.5125122070312, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 4.7285098, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "published / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 1.0015741, "rate": 1, "player": { "x": 8, "y": 292, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "published / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 1.2708066, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "published / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "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" } ] }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 1.3726192, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "published / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 626.0374755859375, "next": 626.0374755859375, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 4.4256368, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "published / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "published", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.5772691, "rate": 1, "player": { "x": 8, "y": 292, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "published / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.0", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 1.1714412, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "candidate / Danmuku 5.3.0 main: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 6, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "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" } ] }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 1.4937955, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "candidate / Danmuku 5.3.0 main: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 616.0625, "next": 616.0625, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 4.365894, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "candidate / Danmuku 5.3.0 main: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.4679923, "rate": 1, "player": { "x": 8, "y": 292, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "candidate / Danmuku 5.3.0 main: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": true, "time": 0.6450449, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 5, "visibleNodeCount": 4 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: native Worker renders three modes with synchronous filter and asynchronous beforeVisible", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 4, "stop": 1, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "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" } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 1.3254409, "rate": 1, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 7, "visibleNodeCount": 6 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: six simultaneous fixed comments preserve usable track geometry and input order", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 7, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 2, "config": 1, "loaded": 2, "start": 2, "visible": 6, "stop": 2, "destroy": 1 }, "gateCount": 7, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-pool-and-rate", "value": { "frozen": { "left": 618.1624755859375, "next": 618.1624755859375, "state": "stop" }, "reused": { "poolReused": true, "visibleSameNode": false, "original": { "id": "", "state": "wait", "visibility": "hidden", "text": "REUSED" }, "extraNodes": [ { "id": "", "visibility": "hidden", "text": "MOVING" }, { "id": "reused", "state": "emit", "visibility": "visible", "text": "REUSED" } ], "transition": "4s", "rate": 2 }, "loadWithoutArgument": "replaces from original empty option; explicit array load appends" } }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 4.788832, "rate": 2, "player": { "x": 8, "y": 8, "width": 640, "height": 360 }, "nodeCount": 0, "visibleNodeCount": 0 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: native pause seek rate and public reset/load retain historical pool semantics", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 5, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 1, "loaded": 3, "start": 4, "visible": 3, "stop": 3, "destroy": 1 }, "gateCount": 5, "sendCount": 0, "failures": [], "retainedExternalSettings": [ 0 ] } }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-browser-inputs", "value": { "core": "candidate", "plugin": "artplayer-plugin-danmuku", "version": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "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 } }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-layout", "value": [ { "index": 0, "playing": false, "time": 0, "rate": 1, "player": { "x": 0, "y": 0, "width": 0, "height": 0 }, "nodeCount": 0, "visibleNodeCount": 0 }, { "index": 1, "playing": true, "time": 0.5033361, "rate": 1, "player": { "x": 8, "y": 292, "width": 640, "height": 360 }, "nodeCount": 2, "visibleNodeCount": 1 } ] }, { "title": "candidate / Danmuku 5.3.0 legacy: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction", "browser": "webkit", "name": "danmuku-worker-and-lifecycle", "value": { "version": "5.4.1", "workers": [ { "urlScheme": "blob", "replyCount": 0, "terminated": 1, "errors": [] }, { "urlScheme": "blob", "replyCount": 2, "terminated": 1, "errors": [] } ], "eventCounts": { "reset": 4, "config": 4, "loaded": 2, "stop": 2, "destroy": 2, "start": 2, "visible": 1 }, "gateCount": 2, "sendCount": 2, "failures": [], "retainedExternalSettings": [ 1, 1 ] } } ] }, { "file": "refactor/.cache/danmuku02-browser-load-final/report.json", "sha256": "11afd4c17f0efef2730e1daa018e0a68677dc8ae5569afe8b1bee22ab3365bc6", "workers": 3, "expected": 6, "unexpected": 0, "skipped": 0, "versions": [ "chromium: 153.0.8010.12", "firefox: 155.0", "webkit: 26.6" ], "observations": [ { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 5.049181, "video": { "width": 320, "height": 180, "duration": 8 }, "loadedCount": 300, "visibleEvents": 119, "uniqueVisible": 119, "nodeCount": 121, "visibleNodeCount": 119, "hiddenNodeCount": 2, "frameSummary": { "count": 302, "median": 16.699999999999818, "p95": 16.700000000000728, "max": 16.800000000000182 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 47, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "after-300-loaded", "timestamp": 131.9000000357628, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "paused-after-four-media-seconds", "timestamp": 5325, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/8325ad9e-b0c8-45f4-a532-95996384ceb4", "posts": 4704, "replies": 4703, "terminated": 0, "errors": [] } ], "rawNodeCount": 121, "rawFrameCount": 303, "rawIntervalCount": 302 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/8325ad9e-b0c8-45f4-a532-95996384ceb4", "posts": 4862, "replies": 4862, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 119, "heaps": [ { "phase": "before-plugin-script", "timestamp": 47, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "after-300-loaded", "timestamp": 131.9000000357628, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "paused-after-four-media-seconds", "timestamp": 5325, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "immediately-after-destroy", "timestamp": 5475.400000035763, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 5.039338, "video": { "width": 320, "height": 180, "duration": 8 }, "loadedCount": 300, "visibleEvents": 119, "uniqueVisible": 119, "nodeCount": 121, "visibleNodeCount": 119, "hiddenNodeCount": 2, "frameSummary": { "count": 301, "median": 16.699999999999818, "p95": 16.700000000000728, "max": 16.800000000000182 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 94.5, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "after-300-loaded", "timestamp": 192.89999997615814, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "paused-after-four-media-seconds", "timestamp": 5376.199999988079, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/e785d7c6-105f-4431-9f6e-573b8fc7fdbb", "posts": 4667, "replies": 4666, "terminated": 0, "errors": [] } ], "rawNodeCount": 121, "rawFrameCount": 302, "rawIntervalCount": 301 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/e785d7c6-105f-4431-9f6e-573b8fc7fdbb", "posts": 4684, "replies": 4684, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 119, "heaps": [ { "phase": "before-plugin-script", "timestamp": 94.5, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "after-300-loaded", "timestamp": 192.89999997615814, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "paused-after-four-media-seconds", "timestamp": 5376.199999988079, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "immediately-after-destroy", "timestamp": 5547.799999952316, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 5.163015, "video": { "width": 320, "height": 180, "duration": 8 }, "loadedCount": 300, "visibleEvents": 119, "uniqueVisible": 119, "nodeCount": 121, "visibleNodeCount": 119, "hiddenNodeCount": 2, "frameSummary": { "count": 241, "median": 16.680000000000064, "p95": 50.03999999999951, "max": 50.07999999999993 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 396, "memory": null }, { "phase": "after-300-loaded", "timestamp": 622, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 6189, "memory": null } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/360b9654-0272-43a7-aeb8-e7696622760c", "posts": 4486, "replies": 4485, "terminated": 0, "errors": [] } ], "rawNodeCount": 121, "rawFrameCount": 242, "rawIntervalCount": 241 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/360b9654-0272-43a7-aeb8-e7696622760c", "posts": 4578, "replies": 4578, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 119, "heaps": [ { "phase": "before-plugin-script", "timestamp": 396, "memory": null }, { "phase": "after-300-loaded", "timestamp": 622, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 6189, "memory": null }, { "phase": "immediately-after-destroy", "timestamp": 6356, "memory": null } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 5.064198, "video": { "width": 320, "height": 180, "duration": 8 }, "loadedCount": 300, "visibleEvents": 129, "uniqueVisible": 129, "nodeCount": 131, "visibleNodeCount": 129, "hiddenNodeCount": 2, "frameSummary": { "count": 244, "median": 16.680000000000064, "p95": 33.440000000000055, "max": 66.72000000000025 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 355, "memory": null }, { "phase": "after-300-loaded", "timestamp": 486, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5917, "memory": null } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/d7d1c881-2850-436a-8d67-c3b786a16f2c", "posts": 5001, "replies": 5001, "terminated": 0, "errors": [] } ], "rawNodeCount": 131, "rawFrameCount": 245, "rawIntervalCount": 244 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/d7d1c881-2850-436a-8d67-c3b786a16f2c", "posts": 5001, "replies": 5001, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 129, "heaps": [ { "phase": "before-plugin-script", "timestamp": 355, "memory": null }, { "phase": "after-300-loaded", "timestamp": 486, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5917, "memory": null }, { "phase": "immediately-after-destroy", "timestamp": 6040, "memory": null } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 4.9445888, "video": { "width": 640, "height": 360, "duration": 8 }, "loadedCount": 300, "visibleEvents": 51, "uniqueVisible": 51, "nodeCount": 53, "visibleNodeCount": 51, "hiddenNodeCount": 2, "frameSummary": { "count": 52, "median": 106, "p95": 140, "max": 148 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 131, "memory": null }, { "phase": "after-300-loaded", "timestamp": 246, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 6483, "memory": null } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/2206fea6-9c83-4ed6-ae51-80498aac96dd", "posts": 298, "replies": 297, "terminated": 0, "errors": [] } ], "rawNodeCount": 53, "rawFrameCount": 53, "rawIntervalCount": 52 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/2206fea6-9c83-4ed6-ae51-80498aac96dd", "posts": 301, "replies": 301, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 51, "heaps": [ { "phase": "before-plugin-script", "timestamp": 131, "memory": null }, { "phase": "after-300-loaded", "timestamp": 246, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 6483, "memory": null }, { "phase": "immediately-after-destroy", "timestamp": 6909, "memory": null } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 4.8138721, "video": { "width": 640, "height": 360, "duration": 8 }, "loadedCount": 300, "visibleEvents": 55, "uniqueVisible": 55, "nodeCount": 57, "visibleNodeCount": 55, "hiddenNodeCount": 2, "frameSummary": { "count": 53, "median": 97, "p95": 135, "max": 141 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 134, "memory": null }, { "phase": "after-300-loaded", "timestamp": 251, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 6074, "memory": null } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/ae434b8e-620b-4d35-ba9e-7052fe76befc", "posts": 314, "replies": 313, "terminated": 0, "errors": [] } ], "rawNodeCount": 57, "rawFrameCount": 54, "rawIntervalCount": 53 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/ae434b8e-620b-4d35-ba9e-7052fe76befc", "posts": 321, "replies": 320, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 55, "heaps": [ { "phase": "before-plugin-script", "timestamp": 134, "memory": null }, { "phase": "after-300-loaded", "timestamp": 251, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 6074, "memory": null }, { "phase": "immediately-after-destroy", "timestamp": 6460, "memory": null } ], "failures": [], "destroyEvents": 1 } } ] }, { "file": "refactor/.cache/danmuku02-browser-load-serial/report.json", "sha256": "635b7a7c0a19314edcf406c9bb8b0a778985d3c5d4f3e135eec688e5e5b95c57", "workers": 1, "expected": 6, "unexpected": 0, "skipped": 0, "versions": [ "chromium: 153.0.8010.12", "firefox: 155.0", "webkit: 26.6" ], "observations": [ { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 5.000722, "video": { "width": 320, "height": 180, "duration": 8 }, "loadedCount": 300, "visibleEvents": 119, "uniqueVisible": 119, "nodeCount": 121, "visibleNodeCount": 119, "hiddenNodeCount": 2, "frameSummary": { "count": 299, "median": 16.699999999999818, "p95": 16.700000000000728, "max": 16.800000000000182 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 44.80000001192093, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "after-300-loaded", "timestamp": 120.80000001192093, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "paused-after-four-media-seconds", "timestamp": 5225.100000023842, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/bcbfed39-b160-462f-8733-1803f14546df", "posts": 7045, "replies": 7045, "terminated": 0, "errors": [] } ], "rawNodeCount": 121, "rawFrameCount": 300, "rawIntervalCount": 299 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/bcbfed39-b160-462f-8733-1803f14546df", "posts": 7045, "replies": 7045, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 119, "heaps": [ { "phase": "before-plugin-script", "timestamp": 44.80000001192093, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "after-300-loaded", "timestamp": 120.80000001192093, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "paused-after-four-media-seconds", "timestamp": 5225.100000023842, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "immediately-after-destroy", "timestamp": 5340.5, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 5.023261, "video": { "width": 320, "height": 180, "duration": 8 }, "loadedCount": 300, "visibleEvents": 119, "uniqueVisible": 119, "nodeCount": 121, "visibleNodeCount": 119, "hiddenNodeCount": 2, "frameSummary": { "count": 300, "median": 16.699999999999818, "p95": 16.799999999999727, "max": 16.800000000000182 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 33.19999998807907, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "after-300-loaded", "timestamp": 109.89999997615814, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "paused-after-four-media-seconds", "timestamp": 5263.600000023842, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/bba07862-2ac5-4c52-a4cb-399f145cb5b3", "posts": 6329, "replies": 6328, "terminated": 0, "errors": [] } ], "rawNodeCount": 121, "rawFrameCount": 301, "rawIntervalCount": 300 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "chromium", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/bba07862-2ac5-4c52-a4cb-399f145cb5b3", "posts": 6443, "replies": 6443, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 119, "heaps": [ { "phase": "before-plugin-script", "timestamp": 33.19999998807907, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "after-300-loaded", "timestamp": 109.89999997615814, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "paused-after-four-media-seconds", "timestamp": 5263.600000023842, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } }, { "phase": "immediately-after-destroy", "timestamp": 5388.699999988079, "memory": { "usedJSHeapSize": 10000000, "totalJSHeapSize": 10000000, "jsHeapSizeLimit": 3760000000 } } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 5.040484, "video": { "width": 320, "height": 180, "duration": 8 }, "loadedCount": 300, "visibleEvents": 119, "uniqueVisible": 119, "nodeCount": 121, "visibleNodeCount": 119, "hiddenNodeCount": 2, "frameSummary": { "count": 267, "median": 16.660000000000082, "p95": 33.340000000000146, "max": 50.000000000000455 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 280, "memory": null }, { "phase": "after-300-loaded", "timestamp": 404, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5652, "memory": null } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/3520511d-55d1-4b6b-9097-b2ce1af67ade", "posts": 6669, "replies": 6668, "terminated": 0, "errors": [] } ], "rawNodeCount": 121, "rawFrameCount": 268, "rawIntervalCount": 267 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/3520511d-55d1-4b6b-9097-b2ce1af67ade", "posts": 6751, "replies": 6751, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 119, "heaps": [ { "phase": "before-plugin-script", "timestamp": 280, "memory": null }, { "phase": "after-300-loaded", "timestamp": 404, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5652, "memory": null }, { "phase": "immediately-after-destroy", "timestamp": 5774, "memory": null } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 5.056157, "video": { "width": 320, "height": 180, "duration": 8 }, "loadedCount": 300, "visibleEvents": 130, "uniqueVisible": 130, "nodeCount": 132, "visibleNodeCount": 130, "hiddenNodeCount": 2, "frameSummary": { "count": 268, "median": 16.660000000000082, "p95": 33.340000000000146, "max": 50 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 61, "memory": null }, { "phase": "after-300-loaded", "timestamp": 137, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5342, "memory": null } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/f4cac3c1-264e-4af5-8b29-7d176d23fff2", "posts": 6502, "replies": 6502, "terminated": 0, "errors": [] } ], "rawNodeCount": 132, "rawFrameCount": 269, "rawIntervalCount": 268 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "firefox", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/f4cac3c1-264e-4af5-8b29-7d176d23fff2", "posts": 6502, "replies": 6502, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 130, "heaps": [ { "phase": "before-plugin-script", "timestamp": 61, "memory": null }, { "phase": "after-300-loaded", "timestamp": 137, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5342, "memory": null }, { "phase": "immediately-after-destroy", "timestamp": 5437, "memory": null } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "main", "member": "package/dist/artplayer-plugin-danmuku.js", "sha256": "7c8749288711ef97e80b6f9f00981170aa73f62a8ae25d6d663749a4aef62a8f", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 4.6056269, "video": { "width": 640, "height": 360, "duration": 8 }, "loadedCount": 300, "visibleEvents": 51, "uniqueVisible": 51, "nodeCount": 53, "visibleNodeCount": 51, "hiddenNodeCount": 2, "frameSummary": { "count": 63, "median": 78, "p95": 101, "max": 122 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 60, "memory": null }, { "phase": "after-300-loaded", "timestamp": 163, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5618, "memory": null } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/d0900b47-b8eb-48ab-9c31-1ec51baf06f4", "posts": 293, "replies": 292, "terminated": 0, "errors": [] } ], "rawNodeCount": 53, "rawFrameCount": 64, "rawIntervalCount": 63 } }, { "title": "published core / Danmuku 5.3.0 main: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/d0900b47-b8eb-48ab-9c31-1ec51baf06f4", "posts": 299, "replies": 298, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 51, "heaps": [ { "phase": "before-plugin-script", "timestamp": 60, "memory": null }, { "phase": "after-300-loaded", "timestamp": 163, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5618, "memory": null }, { "phase": "immediately-after-destroy", "timestamp": 5947, "memory": null } ], "failures": [], "destroyEvents": 1 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-inputs", "value": { "core": "published", "coreVersion": "5.4.0", "pluginVersion": "5.3.0", "format": "legacy", "member": "package/dist/artplayer-plugin-danmuku.legacy.js", "sha256": "62db96685c48b8573f0480cead6ac934b1d0382b9fdd0046d17d15d2549c56dc", "integrity": "sha512-a76bU1cWEZr53hD1X8IHfOzS4QawGHn8dQ3fIYyJ5TsyhTSnznhi2WzkS8M7LL3H02ekXRZTUFan9+9EERk12g==", "mediaSha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233", "comments": 300, "modes": [ 0, 1, 2 ], "scheduledTime": 0.5, "heatmap": false, "scope": "Single bounded native sample; independent RAF observer and optional performance.memory readings. No forced GC, leak diagnosis, cross-browser heap equivalence or performance threshold." } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-sample", "value": { "coreVersion": "5.4.0", "mediaTime": 4.6210889, "video": { "width": 640, "height": 360, "duration": 8 }, "loadedCount": 300, "visibleEvents": 51, "uniqueVisible": 51, "nodeCount": 53, "visibleNodeCount": 51, "hiddenNodeCount": 2, "frameSummary": { "count": 61, "median": 80, "p95": 104, "max": 119 }, "heaps": [ { "phase": "before-plugin-script", "timestamp": 74, "memory": null }, { "phase": "after-300-loaded", "timestamp": 171, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5617, "memory": null } ], "workers": [ { "url": "blob:http://127.0.0.1:8084/a8a138d3-dcea-4520-b269-adbcd0b8df37", "posts": 299, "replies": 298, "terminated": 0, "errors": [] } ], "rawNodeCount": 53, "rawFrameCount": 62, "rawIntervalCount": 61 } }, { "title": "published core / Danmuku 5.3.0 legacy: 300-comment native load and frame/heap observation", "browser": "webkit", "name": "danmuku-load-final-observations", "value": { "destroyed": true, "retainedPlayerRoots": 0, "retainedExternalSettings": 1, "workerCount": 1, "workers": [ { "url": "blob:http://127.0.0.1:8084/a8a138d3-dcea-4520-b269-adbcd0b8df37", "posts": 301, "replies": 301, "terminated": 1, "errors": [] } ], "loadedCounts": [ 0, 300 ], "visibleEvents": 51, "heaps": [ { "phase": "before-plugin-script", "timestamp": 74, "memory": null }, { "phase": "after-300-loaded", "timestamp": 171, "memory": null }, { "phase": "paused-after-four-media-seconds", "timestamp": 5617, "memory": null }, { "phase": "immediately-after-destroy", "timestamp": 5925, "memory": null } ], "failures": [], "destroyEvents": 1 } } ] } ], "priorFailure": { "file": "refactor/.cache/danmuku02-browser-chromium-initial/report.json", "sha256": "411397683f17f97bcef6356ba48ed482ea54017db47ec2b88e981385e47ad8e1", "passed": 7, "failed": 9, "fixtureCorrections": [ "FullscreenWeb moves the player into body; inspect actual controlsCenter/emitter ownership.", "Pool nodes may be reused and then hidden by duplicate loops; inspect actual original-node text/use and record extra allocations, not assume final visible identity." ], "unresolvedProductionObservation": "Two simultaneous fixed comments occupied y=10 in the initial strict geometry test, with duplicate native start events and repeated worker IDs. The subsequent 48-case pass does not close the historical race; the strict overlap assertion remains active." }, "inputs": [ { "path": "playwright.config.js", "algorithm": "sha256-lf", "sha256": "df2384f5626252ec933725867e400ec22eb92bc5e6f04873059b32decf2f2d56" }, { "path": "refactor/baselines/danmuku-release.json", "algorithm": "sha256-lf", "sha256": "82a0ab2e87f108cbb1d09ce1b6647cfefc896d974da1cb60b2668fded18a4b2f" }, { "path": "test/browser/danmuku-baseline.spec.js", "algorithm": "sha256-lf", "sha256": "6d5d7d7342cab008612e6cdb1fc7b7a41a08f72eca6d602ec484904acfd51381" }, { "path": "test/browser/danmuku-load-baseline.spec.js", "algorithm": "sha256-lf", "sha256": "20890b1c4e415a33e82a2ac9e9b10701ca39f1b8dc31d514fcbf85e227646b4d" }, { "path": "test/browser/fixtures.js", "algorithm": "sha256-lf", "sha256": "313414b8958eb5b03a2da8595fa0bbf6bfdc01484373898c6cb7179545df175d" }, { "path": "test/browser/server.mjs", "algorithm": "sha256-lf", "sha256": "1406fac75eabc83b987e79ec7b5f97a948b27770bfd5f5290d7cb9155196f08f" }, { "path": "test/danmuku-failures.test.js", "algorithm": "sha256-lf", "sha256": "1d7a4fc988f75239bc33453fe4334c17ab34420b58ae26a33d7fc7471be8bf8f" }, { "path": "test/helpers/danmuku.js", "algorithm": "sha256-lf", "sha256": "4e4420d6fe7198bd91c7a444f3f82740991181c3a1b2cb8b91b1db6fc759046a" } ], "limitations": [ "Only actual plugin 5.3.0 main/legacy native browser behavior; controlled source/legacy failures are separate.", "The native core matrix is actual published 5.4.0 and candidate 5.4.1; no inferred continuous support range.", "Load/heap/frame metrics are short-run observations, not a leak proof, performance threshold or long-term stability clearance.", "Historical repeated-loop overlap remains open and can make the strict concurrency regression fail on later runs.", "No real Bilibili service, CSP restriction matrix, physical Safari/mobile, Mask model or npm release readiness acceptance." ], "releaseReady": false, "priorLoadFixtureFailure": { "file": "refactor/.cache/danmuku02-browser-load-initial/report.json", "sha256": "af6d8d0a08702fcd6fdc0c75c3f6fd88900e8f434857db9ba626b7890f883701", "failed": 6, "cause": "Test read non-existent art.paused; corrected to art.template.$video.paused. No production change." }, "rawObservationPolicy": "Large layout/event/frame arrays remain in the hash-bound raw Playwright reports. This maintained summary retains counts, selected geometry, input identities and sample metrics." }