diff --git a/refactor/baselines/multiple-subtitles-seek-diagnostics.json b/refactor/baselines/multiple-subtitles-seek-diagnostics.json
new file mode 100644
index 000000000..8006fa40f
--- /dev/null
+++ b/refactor/baselines/multiple-subtitles-seek-diagnostics.json
@@ -0,0 +1,7080 @@
+{
+ "task": "PKG-MULTI-SUB-05",
+ "status": "doing",
+ "checkpoint": "Source-seek diagnostics, not a production fix",
+ "baselineCommit": "318de37e8a1be59942facc62d98e4847b0ef4891",
+ "recordedAt": "2026-09-14T06:02:41.014Z",
+ "node": "v24.21.0",
+ "yarn": "1.22.22",
+ "maintainedSources": [
+ {
+ "path": "test/browser/multiple-subtitles-combinations.spec.js",
+ "sha256": "c65d9336b5fa8924d389a48d34604734bc7de80604fc3d417f30432bb0f3235d"
+ },
+ {
+ "path": "test/browser/source-seek-diagnostics.js",
+ "sha256": "3234c17a179efba0850d8a37924fdf8e24ca3506a3624fdbfc02a9d34c0c2183"
+ },
+ {
+ "path": "test/browser/source-restoration.js",
+ "sha256": "0bca60d1fbdb5c0e200f40a5d0edb2e79698f48ac6cc8c5815787490febd9240"
+ }
+ ],
+ "artifacts": [
+ {
+ "path": "packages/artplayer/dist/artplayer.js",
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "unchangedFromBaseline": true
+ },
+ {
+ "path": "packages/artplayer-plugin-multiple-subtitles/dist/artplayer-plugin-multiple-subtitles.js",
+ "sha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "unchangedFromBaseline": true
+ }
+ ],
+ "runs": [
+ {
+ "name": "serial",
+ "traceMode": "1",
+ "restoreEvent": false,
+ "report": {
+ "path": "refactor/.cache/multi-switch-diagnostics-serial-browser/report.json",
+ "sha256": "fc11662dd5789adb897f2a0cadd6fbeaf2e55ef185529cc278731742406cf125"
+ },
+ "log": {
+ "path": "refactor/.cache/multi-switch-diagnostics.log",
+ "sha256": "27a78f25e01d71f244118f909551a073695cbaddb78b94353695263e6b237f6e"
+ },
+ "stats": {
+ "startTime": "2026-09-14T05:45:51.588Z",
+ "duration": 15913.146999999999,
+ "expected": 3,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "inputs": [
+ {
+ "project": "webkit",
+ "browser": "26.6",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ }
+ ],
+ "tests": [
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.502024,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "
First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 30,
+ "nextWriteAfterSeekedMs": 13,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2579,
+ "time": 2.5020196,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2731,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2731,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2736,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 2987,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 2987,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 2987,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 2987,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 2987,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 2987,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 2987,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3016,
+ "time": 0.0011896,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3017,
+ "time": 0.0011896,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3017,
+ "time": 0.0011896,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3030,
+ "time": 0.0011896,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3030,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3030,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3047,
+ "time": 1.501843,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3047,
+ "time": 1.501843,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3048,
+ "time": 1.501843,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3227,
+ "time": 1.501843,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3228,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3228,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3248,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3249,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3264,
+ "time": 4.502024,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3264,
+ "time": 4.502024,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 30,
+ "nextWriteAfterSeekedMs": 19,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2529,
+ "time": 2.5023081,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2677,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2677,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2683,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 2914,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 2915,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 2915,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 2915,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 2915,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 2915,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 2915,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 2945,
+ "time": 0.0050127,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2945,
+ "time": 0.0050127,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 2945,
+ "time": 0.0050127,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 2964,
+ "time": 0.0050127,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 2964,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 2964,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 2992,
+ "time": 1.5017344,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 2992,
+ "time": 1.5017344,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2993,
+ "time": 1.5017344,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 2993,
+ "time": 1.5017344,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3166,
+ "time": 1.5017344,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3166,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3166,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3191,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3207,
+ "time": 4.5016287,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3207,
+ "time": 4.5016287,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3568,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3568,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": false,
+ "settlementToSeekedMs": 0,
+ "nextWriteAfterSeekedMs": 10,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2495,
+ "time": 2.5022056,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2568,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2568,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2578,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 2797,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 2797,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 2797,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 2798,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 2798,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 2798,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 2828,
+ "time": 0.0012972,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2828,
+ "time": 0.0012972,
+ "seeking": false
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 2829,
+ "time": 0.0012972,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 2829,
+ "time": 0.0012972,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 2839,
+ "time": 0.0012972,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 2839,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 2839,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 2858,
+ "time": 1.5017953,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2859,
+ "time": 1.5017953,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 2859,
+ "time": 1.5017953,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3056,
+ "time": 1.5017953,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3056,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3056,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3077,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3077,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3093,
+ "time": 4.5005706,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3094,
+ "time": 4.5005706,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3456,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3456,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "repeat",
+ "traceMode": "1",
+ "restoreEvent": false,
+ "report": {
+ "path": "refactor/.cache/multi-switch-diagnostics-repeat-browser/report.json",
+ "sha256": "836bf81f07973b1b937170ca75ff67c53dcef2eb45d2307b9463ef9a74f62c26"
+ },
+ "log": {
+ "path": "refactor/.cache/multi-switch-diagnostics-repeat.log",
+ "sha256": "d141bb998041527b46e06fd16a2bef31ccb466de70895beefbec1625b7337534"
+ },
+ "stats": {
+ "startTime": "2026-09-14T05:47:19.910Z",
+ "duration": 33143.902,
+ "expected": 9,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "inputs": [
+ {
+ "project": "webkit",
+ "browser": "26.6",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ }
+ ],
+ "tests": [
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5005721,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 30,
+ "nextWriteAfterSeekedMs": 146,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 4727,
+ "time": 2.5023962,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 4804,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 4805,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 4819,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 5188,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 5188,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 5188,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 5188,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 5188,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 5189,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 5189,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 5219,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 5219,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 5219,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 5365,
+ "time": 0,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 5365,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 5366,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 5394,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 5394,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 5409,
+ "time": 1.5029635,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 5410,
+ "time": 1.5029635,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 5662,
+ "time": 1.5029635,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 5662,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 5662,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 5686,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 5686,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 5730,
+ "time": 4.5005721,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 5730,
+ "time": 4.5005721,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 50,
+ "nextWriteAfterSeekedMs": 32,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 4882,
+ "time": 2.5060656,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 4975,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 4975,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 4985,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 5362,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 5362,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 5363,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 5363,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 5363,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 5364,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 5364,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 5414,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 5414,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 5414,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 5446,
+ "time": 0,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 5446,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 5447,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 5468,
+ "time": 1.501757,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 5469,
+ "time": 1.501757,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 5469,
+ "time": 1.501757,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 5470,
+ "time": 1.501757,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 5721,
+ "time": 1.501757,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 5721,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 5721,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 5745,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 5745,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 5773,
+ "time": 4.5018178,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 5774,
+ "time": 4.5018178,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 6178,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 6178,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": false,
+ "settlementToSeekedMs": 0,
+ "nextWriteAfterSeekedMs": 40,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 3557,
+ "time": 2.5014341,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3620,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3620,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 3626,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3893,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3893,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3894,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3894,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3895,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3895,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3922,
+ "time": 0.0010832,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3922,
+ "time": 0.0010832,
+ "seeking": false
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3923,
+ "time": 0.0010832,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3923,
+ "time": 0.0010832,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3963,
+ "time": 0.0010832,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3963,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3964,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3981,
+ "time": 1.5020141,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3982,
+ "time": 1.5020141,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3982,
+ "time": 1.5020141,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 4184,
+ "time": 1.5020141,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 4184,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 4184,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 4197,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 4197,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 4227,
+ "time": 4.5046401,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 4227,
+ "time": 4.5046401,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 4589,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 4589,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5005361,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 31,
+ "nextWriteAfterSeekedMs": 17,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2972,
+ "time": 2.5017732,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3032,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3032,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 3212,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3294,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3294,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3294,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3294,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3294,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3294,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3294,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3325,
+ "time": 0.0014528,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3325,
+ "time": 0.0014528,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3325,
+ "time": 0.0014528,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3342,
+ "time": 0.0014528,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3343,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3343,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3371,
+ "time": 1.5017692,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3371,
+ "time": 1.5017692,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3372,
+ "time": 1.5017692,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3372,
+ "time": 1.5017692,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3570,
+ "time": 1.5017692,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3570,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3570,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3585,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3585,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3600,
+ "time": 4.5005361,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3601,
+ "time": 4.5005361,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 30,
+ "nextWriteAfterSeekedMs": 25,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2767,
+ "time": 2.5021566,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2883,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2883,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2890,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3153,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3153,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3153,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3153,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3153,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3154,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3154,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3184,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3184,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3184,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3209,
+ "time": 0,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3209,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3209,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3228,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3229,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3245,
+ "time": 1.5056139,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3245,
+ "time": 1.5056139,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3432,
+ "time": 1.5056139,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3432,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3432,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3460,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3460,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3476,
+ "time": 4.5019478,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3476,
+ "time": 4.5019478,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3833,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3833,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": false,
+ "settlementToSeekedMs": 0,
+ "nextWriteAfterSeekedMs": 54,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2804,
+ "time": 2.5024579,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2940,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2940,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2946,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3194,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3194,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3195,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3195,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3196,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3196,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3223,
+ "time": 0.005095,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3224,
+ "time": 0.005095,
+ "seeking": false
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3224,
+ "time": 0.005095,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3224,
+ "time": 0.005095,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3278,
+ "time": 0.005095,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3278,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3278,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3302,
+ "time": 1.5006567,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3302,
+ "time": 1.5006567,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3302,
+ "time": 1.5006567,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3303,
+ "time": 1.5006567,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3489,
+ "time": 1.5006567,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3489,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3490,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3503,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3503,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3533,
+ "time": 4.5036487,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3533,
+ "time": 4.5036487,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3905,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3905,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5122093,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 31,
+ "nextWriteAfterSeekedMs": 16,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2696,
+ "time": 2.5004958,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2757,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2757,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2764,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3025,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3026,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3026,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3026,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3026,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3026,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3026,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3056,
+ "time": 0.0052703,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3056,
+ "time": 0.0052703,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3057,
+ "time": 0.0052703,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3073,
+ "time": 0.0052703,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3073,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3073,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3101,
+ "time": 1.5019792,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3101,
+ "time": 1.5019792,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3102,
+ "time": 1.5019792,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3102,
+ "time": 1.5019792,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3301,
+ "time": 1.5019792,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3301,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3301,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3319,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3319,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3349,
+ "time": 4.5122093,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3349,
+ "time": 4.5122093,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 30,
+ "nextWriteAfterSeekedMs": 17,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2773,
+ "time": 2.5015324,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2857,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2857,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2867,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3129,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3129,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3129,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3130,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3130,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3130,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3130,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3160,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3160,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3160,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3177,
+ "time": 0,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3177,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3178,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3206,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3206,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3221,
+ "time": 1.5020459,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3221,
+ "time": 1.5020459,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3408,
+ "time": 1.5020459,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3408,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3408,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3438,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3438,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3453,
+ "time": 4.5005997,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3453,
+ "time": 4.5005997,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3797,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3797,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": false,
+ "settlementToSeekedMs": 0,
+ "nextWriteAfterSeekedMs": 13,
+ "nativeRateWrites": 0
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2861,
+ "time": 2.5022851,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2923,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2924,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2926,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3174,
+ "time": 0,
+ "seeking": false,
+ "value": 0
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3175,
+ "time": 0,
+ "seeking": true,
+ "value": 0
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3175,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3175,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3175,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3175,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3204,
+ "time": 0.0048412,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3204,
+ "time": 0.0048412,
+ "seeking": false
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3205,
+ "time": 0.0048412,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3205,
+ "time": 0.0048412,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3218,
+ "time": 0.0048412,
+ "seeking": false,
+ "value": 1.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3218,
+ "time": 1.5,
+ "seeking": true,
+ "value": 1.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3218,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3235,
+ "time": 1.5018629,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3235,
+ "time": 1.5018629,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3235,
+ "time": 1.5018629,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3236,
+ "time": 1.5018629,
+ "seeking": false
+ },
+ {
+ "event": "before:currentTime",
+ "clock": 3400,
+ "time": 1.5018629,
+ "seeking": false,
+ "value": 4.5
+ },
+ {
+ "event": "after:currentTime",
+ "clock": 3400,
+ "time": 4.5,
+ "seeking": true,
+ "value": 4.5
+ },
+ {
+ "event": "art:seek",
+ "clock": 3400,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3420,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3421,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3436,
+ "time": 4.501398,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3436,
+ "time": 4.501398,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3793,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3793,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "passive-matrix",
+ "traceMode": "events",
+ "restoreEvent": false,
+ "report": {
+ "path": "refactor/.cache/multi-switch-passive-matrix-browser/report.json",
+ "sha256": "425787c1ac75ec29b9a4d23370f3bbcfb20cbdbd42ce5924ef561200957fcc8b"
+ },
+ "log": {
+ "path": "refactor/.cache/multi-switch-passive-matrix.log",
+ "sha256": "42baa0171736f0c26c12402fb79fd371e46ad5d181f1eaf5202456ed9e584d94"
+ },
+ "stats": {
+ "startTime": "2026-09-14T05:50:11.884Z",
+ "duration": 85746.87,
+ "expected": 105,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "inputs": [
+ {
+ "project": "chromium",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ },
+ {
+ "project": "firefox",
+ "browser": "155.0",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ },
+ {
+ "project": "webkit",
+ "browser": "26.6",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ }
+ ],
+ "tests": [
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 2,
+ "nextWriteAfterSeekedMs": 8.699999988079071
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 774.3000000119209,
+ "time": 2.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 775,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 775.1999999880791,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 775.6000000238419,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 780,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 780,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 780,
+ "time": 0,
+ "seeking": true,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 780.1999999880791,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 780.1999999880791,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 780.1999999880791,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 782.1999999880791,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 782.1999999880791,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 782.1999999880791,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 790.8999999761581,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 791,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 795.6000000238419,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 795.8000000119209,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 795.8000000119209,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 816.1000000238419,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 816.1999999880791,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 826.3000000119209,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 826.3999999761581,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 826.3999999761581,
+ "time": 4.5,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 1.399999976158142,
+ "nextWriteAfterSeekedMs": 8.100000023841858
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 777.7999999523163,
+ "time": 2.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 778.6999999880791,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 778.8999999761581,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 779.5,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 783.5,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 783.5999999642372,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 783.6999999880791,
+ "time": 0,
+ "seeking": true,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 783.6999999880791,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 783.7999999523163,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 783.8999999761581,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 785,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 785.0999999642372,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 785.0999999642372,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 793.1999999880791,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5,
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 793.3999999761581,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 797.6999999880791,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 797.7999999523163,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 797.7999999523163,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 819.3999999761581,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5,
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 819.5,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 829.7999999523163,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 829.8999999761581,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 830,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 851.3999999761581,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 851.3999999761581,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": false,
+ "settlementToSeekedMs": 0.10000002384185791,
+ "nextWriteAfterSeekedMs": 9.399999976158142
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 712.1999999880791,
+ "time": 2.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 713.4000000357628,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 713.6000000238419,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 713.9000000357628,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 718.3000000119209,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 718.4000000357628,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 718.4000000357628,
+ "time": 0,
+ "seeking": true,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "native:canplay",
+ "clock": 718.4000000357628,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 718.5,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 719.4000000357628,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 719.5,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 719.6000000238419,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 719.6999999880791,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 729,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5,
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 729.1999999880791,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 732.5,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 732.6000000238419,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 732.6000000238419,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 753.4000000357628,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5,
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 753.6999999880791,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 764.4000000357628,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 764.5,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 764.5,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 780.4000000357628,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 780.4000000357628,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ },
+ "order": {
+ "settledSeeking": false,
+ "settlementToSeekedMs": 1,
+ "nextWriteAfterSeekedMs": 12
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 1525,
+ "time": 2.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 1526,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1526,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 1526,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 1533,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 1538,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "art:restart",
+ "clock": 1538,
+ "time": 0,
+ "seeking": false,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 1538,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1538,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1538,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1538,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1539,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1539,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 1551,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1551,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1576,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1577,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1577,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1594,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 1611,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1612,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1679,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1679,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1679,
+ "time": 4.5,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 0,
+ "nextWriteAfterSeekedMs": 13
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 1543,
+ "time": 2.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 1546,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1546,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 1546,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 1553,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 1555,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 1555,
+ "time": 0,
+ "seeking": true,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 1557,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1557,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1557,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1557,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1557,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1557,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 1570,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5,
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1571,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1593,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1593,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1593,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1612,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 1629,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5,
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1629,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1692,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1692,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1692,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 1715,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1716,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": false,
+ "settlementToSeekedMs": 0,
+ "nextWriteAfterSeekedMs": 11
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 1131,
+ "time": 2.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 1132,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1133,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 1133,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 1140,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 1141,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 1141,
+ "time": 0,
+ "seeking": true,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1141,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1141,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1142,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 1142,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1142,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1142,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 1153,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5,
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1154,
+ "time": 1.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1175,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1176,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1176,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1192,
+ "time": 1.5,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 1203,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5,
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 1203,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1260,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 1260,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 1260,
+ "time": 4.5,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 1282,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 1282,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5005281,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 43,
+ "nextWriteAfterSeekedMs": 55
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2899,
+ "time": 2.5004977,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2965,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2965,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 2969,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3236,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3236,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3237,
+ "time": 0,
+ "seeking": true,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3238,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3238,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3281,
+ "time": 0.0021265,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3281,
+ "time": 0.0021265,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3281,
+ "time": 0.0021265,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 3336,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3356,
+ "time": 1.5014593,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3357,
+ "time": 1.5014593,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3357,
+ "time": 1.5014593,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 3576,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3599,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3599,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3615,
+ "time": 4.5005281,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3615,
+ "time": 4.5005281,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": true,
+ "settlementToSeekedMs": 46,
+ "nextWriteAfterSeekedMs": 114
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2823,
+ "time": 2.5020474,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 2898,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 2898,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 3097,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3169,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3169,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3169,
+ "time": 0,
+ "seeking": true,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3169,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3169,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3215,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3215,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3215,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 3329,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5,
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3350,
+ "time": 1.5019142,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3350,
+ "time": 1.5019142,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3350,
+ "time": 1.5019142,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3350,
+ "time": 1.5019142,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 3543,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5,
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3569,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3569,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3585,
+ "time": 4.5018354,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3585,
+ "time": 4.5018354,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3925,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3925,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ },
+ "order": {
+ "settledSeeking": false,
+ "settlementToSeekedMs": 0,
+ "nextWriteAfterSeekedMs": 48
+ },
+ "events": [
+ {
+ "event": "before-switch",
+ "clock": 2917,
+ "time": 2.502449,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 3013,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3013,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadstart",
+ "clock": 3019,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:loadedmetadata",
+ "clock": 3296,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:loadeddata",
+ "clock": 3296,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "art:restart",
+ "clock": 3296,
+ "time": 0,
+ "seeking": true,
+ "value": [
+ "/test/pattern.mp4?subtitles-combination"
+ ]
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3297,
+ "time": 0,
+ "seeking": true
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3326,
+ "time": 0.000431,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3326,
+ "time": 0.000431,
+ "seeking": false
+ },
+ {
+ "event": "switch-resolved",
+ "clock": 3327,
+ "time": 0.000431,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3327,
+ "time": 0.000431,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 3375,
+ "time": 1.5,
+ "seeking": true,
+ "value": [
+ 1.5,
+ 1.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3401,
+ "time": 1.5005854,
+ "seeking": false
+ },
+ {
+ "event": "native:canplay",
+ "clock": 3401,
+ "time": 1.5005854,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3402,
+ "time": 1.5005854,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3402,
+ "time": 1.5005854,
+ "seeking": false
+ },
+ {
+ "event": "art:seek",
+ "clock": 3615,
+ "time": 4.5,
+ "seeking": true,
+ "value": [
+ 4.5,
+ 4.5
+ ]
+ },
+ {
+ "event": "native:seeking",
+ "clock": 3631,
+ "time": 4.5,
+ "seeking": true
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 3646,
+ "time": 4.5019489,
+ "seeking": false
+ },
+ {
+ "event": "native:seeked",
+ "clock": 3646,
+ "time": 4.5019489,
+ "seeking": false
+ },
+ {
+ "event": "native:emptied",
+ "clock": 4018,
+ "time": 0,
+ "seeking": false
+ },
+ {
+ "event": "native:timeupdate",
+ "clock": 4018,
+ "time": 0,
+ "seeking": false
+ }
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published core decodes entities once and preserves literal and semantic tags",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate core decodes entities once and preserves literal and semantic tags",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published core decodes entities once and preserves literal and semantic tags",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate core decodes entities once and preserves literal and semantic tags",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published core decodes entities once and preserves literal and semantic tags",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate core decodes entities once and preserves literal and semantic tags",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.2: independently timed captions overlap and clear",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.7: independently timed captions overlap and clear",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.2: independently timed captions overlap and clear",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.7: independently timed captions overlap and clear",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.2: independently timed captions overlap and clear",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.7: independently timed captions overlap and clear",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: SRT display and selectors survive the resource refactor",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: destroy settles a pending native request before it responds",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: destroy revokes the Blob and retained reset stays inert",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: native HTTP error rejects without installing subtitles",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: video source switching retains cached subtitle selection",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: inline timestamps remain native instructions without visible time tags",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: SRT display and selectors survive the resource refactor",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: destroy settles a pending native request before it responds",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: destroy revokes the Blob and retained reset stays inert",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: native HTTP error rejects without installing subtitles",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: video source switching retains cached subtitle selection",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: inline timestamps remain native instructions without visible time tags",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: SRT display and selectors survive the resource refactor",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: destroy settles a pending native request before it responds",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: destroy revokes the Blob and retained reset stays inert",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: native HTTP error rejects without installing subtitles",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: video source switching retains cached subtitle selection",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: inline timestamps remain native instructions without visible time tags",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: SRT display and selectors survive the resource refactor",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: destroy settles a pending native request before it responds",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: destroy revokes the Blob and retained reset stays inert",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: native HTTP error rejects without installing subtitles",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: video source switching retains cached subtitle selection",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: inline timestamps remain native instructions without visible time tags",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: SRT display and selectors survive the resource refactor",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: destroy settles a pending native request before it responds",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: destroy revokes the Blob and retained reset stays inert",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: native HTTP error rejects without installing subtitles",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: video source switching retains cached subtitle selection",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate published core: inline timestamps remain native instructions without visible time tags",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: SRT display and selectors survive the resource refactor",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: destroy settles a pending native request before it responds",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: destroy revokes the Blob and retained reset stays inert",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: native HTTP error rejects without installing subtitles",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: video source switching retains cached subtitle selection",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate candidate core: inline timestamps remain native instructions without visible time tags",
+ "project": "webkit",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "default-matrix",
+ "traceMode": "off",
+ "restoreEvent": false,
+ "report": {
+ "path": "refactor/.cache/multi-switch-untraced-matrix-browser/report.json",
+ "sha256": "aede040afe0ee4a9d7ddbe19487bd6da281204ea2431474088a68b2c3b9010d4"
+ },
+ "log": {
+ "path": "refactor/.cache/multi-switch-untraced-matrix.log",
+ "sha256": "9d91f6a62abed1db37dc752268a2b58a81cd3623e97d3ec3d7edd2c16c2cb98e"
+ },
+ "stats": {
+ "startTime": "2026-09-14T05:52:28.351Z",
+ "duration": 74886.029,
+ "expected": 62,
+ "skipped": 0,
+ "unexpected": 1,
+ "flaky": 0
+ },
+ "inputs": [
+ {
+ "project": "chromium",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ },
+ {
+ "project": "firefox",
+ "browser": "155.0",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ },
+ {
+ "project": "webkit",
+ "browser": "26.6",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ }
+ ],
+ "tests": [
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: destroying one player preserves another player's captions and URLs",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: destroying one player preserves another player's captions and URLs",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "failed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": false,
+ "paused": true,
+ "time": 0.0015139,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ }
+ ],
+ "active": [],
+ "displayed": ""
+ },
+ "errors": [
+ "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.art-subtitle-b')\nExpected: \u001b[32m\"Translation\"\u001b[39m\nTimeout: 7000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toHaveText\" locator('.art-subtitle-b') with timeout 7000ms\u001b[22m\n\u001b[2m - waiting for locator('.art-subtitle-b')\u001b[22m\n\n\n 114 | await expect.poll(() => page.evaluate(() => window.art.video.seeking)).toBe(false)\n 115 | await seek(page, 1.5)\n> 116 | await expect(page.locator('.art-subtitle-b')).toHaveText('Translation')\n | ^\n 117 | await page.evaluate(() => window.art.plugins.multipleSubtitles.reset())\n 118 | await expect(page.locator('.art-subtitle-a')).toHaveText('First')\n 119 | await seek(page, 4.5)\n at D:\\github\\ArtPlayer\\test\\browser\\multiple-subtitles-combinations.spec.js:116:51"
+ ]
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: destroying one player preserves another player's captions and URLs",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.2: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.1.7: record single-active-cue overlap boundary",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.2.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.1.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles published-1.0.0-main / candidate core: unchanged old factory and selection calls",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.2: independently timed captions overlap and clear",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.7: independently timed captions overlap and clear",
+ "project": "chromium",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.2: independently timed captions overlap and clear",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.7: independently timed captions overlap and clear",
+ "project": "firefox",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.2: independently timed captions overlap and clear",
+ "project": "webkit",
+ "status": "passed"
+ },
+ {
+ "title": "Multiple subtitles legacy host published-5.1.7: independently timed captions overlap and clear",
+ "project": "webkit",
+ "status": "passed"
+ }
+ ]
+ },
+ {
+ "name": "event-control",
+ "traceMode": "off",
+ "restoreEvent": true,
+ "report": {
+ "path": "refactor/.cache/multi-switch-event-barrier-browser/report.json",
+ "sha256": "7bf04b852fc4e6c9e4a11ba496b3167e5bd7b48b0c5c791122dbc6c28fe7de0b"
+ },
+ "log": {
+ "path": "refactor/.cache/multi-switch-event-barrier.log",
+ "sha256": "405bc88c9f6540b5c2528f7ef874be0c14a32647102a5514d2c36dfabb23b616"
+ },
+ "stats": {
+ "startTime": "2026-09-14T05:55:40.136Z",
+ "duration": 54635.01,
+ "expected": 27,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "inputs": [
+ {
+ "project": "chromium",
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ },
+ {
+ "project": "firefox",
+ "browser": "155.0",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ },
+ {
+ "project": "webkit",
+ "browser": "26.6",
+ "platform": "win32",
+ "core": {
+ "source": {
+ "kind": "artifact",
+ "file": "D:\\github\\ArtPlayer\\packages\\artplayer\\dist\\artplayer.js"
+ },
+ "sha256": "cab41b4a6b47dfacfc2d99b923273043b48f0ad93c3e808af0bfa84ffe1cf26e",
+ "bytes": 208931
+ },
+ "media": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ }
+ }
+ ],
+ "tests": [
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "chromium",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "153.0.8010.12",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "firefox",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "155.0",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5024423,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.5015735,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published-5.3.0: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published-5.3.0",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 4.500782,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "displayed": "Second"
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / published: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "published",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ },
+ {
+ "title": "Multiple subtitles candidate / candidate: timed VTT and SRT, offsets, fullscreen and source change",
+ "project": "webkit",
+ "status": "passed",
+ "input": {
+ "core": "candidate",
+ "plugin": "candidate",
+ "pluginSha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b",
+ "browser": "26.6",
+ "scope": "Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim"
+ },
+ "finalState": {
+ "destroyed": true,
+ "paused": true,
+ "time": 0,
+ "offset": 0,
+ "cues": [
+ {
+ "start": 1,
+ "end": 3,
+ "text": "First
"
+ },
+ {
+ "start": 1,
+ "end": 3,
+ "text": "Translation
"
+ },
+ {
+ "start": 4,
+ "end": 6,
+ "text": "Second
"
+ }
+ ],
+ "active": [],
+ "displayed": "\n Second\n "
+ }
+ }
+ ]
+ }
+ ],
+ "limits": [
+ "Mode metadata added to future per-test input attachments after these runs; selected flags above come from the recorded execution commands.",
+ "3 serial and9 repeated property traces passed; the105 events-only assertions include historical deficiency observations.",
+ "Default63 matrix still fails old5.3.0 WebKit at time0.0015139 with intact1..3 cue. No failing native-write trace was captured.",
+ "Opt-in event control27 cases passed. It does not change or validate the old immediate switch/seek contract, and is not the default path.",
+ "Diagnostic overhead and intermittent timing remain possible explanations for passing observed runs; no causal claim or production fix is made.",
+ "Desktop engines and actual main files only in this checkpoint; physical devices, package acceptance and publication gates remain incomplete."
+ ],
+ "finalChecks": {
+ "path": "refactor/.cache/multi-switch-diagnostics-final.log",
+ "sha256": "55136f46bbeae983db603c0fbd36398b3b1820d44a7332683f5b0fa0a2e20002",
+ "exitCode": 0
+ }
+}
diff --git a/refactor/changes/2026-09-14-PKG-MULTI-SUB-05-seek-diagnostics.md b/refactor/changes/2026-09-14-PKG-MULTI-SUB-05-seek-diagnostics.md
new file mode 100644
index 000000000..4823d3488
--- /dev/null
+++ b/refactor/changes/2026-09-14-PKG-MULTI-SUB-05-seek-diagnostics.md
@@ -0,0 +1,63 @@
+# PKG-MULTI-SUB-05 checkpoint: source-seek diagnostics (not complete)
+
+Task11 is committed as318de37e8 and its commit audit passed. This checkpoint
+continues the reopened old-core source-seek issue without changing production
+code, declarations, dependencies or built artifacts.
+
+## Added evidence
+
+The optional diagnostics capture native events, public seek/fullscreen events,
+monotonic times, native position/duration/seeking, active cues and switch Promise
+settlement. Full mode forwards the original native currentTime/playbackRate
+accessors and records writes/stacks; events mode leaves those properties intact.
+Both modes are opt-in. Diagnostic side observers handle rejection while the
+original returned Promise still rejects for the test consumer.
+
+Initial WebKit serial3 and repeated9 cases pass their caption assertions. The
+repeated traces show all six old-core switches resolve while seeking=true;
+restoration seeked is delivered30..50ms later. The three candidate switches wait
+for restoration. No playback-rate assignment was observed in these source steps.
+The successful later user writes occurred after the prior native seeked event.
+
+The actual-main events-only matrix passes105 assertions, including explicitly
+labelled historical overlap/offset defect observations. It again shows early
+old-core settlement, including WebKit native seeked43/46ms later. This is not
+proof the previously missed seeks were repaired: observation may affect timing,
+and no failing native write trace was captured in those runs.
+
+The subsequent actual-main matrix with diagnostics disabled has62 passes and one
+failure on old5.3.0/WebKit. At failure, media time is0.0015139, the1..3-second cue
+is intact, active cues are empty, and the player is still alive. The candidate
+and other old-core cases pass in that run. This reproduces the same near-zero
+position category previously seen on old5.4.0; it does not implicate ASS conversion
+or prove the precise internal native overwrite sequence.
+
+## Separate restoration-event control
+
+`source-restoration.js` installs a native metadata listener before switchUrl.
+After the core's metadata handler, it waits for native seeked if seeking is active,
+and also waits for the original switch Promise. It cleans both listeners on
+completion or failure. There are no fixed delays, seek retries or source rewrites.
+It is enabled only with ARTPLAYER_SOURCE_RESTORE_EVENT=1; the default failing
+property-based path and existing immediate-call ordering probe remain available.
+
+With diagnostics disabled, the event control passes27 cases: three repetitions
+of three core inputs across three desktop engines using actual main artifacts.
+This supports independently verifying captions after native restoration. It is
+not proof of a production fix, or sufficient evidence to close the original
+immediate-seek failure. Do not make the normal path green by relabelling this
+control as the original public API behavior.
+
+Reports, input/artifact hashes, selected modes, timings and remaining failures are
+in [the checkpoint evidence](../baselines/multiple-subtitles-seek-diagnostics.json).
+The browser README documents flags. Explicit test/helper lint, CI50 and plan/risk
+checks pass. No source or package build was needed for these test-only additions.
+
+## Remaining work
+
+MULTI-SUB-SWITCH-01 stays open and task05 stays doing. The next diagnostic step is
+to capture the failed default path's restoration completion versus subsequent
+native seek without assuming that property polling equals event completion.
+Keep candidate public switch guarantees separate from immutable old-host defects;
+do not patch the shared media clock from the subtitle plugin. Broader historical
+profile/device acceptance and task06 distribution gates remain incomplete.
diff --git a/refactor/plan.md b/refactor/plan.md
index 602674741..fb35374ca 100644
--- a/refactor/plan.md
+++ b/refactor/plan.md
@@ -558,7 +558,7 @@
- PKG-MULTI-SUB-04: [记录](baselines/multiple-subtitles-runtime-types.json) [记录](changes/2026-09-13-PKG-MULTI-SUB-04-runtime-types.md) [记录](baselines/multiple-subtitles-public-types.json) [记录](changes/2026-09-13-PKG-MULTI-SUB-04-public-types.md) [记录](type-compatibility-policy.md) [记录](baselines/multiple-subtitles-approved-types.json) [记录](changes/2026-09-13-PKG-MULTI-SUB-04-approved-types.md)
- PKG-MULTI-SUB-07: [记录](baselines/multiple-subtitles-timestamps.json) [记录](changes/2026-09-13-PKG-MULTI-SUB-07-timestamps.md)
- PKG-MULTI-SUB-08: [记录](changes/2026-09-14-PKG-MULTI-SUB-08-entities.md) [记录](baselines/multiple-subtitles-entities-validation.json)
-- PKG-MULTI-SUB-05: [记录](changes/2026-09-14-PKG-MULTI-SUB-05-combinations.md) [记录](baselines/multiple-subtitles-combinations-validation.json) [记录](baselines/multiple-subtitles-cores.json)
+- PKG-MULTI-SUB-05: [记录](changes/2026-09-14-PKG-MULTI-SUB-05-combinations.md) [记录](baselines/multiple-subtitles-combinations-validation.json) [记录](baselines/multiple-subtitles-cores.json) [记录](changes/2026-09-14-PKG-MULTI-SUB-05-seek-diagnostics.md) [记录](baselines/multiple-subtitles-seek-diagnostics.json)
- PKG-JASSUB-01: [记录](baselines/jassub-release.json) [记录](baselines/jassub-vendor.json) [记录](baselines/jassub-font-metadata.json) [记录](baselines/jassub-contract.md) [记录](baselines/jassub-contract-validation.json) [记录](changes/2026-09-13-PKG-JASSUB-01-baseline.md) [记录](baselines/jassub-provenance.json) [记录](baselines/jassub-provenance-validation.json) [记录](changes/2026-09-14-PKG-JASSUB-01-provenance.md)
- PKG-JASSUB-02: [记录](changes/2026-09-14-PKG-JASSUB-02-failure-baseline.md) [记录](baselines/jassub-failures-validation.json)
- PKG-JASSUB-03: [记录](changes/2026-09-14-PKG-JASSUB-03-registration.md) [记录](baselines/jassub-registration-validation.json)
diff --git a/refactor/progress.md b/refactor/progress.md
index 30c142fcb..c6b8ff7d5 100644
--- a/refactor/progress.md
+++ b/refactor/progress.md
@@ -1,5 +1,18 @@
# 进度与证据
+## PKG-MULTI-SUB-05 切源时序诊断检查点(仍未完成)
+
+新增可选原生属性/事件跟踪和独立恢复事件等待对照。WebKit串行3项、重复9项及
+三引擎被动事件矩阵105项通过断言,但旧核心仍提前结算,WebKit恢复seeked晚30至50ms;
+候选核心会等待恢复。关闭诊断后63项中62通过,旧5.3.0/WebKit再次停在0.0015139秒,
+字幕cue仍完整;没有获得失败瞬间的原生写入轨迹,不能据带诊断的通过结果关闭风险。
+显式等待metadata后的原生恢复seeked对照27项通过,仅说明完成恢复后的字幕路径有效,
+不修改默认测试路径或旧公共API。即时调用探针、此前失败和MULTI-SUB-SWITCH-01保持open。
+见[检查点](changes/2026-09-14-PKG-MULTI-SUB-05-seek-diagnostics.md)和
+[证据](baselines/multiple-subtitles-seek-diagnostics.json)。本轮仅测试和文档修改,产物未变,
+脚本lint/CI50/计划风险检查通过;仍为179 done、17 doing、55 todo。task05/06未完成。
+保留原生失败时序定位入口;下一轮转回Auto Thumbnail剩余源码整理,再继续包级组合门槛。
+
## PKG-MULTI-SUB-11 旧发布核心 ASS 转换适配完成
实际5.1.2 tarball证明只有main转换器丢失模板换行,同版legacy与源码正确;新增
diff --git a/refactor/risks.json b/refactor/risks.json
index 5d14e04f3..7b56faa05 100644
--- a/refactor/risks.json
+++ b/refactor/risks.json
@@ -2,7 +2,7 @@
"schemaVersion": 1,
"task": "BASE-07",
"sourceCommit": "e01f39ff",
- "updatedAt": "2026-09-14T05:41:02.580Z",
+ "updatedAt": "2026-09-14T06:00:35.506Z",
"note": "Open means closure evidence is outstanding; source-observed and unverified are not reproduced runtime bugs. A source issue already mitigated in the workspace still requires candidate regression evidence. No accepted-with-scope item is implied by baseline task completion.",
"items": [
{
@@ -6034,7 +6034,7 @@
"id": "MULTI-SUB-SWITCH-01",
"title": "Intermittent WebKit core5.3.0 caption loss after selected-track source switch",
"confirmation": "reproduced",
- "workspaceState": "Reopened during task10: both source and actual-main matrices fail old5.4.0/WebKit caption after switch despite waiting seeking=false. Source failure native time0.001494, intact1..3 cue, active=[]; task09 attribution remains supported but the later-seek workaround is insufficient. Candidate core and old5.1 display regressions pass. Task05 must diagnose remaining old-host ordering, without hiding these failures.",
+ "workspaceState": "Still open after task11: property traces3+9 and passive105 cases pass while confirming early old-core settlement; default untraced63 has another near-zero seek miss on5.3.0/WebKit (time0.0015139, intact1..3 cue, no active cue). No failing native-write trace yet. Opt-in metadata/restoration-seeked control passes27 cases but is not a production/API fix; default and immediate-call probes remain unchanged. Candidate source guarantees pass. Task05 still owns remaining diagnosis and acceptance.",
"compatibleResolution": "Classify the old-host source/native-seek race separately from caption rendering; preserve immediate-call probes, require candidate first seeks, and wait for real native source completion before independent caption-seek assertions.",
"closureCriteria": "Root cause classified with targeted evidence, any required fix validated, and changed candidate/old-core combination rerun without hiding the original failure.",
"status": "open",
@@ -6052,7 +6052,11 @@
"refactor/baselines/multiple-subtitles-switch-validation.json",
"test/browser/multiple-subtitles-switch.spec.js",
"refactor/changes/2026-09-14-PKG-MULTI-SUB-10-legacy-captions.md",
- "refactor/baselines/multiple-subtitles-legacy-validation.json"
+ "refactor/baselines/multiple-subtitles-legacy-validation.json",
+ "refactor/changes/2026-09-14-PKG-MULTI-SUB-05-seek-diagnostics.md",
+ "refactor/baselines/multiple-subtitles-seek-diagnostics.json",
+ "test/browser/source-seek-diagnostics.js",
+ "test/browser/source-restoration.js"
],
"resolutionEvidence": [
"refactor/changes/2026-09-14-PKG-MULTI-SUB-09-switch-order.md",
diff --git a/refactor/tasks.json b/refactor/tasks.json
index f300c38cb..62e012383 100644
--- a/refactor/tasks.json
+++ b/refactor/tasks.json
@@ -2417,7 +2417,9 @@
"evidence": [
"changes/2026-09-14-PKG-MULTI-SUB-05-combinations.md",
"baselines/multiple-subtitles-combinations-validation.json",
- "baselines/multiple-subtitles-cores.json"
+ "baselines/multiple-subtitles-cores.json",
+ "changes/2026-09-14-PKG-MULTI-SUB-05-seek-diagnostics.md",
+ "baselines/multiple-subtitles-seek-diagnostics.json"
]
},
{
diff --git a/test/browser/README.md b/test/browser/README.md
index 525f42f68..d5c053b3f 100644
--- a/test/browser/README.md
+++ b/test/browser/README.md
@@ -283,3 +283,21 @@ multiline text/HTML, overlapping translation, selection/reset and empty interval
on5.1.2/5.1.7/5.3.0/5.4.0/candidate. The attachment records the unchanged original
host converter output alongside actual native cues and browser/artifact hashes.
It covers desktop video/track playback, not full ASS layout or physical devices.
+
+The multiple-subtitles combination suite has opt-in source-seek diagnostics:
+
+- `ARTPLAYER_SOURCE_SEEK_TRACE=events` records native and public events, clocks,
+ duration, active cues and switch settlement without replacing media properties.
+- `ARTPLAYER_SOURCE_SEEK_TRACE=1` additionally forwards native `currentTime` and
+ `playbackRate` accessors while recording writes/stacks. The page owns these
+ diagnostic listeners and descriptors; do not use this helper in production.
+- `ARTPLAYER_SOURCE_RESTORE_EVENT=1` selects a separate control that installs a
+ metadata listener before switching and, when restoration is seeking, waits for
+ its native seeked event as well as the original switch Promise. This tests caption
+ behavior after restoration; it does not repair the old public switch contract.
+
+With no flags, the original Promise plus seeking-property path remains unchanged.
+The immediate-call ordering probe also remains intact. Record the chosen flags
+alongside artifacts: diagnostic overhead may change an intermittent race, and
+passing the event control must not replace the original failure evidence. The
+combination attachment includes the selected modes and optional native trace.
diff --git a/test/browser/multiple-subtitles-combinations.spec.js b/test/browser/multiple-subtitles-combinations.spec.js
index 752f14343..85d66e87a 100644
--- a/test/browser/multiple-subtitles-combinations.spec.js
+++ b/test/browser/multiple-subtitles-combinations.spec.js
@@ -1,6 +1,9 @@
+import process from 'node:process'
import { hash } from '../../refactor/scripts/releases.mjs'
import { multipleSubtitlesCandidate, multipleSubtitlesHistorical } from '../helpers/multiple-subtitles.js'
import { expect, test } from './fixtures.js'
+import { switchAfterNativeRestoration } from './source-restoration.js'
+import { installSeekDiagnostics } from './source-seek-diagnostics.js'
const candidate = await multipleSubtitlesCandidate()
const historical = (await multipleSubtitlesHistorical()).filter(item => /^published-.*-main$/.test(item.name))
@@ -15,7 +18,7 @@ test.afterEach(async ({ page }, testInfo) => {
return null
const track = art.template.$track?.track
const read = cue => ({ start: cue.startTime, end: cue.endTime, text: cue.text })
- return { destroyed: art.isDestroy, paused: art.video.paused, time: art.currentTime, offset: art.subtitleOffset, cues: Array.from(track?.cues || [], read), active: Array.from(track?.activeCues || [], read), displayed: art.template.$subtitle?.textContent }
+ return { destroyed: art.isDestroy, paused: art.video.paused, time: art.currentTime, seeking: art.video.seeking, duration: art.video.duration, readyState: art.video.readyState, offset: art.subtitleOffset, cues: Array.from(track?.cues || [], read), active: Array.from(track?.activeCues || [], read), displayed: art.template.$subtitle?.textContent, trace: window.sourceSeekTrace }
})
await testInfo.attach('multiple-combination-final-state', { contentType: 'application/json', body: JSON.stringify(state) })
})
@@ -27,7 +30,9 @@ async function prepare(page, core, implementation, browser, testInfo) {
await page.addScriptTag({ content: `(() => { const module = { exports: {} }; const exports = module.exports; ${implementation.code}; window.multipleFactory = module.exports.default || module.exports; })();` })
await page.evaluate(() => window.createPlayer('/test/pattern.mp4'))
await expect.poll(() => page.evaluate(() => window.art.isReady)).toBe(true)
- await testInfo.attach('multiple-combination-inputs', { contentType: 'application/json', body: JSON.stringify({ core, plugin: implementation.name, pluginSha256: hash(implementation.code), browser: browser.version(), scope: 'Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim' }) })
+ if (['1', 'events'].includes(process.env.ARTPLAYER_SOURCE_SEEK_TRACE))
+ await installSeekDiagnostics(page, process.env.ARTPLAYER_SOURCE_SEEK_TRACE === '1')
+ await testInfo.attach('multiple-combination-inputs', { contentType: 'application/json', body: JSON.stringify({ core, plugin: implementation.name, pluginSha256: hash(implementation.code), browser: browser.version(), traceMode: process.env.ARTPLAYER_SOURCE_SEEK_TRACE || 'off', sourceRestoration: process.env.ARTPLAYER_SOURCE_RESTORE_EVENT === '1' ? 'native-event-control' : 'promise-and-seeking-property', scope: 'Desktop engines; 5.3.0 is adjacent stable, not the unavailable 5.3.1 release; no minimum-version or physical-device claim' }) })
}
async function seek(page, time) {
@@ -94,7 +99,22 @@ for (const core of cores.filter(core => !['published-5.1.2', 'published-5.1.7'].
await page.evaluate(() => window.art.plugins.multipleSubtitles.tracks(['b']))
await expect(page.locator('.art-subtitle-a')).toHaveCount(0)
await expect(page.locator('.art-subtitle-b')).toHaveText('Translation')
- await page.evaluate(() => window.art.switchUrl('/test/pattern.mp4?subtitles-combination'))
+ if (process.env.ARTPLAYER_SOURCE_RESTORE_EVENT === '1') {
+ await switchAfterNativeRestoration(page, '/test/pattern.mp4?subtitles-combination')
+ }
+ else {
+ await page.evaluate(() => {
+ window.recordSourceSeek?.('before-switch')
+ const pending = window.art.switchUrl('/test/pattern.mp4?subtitles-combination')
+ if (window.recordSourceSeek) {
+ void pending.then(
+ () => window.recordSourceSeek('switch-resolved'),
+ error => window.recordSourceSeek('switch-rejected', String(error)),
+ )
+ }
+ return pending
+ })
+ }
// Old core promises can settle during their native restoration seek.
// The immediate-seek path is retained separately in multiple-subtitles-switch.spec.js.
await expect.poll(() => page.evaluate(() => window.art.video.seeking)).toBe(false)
diff --git a/test/browser/source-restoration.js b/test/browser/source-restoration.js
new file mode 100644
index 000000000..c6343883b
--- /dev/null
+++ b/test/browser/source-restoration.js
@@ -0,0 +1,31 @@
+export async function switchAfterNativeRestoration(page, url) {
+ await page.evaluate((url) => {
+ const art = window.art
+ if (url === art.url)
+ return art.switchUrl(url)
+ const video = art.video
+ let resolveRestored
+ const restored = new Promise((resolve) => {
+ resolveRestored = resolve
+ })
+ const onSeeked = () => resolveRestored()
+ const onMetadata = () => {
+ if (video.seeking)
+ video.addEventListener('seeked', onSeeked, { once: true })
+ else
+ resolveRestored()
+ }
+ const cleanup = () => {
+ video.removeEventListener('loadedmetadata', onMetadata)
+ video.removeEventListener('seeked', onSeeked)
+ }
+ video.addEventListener('loadedmetadata', onMetadata, { once: true })
+ try {
+ return Promise.all([art.switchUrl(url), restored]).then(() => undefined).finally(cleanup)
+ }
+ catch (error) {
+ cleanup()
+ throw error
+ }
+ }, url)
+}
diff --git a/test/browser/source-seek-diagnostics.js b/test/browser/source-seek-diagnostics.js
new file mode 100644
index 000000000..ad373c6cc
--- /dev/null
+++ b/test/browser/source-seek-diagnostics.js
@@ -0,0 +1,27 @@
+export async function installSeekDiagnostics(page, properties = true) {
+ await page.evaluate((properties) => {
+ const art = window.art
+ const video = art.video
+ window.sourceSeekTrace = []
+ const state = () => ({ clock: performance.now(), time: video.currentTime, duration: video.duration, seeking: video.seeking, paused: video.paused, rate: video.playbackRate, readyState: video.readyState, source: video.currentSrc, active: Array.from(art.template.$track.track.activeCues || [], cue => cue.text) })
+ const record = (event, detail) => window.sourceSeekTrace.push({ event, detail, ...state() })
+ for (const property of properties ? ['currentTime', 'playbackRate'] : []) {
+ const descriptor = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, property)
+ Object.defineProperty(video, property, {
+ configurable: true,
+ get() { return descriptor.get.call(this) },
+ set(value) {
+ record(`before:${property}`, { value, stack: new Error('Native media property write').stack })
+ descriptor.set.call(this, value)
+ record(`after:${property}`, { value })
+ },
+ })
+ }
+ for (const event of ['loadstart', 'loadedmetadata', 'loadeddata', 'canplay', 'seeking', 'seeked', 'emptied', 'pause', 'ratechange', 'timeupdate'])
+ video.addEventListener(event, () => record(`native:${event}`))
+ for (const event of ['restart', 'seek', 'fullscreen'])
+ art.on(event, (...values) => record(`art:${event}`, values))
+ window.recordSourceSeek = record
+ record('installed')
+ }, properties)
+}