diff --git a/refactor/baselines/chapter-timing-observations.json b/refactor/baselines/chapter-timing-observations.json new file mode 100644 index 000000000..4130e5a95 --- /dev/null +++ b/refactor/baselines/chapter-timing-observations.json @@ -0,0 +1,2780 @@ +{ + "task": "PKG-CHAPTER-05", + "status": "doing", + "baselineCommit": "814bdc11db3eac7c104343bf11d05b498e0126a8", + "node": "24.21.0", + "yarn": "1.22.22", + "productionChanges": false, + "oldTrace": { + "path": "refactor/.cache/chapter05-quality-ready-results/chapter-combinations-candi-ef978-pter-thumbnail-interactions-webkit/trace.zip", + "sha256": "f92dd1b14ef8260aecea85594d85120e5ea6efb4bbc36d05bd3c051b9748f9d6", + "member": "2-trace.trace", + "memberSha256": "71cfbf88dc319b65639581d7249fd5ac83a133e754a2deda637207c441b5400a", + "calls": [ + { + "callId": "call@223", + "method": "click", + "params": { + "selector": ".art-control-quality .art-selector-item >> internal:has-text=\"Quality A\"i", + "strict": true + }, + "startTime": 22983.947, + "endTime": 23566.42, + "elapsed": 582.4729999999981 + }, + { + "callId": "call@225", + "method": "evaluateExpression", + "params": { + "expression": "() => window.art.url.includes('quality=A')", + "isFunction": true, + "arg": { + "value": { + "v": "undefined" + }, + "handles": [] + } + }, + "startTime": 23571.095, + "endTime": 23609.291, + "elapsed": 38.19599999999991, + "result": { + "value": { + "b": true + } + } + }, + { + "callId": "call@227", + "method": "evaluateExpression", + "params": { + "expression": "() => window.chapterEvents.filter(event => event.name === 'restart').map(event => event.value)", + "isFunction": true, + "arg": { + "value": { + "v": "undefined" + }, + "handles": [] + } + }, + "startTime": 23613.322, + "endTime": 23616.695, + "elapsed": 3.3729999999995925, + "result": { + "value": { + "a": [], + "id": 1 + } + } + }, + { + "callId": "call@229", + "method": "evaluateExpression", + "params": { + "expression": "() => window.chapterEvents.filter(event => event.name === 'restart').map(event => event.value)", + "isFunction": true, + "arg": { + "value": { + "v": "undefined" + }, + "handles": [] + } + }, + "startTime": 23735.3, + "endTime": 33691.544, + "elapsed": 9956.244000000002, + "result": { + "value": { + "a": [ + { + "s": "/test/pattern.mp4?quality=A" + } + ], + "id": 1 + } + } + } + ] + }, + "interpretation": "The historical restart evaluation took 9956.244ms and returned the expected URL after the 7000ms poll window. This is a long single browser call, not repeated fast empty reads. The old trace has no event timestamps, so it cannot locate when restart fired within that interval or prove media, renderer, transport, tracing or driver causality.", + "current": { + "reportPath": "refactor/.cache/chapter05-timing-observed.json", + "reportSha256": "87d810ba2333b3f940126b9069027adbc416bcf4da95482ab2ccd12e39655f4c", + "resultsPath": "refactor/.cache/chapter05-timing-observed-results", + "stats": { + "startTime": "2026-09-13T19:32:24.329Z", + "duration": 51732.130000000005, + "expected": 12, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "source": { + "path": "test/browser/chapter-combinations.spec.js", + "sha256": "4dbcb4116239d35a4a97c17a68c684fe68b5d241450befeacc0f5e2152503d67" + }, + "cases": [ + { + "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions", + "project": "chromium", + "browser": "153.0.8010.12", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327948221, + "elapsed": 3, + "at": 1347.5, + "timeOrigin": 1789327946876.4, + "events": [] + }, + { + "started": 1789327948338, + "elapsed": 4, + "at": 1465.1000000238419, + "timeOrigin": 1789327946876.4, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 2620.900000035763, + "timeOrigin": 1789327946876.4, + "qualitySelectedAt": 1312, + "events": [ + { + "name": "seek", + "value": 3.006451, + "at": 806.8000000119209 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 1356.1000000238419 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 59, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 59.10000002384186, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 59.19999998807907, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 136.69999998807907, + "time": 0.008687, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 558.6999999880791, + "time": 0.411626, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 819.1000000238419, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 819.6000000238419, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 819.6000000238419, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 1356, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 1356, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "canplay", + "at": 1356.300000011921, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeking", + "at": 1356.300000011921, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1363.4000000357628, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1363.4000000357628, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 2253.199999988079, + "time": 3.019035, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.386724, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.006451, + "restoredTime": 3.006451, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions", + "project": "chromium", + "browser": "153.0.8010.12", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327950907, + "elapsed": 2, + "at": 1295.5, + "timeOrigin": 1789327949613.8, + "events": [] + }, + { + "started": 1789327951014, + "elapsed": 5, + "at": 1404.6000000238419, + "timeOrigin": 1789327949613.8, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 2566.199999988079, + "timeOrigin": 1789327949613.8, + "qualitySelectedAt": 1253.1000000238419, + "events": [ + { + "name": "seek", + "value": 3.006451, + "at": 767.8000000119209 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 1302.300000011921 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 50, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 50, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 50.10000002384186, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 115.5, + "time": 0.010948, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 537.1000000238419, + "time": 0.414567, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 782.5, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 782.8000000119209, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 782.8000000119209, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 1302.199999988079, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 1302.199999988079, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "canplay", + "at": 1302.4000000357628, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeking", + "at": 1302.4000000357628, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1308.5, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1308.5, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 2199.699999988079, + "time": 3.018173, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.38472, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.006451, + "restoredTime": 3.006451, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions", + "project": "chromium", + "browser": "153.0.8010.12", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327953541, + "elapsed": 3, + "at": 1242.300000011921, + "timeOrigin": 1789327952301.6, + "events": [] + }, + { + "started": 1789327953649, + "elapsed": 5, + "at": 1351.699999988079, + "timeOrigin": 1789327952301.6, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 2513.899999976158, + "timeOrigin": 1789327952301.6, + "qualitySelectedAt": 1201.8999999761581, + "events": [ + { + "name": "seek", + "value": 3.006451, + "at": 819.1999999880791 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 1249.6000000238419 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 64.80000001192093, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 64.89999997615814, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 65, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 145.19999998807907, + "time": 0.003213, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 582.3999999761581, + "time": 0.422854, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 831.5, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 832.3000000119209, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 832.3000000119209, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 1249.5, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 1249.5, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "canplay", + "at": 1249.6000000238419, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeking", + "at": 1249.699999988079, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1255.800000011921, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1255.800000011921, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 2144.100000023842, + "time": 3.017365, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.387287, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.006451, + "restoredTime": 3.006451, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions", + "project": "chromium", + "browser": "153.0.8010.12", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327956241, + "elapsed": 2, + "at": 1313.1000000238419, + "timeOrigin": 1789327954930.2, + "events": [] + }, + { + "started": 1789327956358, + "elapsed": 6, + "at": 1433.300000011921, + "timeOrigin": 1789327954930.2, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 2666.800000011921, + "timeOrigin": 1789327954930.2, + "qualitySelectedAt": 1273.300000011921, + "events": [ + { + "name": "seek", + "value": 3.006451, + "at": 789.8000000119209 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 1319.1000000238419 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 65.39999997615814, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 65.5, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 65.60000002384186, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 132.30000001192093, + "time": 0.009311, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 548.6000000238419, + "time": 0.414352, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 801.6999999880791, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 802.1999999880791, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 802.1999999880791, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 1319, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 1319, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "canplay", + "at": 1319.199999988079, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeking", + "at": 1319.199999988079, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1326.1000000238419, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1326.1000000238419, + "time": 3.006451, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 2298.699999988079, + "time": 3.018449, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.38658, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.006451, + "restoredTime": 3.006451, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions", + "project": "firefox", + "browser": "155.0", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327961375, + "elapsed": 5, + "at": 1885, + "timeOrigin": 1789327959492, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 3280, + "timeOrigin": 1789327959492, + "qualitySelectedAt": 1813, + "events": [ + { + "name": "seek", + "value": 3.0064516129032257, + "at": 1349 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 1876 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 347, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 352, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 352, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 586, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 1032, + "time": 0.415449, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 1351, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1385, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1385, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 1874, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 1876, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "canplay", + "at": 1876, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeking", + "at": 1876, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1914, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1914, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 2884, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.331226, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.0064516129032257, + "restoredTime": 3.0064516129032257, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions", + "project": "firefox", + "browser": "155.0", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327964470, + "elapsed": 7, + "at": 1454, + "timeOrigin": 1789327963020, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 2726, + "timeOrigin": 1789327963020, + "qualitySelectedAt": 1364, + "events": [ + { + "name": "seek", + "value": 3.0064516129032257, + "at": 956 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 1443 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 101, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 105, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 105, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 197, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 639, + "time": 0.416666, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 959, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 995, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 995, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 1437, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 1443, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "canplay", + "at": 1444, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeking", + "at": 1444, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1488, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1488, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 2326, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.333332, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.0064516129032257, + "restoredTime": 3.0064516129032257, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions", + "project": "firefox", + "browser": "155.0", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327967445, + "elapsed": 5, + "at": 1483, + "timeOrigin": 1789327965964, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 2707, + "timeOrigin": 1789327965964, + "qualitySelectedAt": 1408, + "events": [ + { + "name": "seek", + "value": 3.0064516129032257, + "at": 964 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 1476 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 93, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 96, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 96, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 190, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 634, + "time": 0.416666, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 967, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1001, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1001, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 1473, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 1476, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "canplay", + "at": 1476, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeking", + "at": 1476, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1514, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1514, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 2316, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.333332, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.0064516129032257, + "restoredTime": 3.0064516129032257, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions", + "project": "firefox", + "browser": "155.0", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327970352, + "elapsed": 4, + "at": 1465, + "timeOrigin": 1789327968888, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 2749, + "timeOrigin": 1789327968888, + "qualitySelectedAt": 1392, + "events": [ + { + "name": "seek", + "value": 3.0064516129032257, + "at": 960 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 1459 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 91, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 94, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 94, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 183, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 627, + "time": 0.416666, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 963, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1000, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1000, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 1454, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "loadeddata", + "at": 1459, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "canplay", + "at": 1459, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeking", + "at": 1459, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 1 + }, + { + "name": "seeked", + "at": 1497, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 1497, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 2345, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.334093, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.0064516129032257, + "restoredTime": 3.0064516129032257, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions", + "project": "webkit", + "browser": "26.6", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327975963, + "elapsed": 6, + "at": 3323, + "timeOrigin": 1789327972643, + "events": [] + }, + { + "started": 1789327976083, + "elapsed": 34, + "at": 3469, + "timeOrigin": 1789327972643, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 5187, + "timeOrigin": 1789327972643, + "qualitySelectedAt": 2766, + "events": [ + { + "name": "seek", + "value": 3.0064516129032257, + "at": 2040 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 3346 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 516, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 3 + }, + { + "name": "loadeddata", + "at": 516, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 3 + }, + { + "name": "canplay", + "at": 517, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 3 + }, + { + "name": "playing", + "at": 1039, + "time": 0.0172432, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 1640, + "time": 0.5396633, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 2057, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 2057, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 2073, + "time": 3.0083973, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 3346, + "time": 3.0083973, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 3346, + "time": 3.0083973, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 3346, + "time": 3.0083973, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 3376, + "time": 0.0013678, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 3378, + "time": 0.0013678, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 3378, + "time": 0.0013678, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 5138, + "time": 3.0155155, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.0653343, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.0083973, + "restoredTime": 0.0013678, + "historicalReset": true + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions", + "project": "webkit", + "browser": "26.6", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327981623, + "elapsed": 43, + "at": 3423, + "timeOrigin": 1789327978240, + "events": [] + }, + { + "started": 1789327981768, + "elapsed": 28, + "at": 3554, + "timeOrigin": 1789327978240, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 5288, + "timeOrigin": 1789327978240, + "qualitySelectedAt": 2721, + "events": [ + { + "name": "seek", + "value": 3.0064516129032257, + "at": 2127 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 3438 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 522, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 522, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 522, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 1014, + "time": 0.0102306, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 1718, + "time": 0.5457894, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 2154, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 2154, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 2170, + "time": 3.0071205, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 3437, + "time": 3.0071205, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 3438, + "time": 3.0071205, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 3438, + "time": 3.0071205, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 3468, + "time": 0.0015402, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 3468, + "time": 0.0015402, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 3468, + "time": 0.0015402, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 5241, + "time": 3.0075271, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.0529263, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.0071205, + "restoredTime": 0.0015402, + "historicalReset": true + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions", + "project": "webkit", + "browser": "26.6", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327987273, + "elapsed": 74, + "at": 3409, + "timeOrigin": 1789327983878, + "events": [] + }, + { + "started": 1789327987462, + "elapsed": 50, + "at": 3631, + "timeOrigin": 1789327983878, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 5712, + "timeOrigin": 1789327983878, + "qualitySelectedAt": 2878, + "events": [ + { + "name": "seek", + "value": 3.0064516129032257, + "at": 2127 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 3464 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 547, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 547, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 547, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 1053, + "time": 0.0118305, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 1668, + "time": 0.5331693, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 2144, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 2160, + "time": 3.0076807, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 3463, + "time": 3.0076807, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 3464, + "time": 3.0076807, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 3465, + "time": 3.0076807, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 3491, + "time": 0.0024918, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 3493, + "time": 3.0076807, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 3494, + "time": 3.0076807, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 3522, + "time": 3.0076807, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 3539, + "time": 3.0103503, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 5317, + "time": 3.0161511, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.4106989, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.0076807, + "restoredTime": 3.0103503, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + }, + { + "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions", + "project": "webkit", + "browser": "26.6", + "status": "passed", + "errors": [], + "calls": [ + { + "started": 1789327993237, + "elapsed": 12, + "at": 3326, + "timeOrigin": 1789327989919, + "events": [] + }, + { + "started": 1789327993355, + "elapsed": 37, + "at": 3471, + "timeOrigin": 1789327989919, + "events": [ + "/test/pattern.mp4?quality=A" + ] + } + ], + "state": { + "at": 5563, + "timeOrigin": 1789327989919, + "qualitySelectedAt": 2713, + "events": [ + { + "name": "seek", + "value": 3.0064516129032257, + "at": 2070 + }, + { + "name": "restart", + "value": "/test/pattern.mp4?quality=A", + "at": 3360 + } + ], + "nativeEvents": [ + { + "name": "loadedmetadata", + "at": 502, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 502, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 503, + "time": 0, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 1028, + "time": 0.0165811, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": false, + "readyState": 4 + }, + { + "name": "pause", + "at": 1644, + "time": 0.5404753, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 2089, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 2089, + "time": 3.0064516129032257, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 2104, + "time": 3.0079648, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B", + "paused": true, + "readyState": 4 + }, + { + "name": "loadedmetadata", + "at": 3359, + "time": 3.0079648, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "loadeddata", + "at": 3360, + "time": 3.0079648, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 3360, + "time": 3.0079648, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 3388, + "time": 0.0018687, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 3389, + "time": 3.0079648, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "canplay", + "at": 3389, + "time": 3.0079648, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeking", + "at": 3420, + "time": 3.0079648, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "seeked", + "at": 3437, + "time": 3.0103005, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": true, + "readyState": 4 + }, + { + "name": "playing", + "at": 5151, + "time": 3.0190828, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "paused": false, + "readyState": 4 + } + ], + "time": 3.4315404, + "paused": false, + "mediaError": null, + "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A", + "readyState": 4, + "mobileBranch": false, + "maxTouchPoints": 0, + "chapters": [ + { + "start": "0", + "end": "8", + "duration": "8", + "title": "Updated after quality" + } + ] + }, + "position": { + "before": 3.0079648, + "restoredTime": 3.0103005, + "historicalReset": false + }, + "sources": { + "/candidate/artplayer.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242", + "bytes": 378117 + }, + "/candidate/artplayer-plugin-chapter.js": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts" + }, + "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a", + "bytes": 8529 + }, + "/published/artplayer.js": { + "source": { + "kind": "npm-release", + "version": "5.4.0", + "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==", + "member": "package/dist/artplayer.js" + }, + "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "bytes": 134037 + }, + "/published/artplayer-plugin-chapter.js": { + "source": { + "kind": "npm-release", + "version": "1.1.0", + "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==", + "member": "package/dist/artplayer-plugin-chapter.js" + }, + "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0", + "bytes": 4973 + } + } + } + ] + }, + "limitation": "12 source-built quality/thumbnail cases only. Two published-core WebKit cases retain the historical zero-position observation. Current passes do not explain or close historical CHAPTER-TIMING-01. No new physical device, full chapter/fullscreen/touch matrix, installed artifact or release acceptance." +} diff --git a/refactor/changes/2026-09-14-PKG-CHAPTER-05-timing.md b/refactor/changes/2026-09-14-PKG-CHAPTER-05-timing.md new file mode 100644 index 000000000..11184d9bd --- /dev/null +++ b/refactor/changes/2026-09-14-PKG-CHAPTER-05-timing.md @@ -0,0 +1,49 @@ +# PKG-CHAPTER-05 历史超时与事件观测 + +任务仍为 doing。本轮接续已提交的组合检查点,未修改生产源码、类型、产物或依赖。 +没有把已通过的桌面模拟宣称为物理设备验收。 + +## 历史 trace 的新发现 + +读取原 `chapter05-quality-ready-results` 中 candidate core + candidate chapter 的 +WebKit 失败 trace,核对实际 before/after 调用,而非只看测试错误摘要: + +| 操作 | 耗时 | 返回值 | +| --- | --- | --- | +| 选择 Quality A | 582.473 ms | 点击完成 | +| 检查当前 URL | 38.196 ms | true | +| 第一次读取 restart 数组 | 3.373 ms | 空数组 | +| 第二次读取 restart 数组 | 9956.244 ms | 目标 URL 已在数组中 | + +最后一次 evaluate 超过原 7000 ms 轮询期限,之后的 afterEach 才得到恢复位置和 +readyState=4。这不是持续快速轮询七秒都得到空数组。旧 trace 没有为 restart +和原生媒体事件记录页面时钟,仍无法判断事件发生在该调用的哪一时刻,或区分 +媒体驱动、页面主线程、协议传输、trace 快照开销。不能据此关闭风险,更不能仅 +凭类似十秒停顿把它和 JASSUB 的 Firefox 问题认定为同一根因。 + +原 trace ZIP/member hash、准确时点和序列化返回值保存在 +[机器记录](../baselines/chapter-timing-observations.json)。原始 ZIP 未改写。 + +## 测试改进与本轮验证 + +`chapter-combinations.spec.js` 现在记录公共事件与原生事件的 performance.now, +清晰度选择前的时间点,以及每次完成的 restart 读取的 Node 起点、往返耗时、 +页面时间和 performance.timeOrigin。future trace 可以对齐两端时钟,分离已发生 +但晚观察到的事件和真正晚发生的事件。原目标 URL、恢复位置、菜单、章节及 +缩略图断言不变,超时没有增加,测试未启用重试。 + +固定 Node 24.21.0 / Yarn 1.22.22,执行: + +```sh +yarn test:browser test/browser/chapter-combinations.spec.js --grep 'quality switch' --workers=1 +``` + +三浏览器、四组新旧核心/章节组合共 12 项通过。两个已发布核心的 WebKit 用例 +仍是历史位置归零观察,候选核心仍要求恢复原位置;不能将这两项统计为修复。 +本轮使用浏览器服务的源码构建,报告保存实际资源 hash。定向只读 ESLint 通过。 +没有重新运行章节全量、fullscreen/touch 全部矩阵或 tarball 安装验收。 + +本轮通过仅验证新增观测没有破坏既有组合断言,不解释历史停顿。CHAPTER-TIMING-01 +保持 open,05/06 和物理设备门槛仍未完成。下一步可继续独立插件实施;若再次出现 +停顿,先对照页面事件时点和往返耗时,避免直接修改核心或用更长等待掩盖它。 +回退本提交只移除观测及记录;不 push/publish。 diff --git a/refactor/plan.md b/refactor/plan.md index d8e557b16..23e5a36f6 100644 --- a/refactor/plan.md +++ b/refactor/plan.md @@ -500,7 +500,7 @@ - PKG-CHAPTER-02: [记录](changes/2026-09-10-PKG-CHAPTER-02-tests.md) [记录](baselines/chapter-validation.json) - PKG-CHAPTER-03: [记录](changes/2026-09-10-PKG-CHAPTER-03-typescript-modules.md) [记录](baselines/chapter-migration-validation.json) - PKG-CHAPTER-04: [记录](changes/2026-09-10-PKG-CHAPTER-04-public-types.md) [记录](baselines/chapter-types-validation.json) -- PKG-CHAPTER-05: [记录](changes/2026-09-12-PKG-CHAPTER-05-combinations.md) [记录](baselines/chapter-combinations-checkpoint.json) +- PKG-CHAPTER-05: [记录](changes/2026-09-12-PKG-CHAPTER-05-combinations.md) [记录](baselines/chapter-combinations-checkpoint.json) [记录](changes/2026-09-14-PKG-CHAPTER-05-timing.md) [记录](baselines/chapter-timing-observations.json) - PKG-AMBILIGHT-01: [记录](changes/2026-09-12-PKG-AMBILIGHT-01-contract.md) [记录](baselines/ambilight-contract.md) [记录](baselines/ambilight-release.json) [记录](baselines/ambilight-contract-validation.json) - PKG-AMBILIGHT-02: [记录](changes/2026-09-12-PKG-AMBILIGHT-02-tests.md) [记录](baselines/ambilight-behavior-validation.json) [记录](ambilight-validation.md) - PKG-AMBILIGHT-03: [记录](changes/2026-09-12-PKG-AMBILIGHT-03-lifecycle.md) [记录](ambilight-validation.md) [记录](baselines/ambilight-lifecycle-validation.json) diff --git a/refactor/progress.md b/refactor/progress.md index 7d62186f8..c83563117 100644 --- a/refactor/progress.md +++ b/refactor/progress.md @@ -1,5 +1,15 @@ # 进度与证据 +## PKG-CHAPTER-05 时序取证继续(doing) + +复核旧失败 ZIP:一次 restart 数组读取耗时 9956.244 ms,返回时已含目标 URL; +不能只凭原超时文本认定七秒都未触发 restart。新增公共/原生事件页面时点与 +restart 读取往返耗时,三浏览器四组质量/章节/缩略图组合十二项通过,保留两项 +已发布核心 WebKit 位置归零观察。无生产或依赖变更,CHAPTER-TIMING-01 和物理 +设备缺口保持未关闭,05/06 未完成。详见[记录](changes/2026-09-14-PKG-CHAPTER-05-timing.md) +及[trace 摘要](baselines/chapter-timing-observations.json)。VAST 的初始化兼容 +选择已再次列为待答复事项,尚未变更默认行为;其他独立实施继续。 + ## PKG-JASSUB-09 合成截图验证(doing) 新增显式截图模式,由 Node pngjs@7.0.0 解码实际页面 PNG,不复制转移画布。 diff --git a/refactor/risks.json b/refactor/risks.json index c35188fbc..b259af997 100644 --- a/refactor/risks.json +++ b/refactor/risks.json @@ -2874,7 +2874,9 @@ "evidence": [ "refactor/baselines/chapter-combinations-checkpoint.json", "test/browser/chapter-combinations.spec.js", - "refactor/changes/2026-09-12-PKG-CHAPTER-05-combinations.md" + "refactor/changes/2026-09-12-PKG-CHAPTER-05-combinations.md", + "refactor/changes/2026-09-14-PKG-CHAPTER-05-timing.md", + "refactor/baselines/chapter-timing-observations.json" ], "compatibleResolution": "记录原生事件和绝对/相对时序,进一步区分媒体驱动耗时、夹具和核心源操作;未证明原因前不改核心、不扩大超时或重复到绿灯。", "closureCriteria": "确认先前超时的来源并有对应可靠回归;后续单次通过不足以关闭。" diff --git a/refactor/tasks.json b/refactor/tasks.json index 38867af69..b41417fb1 100644 --- a/refactor/tasks.json +++ b/refactor/tasks.json @@ -1434,7 +1434,9 @@ "acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成", "evidence": [ "changes/2026-09-12-PKG-CHAPTER-05-combinations.md", - "baselines/chapter-combinations-checkpoint.json" + "baselines/chapter-combinations-checkpoint.json", + "changes/2026-09-14-PKG-CHAPTER-05-timing.md", + "baselines/chapter-timing-observations.json" ] }, { diff --git a/test/browser/README.md b/test/browser/README.md index f70ab0410..9cd394966 100644 --- a/test/browser/README.md +++ b/test/browser/README.md @@ -217,3 +217,11 @@ hashes identify the actual selected ASS, not the white baseline. Screenshots are attached at named phases; errors from individual polling attempts are retained. The fixture's automatic failure screenshot runs after cleanup and may show an empty player; use the named pre-cleanup screenshots for visual claims. + +Chapter quality combinations attach `chapter-restart-observations`: completed +read calls include host wall time/elapsed time and browser monotonic time/origin. +Public/native chapter events also carry browser timestamps. Preserve those clocks +when diagnosing a timeout: the historical failure includes a single ~10-second +evaluate returning an already-recorded restart, not seven seconds of fast empty +reads. These observations do not expand the timeout or waive the open timing and +physical-device acceptance in PKG-CHAPTER-05. diff --git a/test/browser/chapter-combinations.spec.js b/test/browser/chapter-combinations.spec.js index d8348e176..1dc2884e1 100644 --- a/test/browser/chapter-combinations.spec.js +++ b/test/browser/chapter-combinations.spec.js @@ -26,9 +26,9 @@ async function openChapter(page, core, chapter) { ] })], }) for (const name of ['restart', 'seek', 'fullscreen', 'fullscreenWeb']) - window.art.on(name, value => window.chapterEvents.push({ name, value })) + window.art.on(name, value => window.chapterEvents.push({ name, value, at: performance.now() })) for (const name of ['loadedmetadata', 'loadeddata', 'canplay', 'seeking', 'seeked', 'playing', 'pause', 'error']) - window.art.video.addEventListener(name, () => window.chapterMediaEvents.push({ name, time: window.art.currentTime, source: window.art.video.currentSrc, paused: window.art.video.paused, readyState: window.art.video.readyState })) + window.art.video.addEventListener(name, () => window.chapterMediaEvents.push({ name, at: performance.now(), time: window.art.currentTime, source: window.art.video.currentSrc, paused: window.art.video.paused, readyState: window.art.video.readyState })) document.querySelector('#play').onclick = () => window.art.play() document.querySelector('#pause').onclick = () => window.art.pause() }) @@ -62,8 +62,30 @@ async function hoverChapter(page, percentage, text) { return { box, x, layout } } +async function waitForChapterRestart(page, testInfo) { + const calls = [] + try { + await expect.poll(async () => { + const started = Date.now() + const state = await page.evaluate(() => ({ + at: performance.now(), + timeOrigin: performance.timeOrigin, + events: window.chapterEvents.filter(event => event.name === 'restart').map(event => event.value), + })) + calls.push({ started, elapsed: Date.now() - started, ...state }) + return state.events + }).toEqual(['/test/pattern.mp4?quality=A']) + } + finally { + await testInfo.attach('chapter-restart-observations', { contentType: 'application/json', body: JSON.stringify(calls) }) + } +} + test.afterEach(async ({ page }, testInfo) => { const state = await page.evaluate(() => ({ + at: performance.now(), + timeOrigin: performance.timeOrigin, + qualitySelectedAt: window.chapterQualitySelectedAt, events: window.chapterEvents, nativeEvents: window.chapterMediaEvents, time: window.art?.currentTime, @@ -121,9 +143,10 @@ for (const core of ['published', 'candidate']) { expect(await page.locator('.art-chapter .art-progress-played').evaluateAll(nodes => [nodes[0].style.width, nodes[2].style.width])).toEqual(['100%', '0px']) await page.locator('.art-control-quality').hover() await expect(page.locator('.art-control-quality .art-selector-list')).toHaveCSS('opacity', '1') + await page.evaluate(() => window.chapterQualitySelectedAt = performance.now()) await page.locator('.art-control-quality .art-selector-item').filter({ hasText: 'Quality A' }).click() await expect.poll(() => page.evaluate(() => window.art.url.includes('quality=A'))).toBe(true) - await expect.poll(() => page.evaluate(() => window.chapterEvents.filter(event => event.name === 'restart').map(event => event.value))).toEqual(['/test/pattern.mp4?quality=A']) + await waitForChapterRestart(page, testInfo) await expect.poll(() => page.evaluate(() => !window.art.video.seeking && window.art.video.readyState >= 2)).toBe(true) const restoredTime = await page.evaluate(() => window.art.currentTime) const historicalReset = core === 'published' && browserName === 'webkit'