Files
ArtPlayer/refactor/baselines/danmuku-scheduler-validation.json
T

20615 lines
710 KiB
JSON

{
"schemaVersion": 1,
"task": "PKG-DANMUKU-04",
"status": "done",
"capturedAt": "2026-09-13T11:18:49.542Z",
"baselineCommit": "0b2efb07f",
"units": [
{
"format": "source",
"tests": 104,
"implementationDependent": 83,
"commonSourceWorkerTests": 18,
"commonFrozenNumericTests": 3,
"file": "refactor/.cache/danmuku04-candidate-source-complete.log",
"sha256": "f05f78034322803aa28e5eedadbf31e86de97ff8af96155158336bc68d341953"
},
{
"format": "main",
"tests": 104,
"implementationDependent": 83,
"commonSourceWorkerTests": 18,
"commonFrozenNumericTests": 3,
"file": "refactor/.cache/danmuku04-candidate-main-complete.log",
"sha256": "58f27d6d25e2f70a626b442494be833e14ca232b435b0f9d9b783a44926e3a8c"
},
{
"format": "legacy",
"tests": 104,
"implementationDependent": 83,
"commonSourceWorkerTests": 18,
"commonFrozenNumericTests": 3,
"file": "refactor/.cache/danmuku04-candidate-legacy-complete.log",
"sha256": "b626d2a2069dfa7f9a608c7e2c83c8b910236df2ec4586117d68892ac97d6204"
}
],
"browsers": [
{
"format": "source",
"tests": 66,
"file": "refactor/.cache/danmuku04-browser-source-numeric-final/report.json",
"sha256": "e31066f57d89fa987012e06db83112a0ad0b3a47e668402ec877321832b9c89a",
"run": {
"file": "refactor/.cache/danmuku04-browser-source-numeric-final/run.log",
"sha256": "2e0a30a909fd07daf08bb532739b85c6635b5fa5dc39c53fac302cf989f942e1"
},
"spec": {
"file": "refactor/.cache/danmuku04-browser-source-numeric-final/danmuku-scheduler.spec.js",
"sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e"
},
"archiveResultsRoot": "refactor/.cache/danmuku04-browser-source-numeric-final/results",
"originalResultsRoot": "refactor/.cache/browser/results",
"versions": [
"chromium: 153.0.8010.12",
"firefox: 155.0",
"webkit: 26.6"
],
"cases": [
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "chromium",
"durationMs": 1594,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "chromium",
"durationMs": 1331,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.907252
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/31792b31-5dc6-454d-a9e4-5c8b37ccfac0",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "chromium",
"durationMs": 1306,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.898323
},
{
"index": 0,
"event": "stop",
"time": 0.898323
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/7871692b-932d-4d8e-b806-fca0b9362426",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2385,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2369,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2252,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 1307,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "chromium",
"durationMs": 1389,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1662,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "chromium",
"durationMs": 2290,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 602.7918090820312,
"next": 602.7918090820312,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "chromium",
"durationMs": 4241,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "chromium",
"durationMs": 1301,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "chromium",
"durationMs": 1313,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.908902
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/09c0a843-b399-472c-9aa6-50c11c27a0ff",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "chromium",
"durationMs": 1303,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.89769
},
{
"index": 0,
"event": "stop",
"time": 0.89769
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/fd03c655-a488-4c87-bcec-fc044f33771f",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2506,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 1808,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2524,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 1345,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "chromium",
"durationMs": 1373,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1576,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "chromium",
"durationMs": 2437,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 602.788818359375,
"next": 602.788818359375,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "chromium",
"durationMs": 4210,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "firefox",
"durationMs": 3172,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "firefox",
"durationMs": 1888,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.905723
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/e8b3fd31-4ba6-4a93-b5e9-f241eb4f6582",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "firefox",
"durationMs": 1686,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.874999
},
{
"index": 0,
"event": "stop",
"time": 0.874999
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/7b7739a5-842b-44b3-acdb-38bce3ef999d",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2670,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2044,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2636,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 1792,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "firefox",
"durationMs": 1703,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2878,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "firefox",
"durationMs": 2923,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 601.3333129882812,
"next": 601.3333129882812,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "firefox",
"durationMs": 4910,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "firefox",
"durationMs": 1806,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "firefox",
"durationMs": 1871,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.901248
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/d3ccaf64-24f7-412d-95f4-1f046a39eed1",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "firefox",
"durationMs": 1561,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.874999
},
{
"index": 0,
"event": "stop",
"time": 0.874999
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/fb84e1d6-1169-49e9-9a95-4248cef05bf3",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2900,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2247,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 3923,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 1570,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "firefox",
"durationMs": 1764,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 1708,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "firefox",
"durationMs": 2967,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 601.2999877929688,
"next": 601.2999877929688,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "firefox",
"durationMs": 4996,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "webkit",
"durationMs": 2506,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "webkit",
"durationMs": 2816,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.5477604
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/8887345c-74d7-4df2-9db3-33ad1b6b63ed",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "webkit",
"durationMs": 2744,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.4936346
},
{
"index": 0,
"event": "stop",
"time": 0.4937073
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/8abdf89e-4053-43e1-b126-18156c22a4e3",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3964,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3803,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3585,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2973,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "webkit",
"durationMs": 3650,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4195,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "webkit",
"durationMs": 5271,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 609.4124755859375,
"next": 609.4124755859375,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "webkit",
"durationMs": 8351,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "webkit",
"durationMs": 2581,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "webkit",
"durationMs": 2693,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.5058696
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/377e84c9-5640-420c-9ebc-bcebd222cf0a",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "webkit",
"durationMs": 2799,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.5110266
},
{
"index": 0,
"event": "stop",
"time": 0.5111032
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/63387ef8-4a3a-4793-af0f-16188ec8be58",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3630,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2881,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3943,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2839,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "webkit",
"durationMs": 3184,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3994,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "webkit",
"durationMs": 5486,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 613.9625244140625,
"next": 613.9625244140625,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "webkit",
"durationMs": 8337,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "in-memory source UMD",
"sha256": "e6658f5fa5a4fe4a81b1552731d7450262989d4f934a1ec26f260a3dcd722d61",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
}
]
},
{
"format": "main",
"tests": 66,
"file": "refactor/.cache/danmuku04-browser-main-numeric-final/report.json",
"sha256": "5a77e4c6e59c7f78702b120c04b64ce3740c653a7751d55ada373646ea103533",
"run": {
"file": "refactor/.cache/danmuku04-browser-main-numeric-final/run.log",
"sha256": "dffddff7b686591aac8902cdd2e8d8b5ac3c1e1c907ddecadcb5cee6a9fa5477"
},
"spec": {
"file": "refactor/.cache/danmuku04-browser-main-numeric-final/danmuku-scheduler.spec.js",
"sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e"
},
"archiveResultsRoot": "refactor/.cache/danmuku04-browser-main-numeric-final/results",
"originalResultsRoot": "refactor/.cache/browser/results",
"versions": [
"chromium: 153.0.8010.12",
"firefox: 155.0",
"webkit: 26.6"
],
"cases": [
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "chromium",
"durationMs": 1409,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "chromium",
"durationMs": 1303,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.899133
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/6c9706bb-601b-42de-9d19-a9863257d58a",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "chromium",
"durationMs": 1347,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.899634
},
{
"index": 0,
"event": "stop",
"time": 0.899634
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/4cf3e456-5043-4049-9fdc-542c77e91532",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2336,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2264,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2225,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 1295,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "chromium",
"durationMs": 1364,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1511,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "chromium",
"durationMs": 2418,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 599.8820190429688,
"next": 599.8820190429688,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "chromium",
"durationMs": 4146,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "chromium",
"durationMs": 1290,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "chromium",
"durationMs": 1270,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.897016
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/a28799c8-5f27-420f-8a8d-2c50ff8a8e95",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "chromium",
"durationMs": 1307,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.907498
},
{
"index": 0,
"event": "stop",
"time": 0.907498
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/23a88b13-af5c-4769-a3ab-29df34b9738b",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2424,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2361,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2438,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 1325,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "chromium",
"durationMs": 1349,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1476,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "chromium",
"durationMs": 2377,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 601.33740234375,
"next": 601.33740234375,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "chromium",
"durationMs": 4140,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "firefox",
"durationMs": 2349,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "firefox",
"durationMs": 1681,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.90678
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/92bd0b6a-c128-420f-91b8-d107541e3357",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "firefox",
"durationMs": 1632,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.872461
},
{
"index": 0,
"event": "stop",
"time": 0.872461
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/f2c7a295-89ef-4802-877e-099982efdac9",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2740,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2088,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2658,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 1205,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "firefox",
"durationMs": 1903,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3024,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "firefox",
"durationMs": 2654,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 601.3333129882812,
"next": 601.3333129882812,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "firefox",
"durationMs": 4660,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "firefox",
"durationMs": 1697,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "firefox",
"durationMs": 1796,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.919782
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/7f9fadf7-14b3-4712-921f-57c4968893f1",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "firefox",
"durationMs": 1772,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.874999
},
{
"index": 0,
"event": "stop",
"time": 0.874999
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/fd38ba4c-7a2d-48a5-b0d0-65c28e092b5c",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2838,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2126,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 3733,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 1563,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "firefox",
"durationMs": 1622,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 1769,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "firefox",
"durationMs": 2992,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 602.75,
"next": 602.75,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "firefox",
"durationMs": 4773,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "webkit",
"durationMs": 2516,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "webkit",
"durationMs": 2160,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.5270586
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/f6a43b1c-f948-44ac-9f8c-034aac7d3a57",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "webkit",
"durationMs": 2483,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.5209417
},
{
"index": 0,
"event": "stop",
"time": 0.5210177
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/bba3ffdd-5710-4bd8-b5be-fd9cbd514a34",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3801,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2857,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3446,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2259,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "webkit",
"durationMs": 3023,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3108,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "webkit",
"durationMs": 5045,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 574.0625,
"next": 574.0625,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "webkit",
"durationMs": 7930,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "webkit",
"durationMs": 2282,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "webkit",
"durationMs": 2565,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.9559543
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/8c0e38c5-06cb-4041-b2d3-b93322009b72",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "webkit",
"durationMs": 2040,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.4843741
},
{
"index": 0,
"event": "stop",
"time": 0.4844099
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/3ccfde56-4324-4b8b-8f99-36f1667ba9a5",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 4025,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3258,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3269,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2932,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "webkit",
"durationMs": 3063,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3197,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "webkit",
"durationMs": 4512,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 617.9000244140625,
"next": 617.9000244140625,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "webkit",
"durationMs": 7496,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
}
]
},
{
"format": "legacy",
"tests": 66,
"file": "refactor/.cache/danmuku04-browser-legacy-numeric-final/report.json",
"sha256": "ee02ab34e771542ba228a958b8052a1df5f2c0e54bf7468915332b1a9d833b50",
"run": {
"file": "refactor/.cache/danmuku04-browser-legacy-numeric-final/run.log",
"sha256": "41ba9761a9f953a4905c53cf1f04f5f9e1a5f900eb2f354d052c81ecd8bd58e9"
},
"spec": {
"file": "refactor/.cache/danmuku04-browser-legacy-numeric-final/danmuku-scheduler.spec.js",
"sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e"
},
"archiveResultsRoot": "refactor/.cache/danmuku04-browser-legacy-numeric-final/results",
"originalResultsRoot": "refactor/.cache/browser/results",
"versions": [
"chromium: 153.0.8010.12",
"firefox: 155.0",
"webkit: 26.6"
],
"cases": [
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "chromium",
"durationMs": 1442,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "chromium",
"durationMs": 1312,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.910342
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/f95625d3-da3c-43cd-bd5e-44485457b5c8",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "chromium",
"durationMs": 1288,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.900038
},
{
"index": 0,
"event": "stop",
"time": 0.900038
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/6c1db542-01cf-4aba-91bb-0d59a367a38f",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2447,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2256,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2224,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 1275,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "chromium",
"durationMs": 1341,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1605,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "chromium",
"durationMs": 2419,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 602.7915649414062,
"next": 602.7915649414062,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "chromium",
"durationMs": 4165,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "chromium",
"durationMs": 1267,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "chromium",
"durationMs": 1243,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.893598
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/019300e7-47a5-4891-a112-1bd126940bec",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "chromium",
"durationMs": 1289,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.904498
},
{
"index": 0,
"event": "stop",
"time": 0.904498
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/53f97fbd-4b03-443f-b2b0-4808abd97a28",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2405,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2320,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 2436,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "chromium",
"durationMs": 1289,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "chromium",
"durationMs": 1343,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1522,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "chromium",
"durationMs": 2245,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 602.7899780273438,
"next": 602.7899780273438,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "chromium",
"durationMs": 4116,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "firefox",
"durationMs": 2506,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "firefox",
"durationMs": 1743,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.874999
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/e61312b7-89bc-4e2b-acf2-de1a93430333",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "firefox",
"durationMs": 1610,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.875433
},
{
"index": 0,
"event": "stop",
"time": 0.875433
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/f54b5650-4ad7-4e5e-a9be-38ed500e72b4",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2632,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2612,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2662,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 1548,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "firefox",
"durationMs": 1646,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2685,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "firefox",
"durationMs": 2657,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 602.7999877929688,
"next": 602.7999877929688,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "firefox",
"durationMs": 4784,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "firefox",
"durationMs": 1654,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "firefox",
"durationMs": 1510,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.872581
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/43f7405f-e3b1-44d7-a839-608da97ba808",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "firefox",
"durationMs": 1566,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.916666
},
{
"index": 0,
"event": "stop",
"time": 0.916666
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/07c5a8d4-40f8-411c-8309-ac7f3feb3375",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2299,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 2645,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 3635,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "firefox",
"durationMs": 1638,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "firefox",
"durationMs": 1578,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 1643,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "firefox",
"durationMs": 2696,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 601.3333129882812,
"next": 601.3333129882812,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "firefox",
"durationMs": 4769,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "webkit",
"durationMs": 2279,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "webkit",
"durationMs": 2510,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.5531477
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/3fb921b4-0608-4f22-9250-eb324ffb5b34",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "webkit",
"durationMs": 2413,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.5130193
},
{
"index": 0,
"event": "stop",
"time": 0.5130772
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/afc7addf-b473-4964-9e75-b0b9b697c06f",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3917,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3696,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3504,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2188,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "webkit",
"durationMs": 2488,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3636,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "webkit",
"durationMs": 5298,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 572.4874877929688,
"next": 572.4874877929688,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "webkit",
"durationMs": 7204,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: accepted NaN timestamp keeps the historical current-time fallback",
"browser": "webkit",
"durationMs": 2215,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-numeric-compatibility",
"value": {
"expected": 0.5,
"inputTime": 0.5,
"queueTime": 0.5,
"isNaN": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous destroy from the error listener",
"browser": "webkit",
"durationMs": 2325,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "destroy",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": true,
"events": [
{
"index": 0,
"event": "error",
"time": 0.4766665
},
{
"index": 0,
"event": "stop",
"time": 0
},
{
"index": 0,
"event": "destroy",
"time": 0
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/4486a410-7b34-430f-8464-ff4b20cd45bf",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: failed recovery respects synchronous stop from the error listener",
"browser": "webkit",
"durationMs": 2206,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-recovery-reentry",
"value": {
"action": "stop",
"sameOwner": true,
"rowState": "stop",
"isStop": true,
"isDestroy": false,
"events": [
{
"index": 0,
"event": "error",
"time": 0.5243332
},
{
"index": 0,
"event": "stop",
"time": 0.5243703
}
],
"workers": [
{
"url": "blob:http://127.0.0.1:8084/4939d7b4-cfac-466a-b775-d95f1411d6e7",
"requests": [
{
"type": "getDanmuTop",
"target": {
"mode": 1,
"height": 23,
"speed": 90
},
"visibles": [],
"antiOverlap": true,
"clientWidth": 640,
"clientHeight": 360,
"marginBottom": 10,
"marginTop": 10,
"id": 1
}
],
"replies": [
{
"id": 1,
"result": 10
}
],
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"fault": "Actual video/DOM/track Worker; dispatch an explicit native ErrorEvent and inject a throwing createWorker recovery seam. This does not claim a real CSP or browser Worker construction failure."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": [
"controlled track failure"
]
}
],
"failures": [
"Error: controlled track failure",
"Error: controlled track reconstruction failure"
]
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3896,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "pause",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native reset cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2629,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "reset",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native seek cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 3577,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "seek",
"before": {
"requests": [
1
],
"visible": [
"fresh-after-cancel"
]
},
"after": [
"fresh-after-cancel"
],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native destroy cancels pending visibility without blocking later work",
"browser": "webkit",
"durationMs": 2440,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-native-cancel",
"value": {
"action": "destroy",
"before": {
"requests": [
0
],
"visible": []
},
"after": [],
"cancelledSource": "An unresolved user beforeVisible Promise; native RAF, Worker and media remain active."
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native Worker renders three modes with synchronous filter and asynchronous beforeVisible",
"browser": "webkit",
"durationMs": 2818,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "modes",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 4,
"replies": 4,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3670,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: native pause seek rate and public reset/load retain historical pool semantics",
"browser": "webkit",
"durationMs": 5009,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "playback",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-pool-and-rate",
"value": {
"frozen": {
"left": 578,
"next": 578,
"state": "stop"
},
"reused": {
"poolReused": true,
"visibleSameNode": true,
"original": {
"id": "reused",
"state": "emit",
"visibility": "visible",
"text": "REUSED"
},
"extraNodes": [],
"transition": "4s",
"rate": 2
},
"loadWithoutArgument": "replaces from original empty option; explicit array load appends"
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 3,
"replies": 3,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: actual settings, asynchronous send lock, external fullscreen mount and two-player destruction",
"browser": "webkit",
"durationMs": 7436,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "settings",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 0,
"replies": 0,
"terminated": 1,
"errors": []
},
{
"requests": 1,
"replies": 1,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
}
]
},
{
"format": "dense-main",
"tests": 30,
"file": "refactor/.cache/danmuku04-browser-dense-main-numeric-final/report.json",
"sha256": "5fdf278fac810a7abf22970932a9f140316b77af23d74b8e92606bbcfe290976",
"run": {
"file": "refactor/.cache/danmuku04-browser-dense-main-numeric-final/run.log",
"sha256": "9dd7c9bcbb94ce6f1139907b88336c2b5ce01b1c1870807aa8c7fbb14f86cb0b"
},
"spec": {
"file": "refactor/.cache/danmuku04-browser-dense-main-numeric-final/danmuku-scheduler.spec.js",
"sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e"
},
"archiveResultsRoot": "refactor/.cache/danmuku04-browser-dense-main-numeric-final/results",
"originalResultsRoot": "refactor/.cache/browser/results",
"versions": [
"chromium: 153.0.8010.12",
"firefox: 155.0",
"webkit: 26.6"
],
"cases": [
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1627,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1641,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1643,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1660,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1542,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1588,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1650,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1665,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1542,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1629,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2351,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3003,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3303,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3321,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3018,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2207,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3000,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2978,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2915,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3148,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3719,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3767,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3589,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3072,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4284,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3704,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4218,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3659,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3778,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3691,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
}
]
},
{
"format": "dense-legacy",
"tests": 30,
"file": "refactor/.cache/danmuku04-browser-dense-legacy-numeric-final/report.json",
"sha256": "ddd9e5d8a986e96f50bb6607444c5f50376aa746fd70bf64d010aafb96a3fba7",
"run": {
"file": "refactor/.cache/danmuku04-browser-dense-legacy-numeric-final/run.log",
"sha256": "68f6e7895933021f2f63458803f40affb282ec3493f50b0fcf157aaee9ab7301"
},
"spec": {
"file": "refactor/.cache/danmuku04-browser-dense-legacy-numeric-final/danmuku-scheduler.spec.js",
"sha256": "57a4791dba05ab8a0d5ddd2bf38730e10a70a5cd5c32b3ef4ec82440b5911e4e"
},
"archiveResultsRoot": "refactor/.cache/danmuku04-browser-dense-legacy-numeric-final/results",
"originalResultsRoot": "refactor/.cache/browser/results",
"versions": [
"chromium: 153.0.8010.12",
"firefox: 155.0",
"webkit: 26.6"
],
"cases": [
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1785,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1829,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1819,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1693,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1698,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1684,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1679,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1738,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1963,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "chromium",
"durationMs": 1758,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2987,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3089,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2928,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3068,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3033,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3241,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2783,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2963,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 2982,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "firefox",
"durationMs": 3477,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4208,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4244,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4385,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4070,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3820,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4302,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4235,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3945,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "published / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 3990,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "published",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
},
{
"title": "candidate / Candidate Danmuku candidate: six simultaneous fixed comments preserve usable track geometry and input order",
"browser": "webkit",
"durationMs": 4023,
"observations": [
{
"name": "danmuku-browser-inputs",
"value": {
"core": "candidate",
"plugin": "artplayer-plugin-danmuku",
"format": "candidate",
"artifact": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"media": "/test/pattern.mp4",
"scenario": "density",
"worker": "Native Blob Worker, only constructor/message/termination observation; no Worker responses, media clocks, layout or RAF mocked",
"heatmap": false
}
},
{
"name": "danmuku-dense-tracks",
"value": [
{
"id": "dense-0",
"mode": "1",
"state": "stop",
"text": "TRACK 0",
"x": 285,
"y": 10,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-1",
"mode": "1",
"state": "stop",
"text": "TRACK 1",
"x": 285,
"y": 33,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-2",
"mode": "1",
"state": "stop",
"text": "TRACK 2",
"x": 285,
"y": 56,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-3",
"mode": "1",
"state": "stop",
"text": "TRACK 3",
"x": 285,
"y": 79,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-4",
"mode": "1",
"state": "stop",
"text": "TRACK 4",
"x": 285,
"y": 102,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
},
{
"id": "dense-5",
"mode": "1",
"state": "stop",
"text": "TRACK 5",
"x": 285,
"y": 125,
"width": 70,
"height": 22.5,
"visibility": "visible",
"display": "block",
"transition": "",
"opacity": "1"
}
]
},
{
"name": "danmuku-worker-and-lifecycle",
"value": {
"workers": [
{
"requests": 6,
"replies": 6,
"terminated": 1,
"errors": []
}
],
"failures": []
}
}
]
}
]
}
],
"regressions": [
{
"file": "refactor/.cache/danmuku04-scheduler-initial.log",
"sha256": "5c85015ab899f73f514e83b881005c4d002bdc9c5418ad0ab9fbf1bbaa85cbb3",
"tests": 18,
"passed": 6,
"failed": 12,
"cause": "Initial candidate scheduler ownership, cancellation and request regression tests before implementation."
},
{
"file": "refactor/.cache/danmuku04-scheduler-reentry-all-red.log",
"sha256": "37194aa46c183f67a0bcda9e50394766971e1c8c2f66301a5e07a1839b8cffaf",
"tests": 32,
"passed": 27,
"failed": 5,
"cause": "Saved actual pre-guard main artifact: synchronous error listener destroy/stop/reset/hide/nested start leaves obsolete start continuation."
},
{
"file": "refactor/.cache/danmuku04-time-nan-red.log",
"sha256": "4492a27bbe61b2718ab586a11c7617ae572a2043c8e9aeb741d145a1b1d74ed8",
"tests": 24,
"passed": 23,
"failed": 1,
"cause": "Frozen source/main/legacy preserve accepted NaN fallback. Intermediate task03 candidate regressed NaN while fixing explicit zero."
}
],
"nativeBefore": {
"file": "refactor/.cache/danmuku04-browser-before/report.json",
"sha256": "ef2b218f71737d379a5fbc9d93d2c0e11f38a556f1e3221efa5164535e80c0e0",
"tests": 8,
"passed": 4,
"failed": 4,
"source": "Task03 actual main, Chromium, two cores; extra same-ID requests and unused duplicate DOM. This snapshot did not itself overlap; task02 had separate actual overlap evidence."
},
"checks": [
{
"file": "refactor/.cache/danmuku04-build-numeric-final.log",
"sha256": "f679e4dd9e03605ecfefb68e8b973acb05a0b891f0cedd9000b73f9e6fe4e8f7"
},
{
"file": "refactor/.cache/danmuku04-lint-complete.log",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
],
"typecheck": {
"file": "refactor/.cache/danmuku03-typecheck.log",
"sha256": "33ced90b0fff4881e9a4477aca1e8c51a5715b8170f71c860518bbdff1c4e606",
"reusedFromTask": "PKG-DANMUKU-03",
"explanation": "No production TS or public declaration changes in task04. Previous complete check covers 366 migrated TS source files and consumers, not the remaining JS."
},
"buildRetry": {
"failure": {
"file": "refactor/.cache/danmuku04-build-copy-failure.log",
"sha256": "9cf9f9b99ce59ba7521b67d4bafcc3163e2a931ea29a79a4a8013facec8d6a1f"
},
"serialRetry": {
"file": "refactor/.cache/danmuku04-build-final.log",
"sha256": "a4ad0ed8d61452d5af294359c5afcb5866227e28a490946ab91b3f2f8da0dc69"
},
"identity": {
"file": "refactor/.cache/danmuku04-build-identity.log",
"sha256": "904d45eb95129f13f0ccce541fea75496be37291a2caa66cf9c2ec06f9b72cc3"
},
"explanation": "Windows UNKNOWN copy error during a browser run; serial retry succeeded and matched already-tested main/legacy bytes. Later numeric fix received another complete normal build and its own final matrices."
},
"sizes": [
{
"file": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c",
"beforeBytes": 55126,
"afterBytes": 59100,
"deltaBytes": 3974,
"beforeGzipBytes": 15687,
"afterGzipBytes": 16799
},
{
"file": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368",
"beforeBytes": 56172,
"afterBytes": 60243,
"deltaBytes": 4071,
"beforeGzipBytes": 16050,
"afterGzipBytes": 17160
},
{
"file": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs",
"sha256": "bb96eb930c4ed9910cf4eca65b3a0fcb85cf6c6a49429f5c9c437490a4680ce3",
"beforeBytes": 80876,
"afterBytes": 87065,
"deltaBytes": 6189,
"beforeGzipBytes": 19534,
"afterGzipBytes": 20852
}
],
"inputs": [
{
"path": "package.json",
"algorithm": "sha256-lf",
"sha256": "b85c8ca62eaab7b400f613620908274c6e02551f2987752220443a00c9de703c"
},
{
"path": "packages/artplayer-plugin-danmuku/ARCHITECTURE.md",
"algorithm": "sha256-lf",
"sha256": "5a6111ec42c5e930786b9a01369f4c1a63e43e8d536f818f23869fd05f3765cf"
},
{
"path": "packages/artplayer-plugin-danmuku/README.md",
"algorithm": "sha256-lf",
"sha256": "6111a8d52b68ee86e43383ee8686ba0676f57741d5da733a400b29a596dba8d7"
},
{
"path": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js",
"algorithm": "sha256-lf",
"sha256": "cb5c475202ab0770682a0395223f7248ffde7854e3b14c39fb6110d152a4d60c"
},
{
"path": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js",
"algorithm": "sha256-lf",
"sha256": "e6a4b144a4b83a8c6a100444ad0ed5f6dbf7157abef8d23c187b4ffa79c23368"
},
{
"path": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs",
"algorithm": "sha256-lf",
"sha256": "bb96eb930c4ed9910cf4eca65b3a0fcb85cf6c6a49429f5c9c437490a4680ce3"
},
{
"path": "packages/artplayer-plugin-danmuku/src/bilibili-parser.js",
"algorithm": "sha256-lf",
"sha256": "46720235c8b9f986ecdda436a16b03a8215e4f3dc0151c16df17dca68f0302bc"
},
{
"path": "packages/artplayer-plugin-danmuku/src/bilibili.js",
"algorithm": "sha256-lf",
"sha256": "39310fb20dfe5f98a492460d7a9f7d3078367ce8f70e383d89f9dc7029d297cc"
},
{
"path": "packages/artplayer-plugin-danmuku/src/config.js",
"algorithm": "sha256-lf",
"sha256": "33b70af031f5a5df0b93bc2dcef74b32ce4674b6a248476dc3a6f65a29deeb1c"
},
{
"path": "packages/artplayer-plugin-danmuku/src/danmuku.js",
"algorithm": "sha256-lf",
"sha256": "8e1d22d382ca6ec14945e77384e78f6ff8bd01506736222d747c077788ac888b"
},
{
"path": "packages/artplayer-plugin-danmuku/src/heatmap.js",
"algorithm": "sha256-lf",
"sha256": "3cf77ff82f62958728445eaf9c044bc4cbcf04a4ea82e753e7c44e59128c16f4"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/check_off.svg",
"algorithm": "sha256-lf",
"sha256": "8cb8e31da1bf7b5be8f4065920b46e1988755910218fb121dd3d9649c50156cf"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/check_on.svg",
"algorithm": "sha256-lf",
"sha256": "c5a34f56c56b0f696b4e3740c73e803076b5bfdfdee89714793118fc4c6baa84"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/config.svg",
"algorithm": "sha256-lf",
"sha256": "bbd7c2952740ac8220f396477eaca3b01f6c249866d880ece38c565cc77c5e36"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/mode_0_off.svg",
"algorithm": "sha256-lf",
"sha256": "fe9e5e1745e8206a4eda0d0ac30815f301c37acccec2564bbda51c1fa4bd1e1e"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/mode_0_on.svg",
"algorithm": "sha256-lf",
"sha256": "96720a81f0315caf6c70664de934e49d22e6dd070a9f6ca1fec2a9a96af4d138"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/mode_1_off.svg",
"algorithm": "sha256-lf",
"sha256": "3ccd22bf3648dc260cd1d0b6a60a9226a853764ae20efb8fe9c940cd856c81b2"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/mode_1_on.svg",
"algorithm": "sha256-lf",
"sha256": "2238ca27e3c7c4c687d10de13b794d8be70ae1c5ba9225ebad27f251cfe5f12a"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/mode_2_off.svg",
"algorithm": "sha256-lf",
"sha256": "31423e3d67c00839adc77dd871dc1da55f77c8b83b5a37b445e4b4c3f46c6d6d"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/mode_2_on.svg",
"algorithm": "sha256-lf",
"sha256": "96b4c9db8d5055c8777fda74cb5e0f32b3e12e62a1e0bacbf75d2088f4505e2f"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/off.svg",
"algorithm": "sha256-lf",
"sha256": "4e6743ee28002e16117caf47ea3bffb34ca75bcc4118744b4ee720829ae3b563"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/on.svg",
"algorithm": "sha256-lf",
"sha256": "cc0fb7048bff6dc3f14a17ed549209c67e9bc34368cb1571e0abd8035c7b59b7"
},
{
"path": "packages/artplayer-plugin-danmuku/src/img/style.svg",
"algorithm": "sha256-lf",
"sha256": "9034ea7b9a214a6d4c086c02cf85f42b1c4487cec0906e919fc91e99dfff529a"
},
{
"path": "packages/artplayer-plugin-danmuku/src/index.js",
"algorithm": "sha256-lf",
"sha256": "956e30c857dbb15147506924308c363dcc4a07bcf1bb97ce3fc436afa366cd9c"
},
{
"path": "packages/artplayer-plugin-danmuku/src/input.js",
"algorithm": "sha256-lf",
"sha256": "6740c347018290de2a8d90925148f63ec005d294426ed8d3192e69313171b8fc"
},
{
"path": "packages/artplayer-plugin-danmuku/src/queue.js",
"algorithm": "sha256-lf",
"sha256": "d566e312686fa486daee0c1618766c41cfb074c04bf872b7bf1bb783a7c57595"
},
{
"path": "packages/artplayer-plugin-danmuku/src/scheduler.js",
"algorithm": "sha256-lf",
"sha256": "cc158ab266c96323d99230183c47e60f162087daa15c8374a73b8d619e305cb6"
},
{
"path": "packages/artplayer-plugin-danmuku/src/setting.js",
"algorithm": "sha256-lf",
"sha256": "ffbaa808551410dc015a5f3ffe4e091f5e1b1bb45eee2d9790cf15cbf82eace2"
},
{
"path": "packages/artplayer-plugin-danmuku/src/style.less",
"algorithm": "sha256-lf",
"sha256": "7148a1bd32f5d3d743db4a4ae8d39dc0e1406d2bff18df42cbb20e6705d5fed9"
},
{
"path": "packages/artplayer-plugin-danmuku/src/worker-client.js",
"algorithm": "sha256-lf",
"sha256": "aca4c442a5722787b28d6b4b0aaa50521fe71c4c0e63e17636dc5e2268cbd925"
},
{
"path": "packages/artplayer-plugin-danmuku/src/worker.js",
"algorithm": "sha256-lf",
"sha256": "05995a16cd728dd5ca513587a777b4be9012b8cc4b77e3a46fed1826e6769c53"
},
{
"path": "playwright.config.js",
"algorithm": "sha256-lf",
"sha256": "df2384f5626252ec933725867e400ec22eb92bc5e6f04873059b32decf2f2d56"
},
{
"path": "test/browser/danmuku-scheduler.spec.js",
"algorithm": "sha256-lf",
"sha256": "506cc9dc75be822ea79d51c7e8fe6a68d526b41f26af626401d1d60329cbb724"
},
{
"path": "test/browser/fixtures.js",
"algorithm": "sha256-lf",
"sha256": "313414b8958eb5b03a2da8595fa0bbf6bfdc01484373898c6cb7179545df175d"
},
{
"path": "test/browser/server.mjs",
"algorithm": "sha256-lf",
"sha256": "1406fac75eabc83b987e79ec7b5f97a948b27770bfd5f5290d7cb9155196f08f"
},
{
"path": "test/danmuku-input.test.js",
"algorithm": "sha256-lf",
"sha256": "bccd24096dabd5270ba3624dc071d56a492cf44b3045c78ae261d4510ae6e712"
},
{
"path": "test/danmuku-parser.test.js",
"algorithm": "sha256-lf",
"sha256": "ae2dae43f447c1361662f70e90009c8978e1d96bbb133b7b07baafc9d765d70e"
},
{
"path": "test/danmuku-scheduler.test.js",
"algorithm": "sha256-lf",
"sha256": "7c1c3d81c4cc37f1ddcd18f3c35c8825061887ada6e1f395cb4d8efb73f66727"
},
{
"path": "test/danmuku-worker-client.test.js",
"algorithm": "sha256-lf",
"sha256": "55d7754224afa5567cafd880c28d923b9ff0e0661ecfb4ea1d9c923ddb84ae3b"
},
{
"path": "test/helpers/danmuku-candidate.js",
"algorithm": "sha256-lf",
"sha256": "215aa631baa36f2434e95fc11f178fd9a4cca71834db0dd5e93d06356674445a"
}
],
"decisions": [
"Single pending RAF or async frame, generation and node ownership after awaits/callbacks.",
"Unique correlated Worker IDs and pending settlement on cancellation/failure/disposal; unchanged actual track algorithm.",
"Preserve public facade and ordinary repeated start/stop events, timing, pool order, callback receiver and configuration semantics.",
"Guard recovery reentry using generation and start-attempt identity as well as lifecycle/fault state.",
"Restore legacy NaN currentTime+0.5 fallback while retaining corrected zero and old positive/negative Infinity behavior."
],
"limitations": [
"JS responsibility separation; full owned TS and root/runtime installed declarations remain task06.",
"Synthetic long-clock regression is not an hours-long native workload or heap benchmark; package stability acceptance remains task07.",
"Native recovery fault events and constructor failure use explicit seams; not real CSP/SDK constructor-failure coverage.",
"ESM built and dist/docs bytes match; ESM is not counted as an additional runtime-tested format.",
"Settings external DOM/timer/late-send and heatmap issues remain open for task05.",
"Windows WebKit is not physical Safari. Local fixture video does not establish arbitrary remote content compatibility.",
"Intermediate 48/60 native matrices passed before later edge-case discoveries; final acceptance is only the five numeric-final archives listed above."
],
"releaseReady": false
}