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) +}