diff --git a/package.json b/package.json
index 4210e1f54..c7a5fc50c 100644
--- a/package.json
+++ b/package.json
@@ -159,7 +159,8 @@
"check:rollback-inventory": "node refactor/scripts/rollback-inventory.mjs --check",
"test:rollback:pages": "node scripts/pages-recovery.mjs",
"test:rollback:pages:browser": "node test/pages-recovery-browser.mjs",
- "test:bun-install": "node refactor/scripts/bun-evaluation.mjs"
+ "test:bun-install": "node refactor/scripts/bun-evaluation.mjs",
+ "test:chapter-native": "playwright test --config playwright.chapter-native.config.js"
},
"browserslist": "last 1 Chrome version",
"devDependencies": {
diff --git a/packages/artplayer-plugin-chapter/ARCHITECTURE.md b/packages/artplayer-plugin-chapter/ARCHITECTURE.md
index 3a54b7132..5a204b68c 100644
--- a/packages/artplayer-plugin-chapter/ARCHITECTURE.md
+++ b/packages/artplayer-plugin-chapter/ARCHITECTURE.md
@@ -112,3 +112,13 @@ Animation after entering real fullscreen. It preserves title/opacity/hit-test
assertions and uses actual installed artifacts in the installed browser scope.
`ARTPLAYER_CHAPTER_HOVER_BASELINE=1` restores the old immediate coordinate read for
diagnosis only. This helper corrects test synchronization, not player behavior.
+
+For CHAPTER-TIMING-01, ARTPLAYER_CHAPTER_TIMING_DIAGNOSTICS=1 adds a bounded native
+property/event/heartbeat recorder to the combination suite. The default suite is
+unchanged. `yarn test:chapter-native` runs a separate page with no ArtPlayer script
+to compare metadata restoration and one direct/deferred native correction.
+The unassisted Windows WebKit control currently fails its position assertion;
+these diagnostic cases are not ordinary CI source tests. Native five-second gaps
+remain even with deferred correction, so no timer workaround is in production.
+See refactor/changes/2026-09-15-PKG-CHAPTER-05-native-timing.md for exact commands,
+retained failures, measured boundaries and the still-open device/release gates.
diff --git a/playwright.chapter-native.config.js b/playwright.chapter-native.config.js
new file mode 100644
index 000000000..70f841fe3
--- /dev/null
+++ b/playwright.chapter-native.config.js
@@ -0,0 +1,8 @@
+import { defineConfig } from '@playwright/test'
+import base from './playwright.config.js'
+
+export default defineConfig(base, {
+ testMatch: '**/chapter-native-media.native.js',
+ outputDir: 'refactor/.cache/chapter-native/results',
+ reporter: [['list'], ['json', { outputFile: 'refactor/.cache/chapter-native/report.json' }]],
+})
diff --git a/refactor/baselines/chapter-native-timing-validation.json b/refactor/baselines/chapter-native-timing-validation.json
new file mode 100644
index 000000000..45ddb455b
--- /dev/null
+++ b/refactor/baselines/chapter-native-timing-validation.json
@@ -0,0 +1,7899 @@
+{
+ "task": "PKG-CHAPTER-05",
+ "status": "doing",
+ "capturedAt": "2026-09-14T17:48:16.211Z",
+ "sourceHead": "a03e5acc500ceee13f79f438bd0533995f883eaa",
+ "node": "24.21.0",
+ "yarn": "1.22.22",
+ "platform": "win32",
+ "productionChanges": false,
+ "installedMap": {
+ "path": "refactor/.cache/packages/run-s8MkZT/browser-artifacts.json",
+ "sha256": "176de3eeff7b9d8ad67b4257fc1745b1ce1674ecda350cc3ba088a9b746df86b"
+ },
+ "runs": [
+ {
+ "label": "access",
+ "scope": "installed combinations; diagnostics on; default retain-on-failure trace; repeat-each 3",
+ "directory": "refactor/.cache/chapter05-native-access-report",
+ "report": {
+ "path": "refactor/.cache/chapter05-native-access-report/report.json",
+ "sha256": "737e498460cd79b5677f5dd495cc16a826659c0250b3ff5927f596a489910594"
+ },
+ "stats": {
+ "startTime": "2026-09-14T17:35:19.096Z",
+ "duration": 61901.74600000001,
+ "expected": 11,
+ "skipped": 0,
+ "unexpected": 1,
+ "flaky": 0
+ },
+ "exitCode": 1,
+ "log": {
+ "path": "refactor/.cache/chapter05-native-access.log",
+ "sha256": "c70700fa0ed40cd6a1c48bed96c7f7be87bc8735eee9537067e6730f79633143"
+ },
+ "samples": [
+ {
+ "ordinal": 1,
+ "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:20.579Z",
+ "status": "passed",
+ "recordCount": 564,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1052
+ },
+ {
+ "name": "pause",
+ "at": 1789
+ },
+ {
+ "name": "seeking",
+ "at": 2605
+ },
+ {
+ "name": "canplay",
+ "at": 2605
+ },
+ {
+ "name": "seeked",
+ "at": 2622
+ },
+ {
+ "name": "loadstart",
+ "at": 3681
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3978
+ },
+ {
+ "name": "loadeddata",
+ "at": 3978
+ },
+ {
+ "name": "canplay",
+ "at": 3979
+ },
+ {
+ "name": "seeking",
+ "at": 4009
+ },
+ {
+ "name": "seeked",
+ "at": 4026
+ },
+ {
+ "name": "canplay",
+ "at": 4026
+ },
+ {
+ "name": "playing",
+ "at": 6546
+ }
+ ],
+ "publicState": {
+ "at": 6682,
+ "timeOrigin": 1789407320892,
+ "qualitySelectedAt": 3380,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2578
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3978
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 656,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 656,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 656,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1052,
+ "time": 0.0014167,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1789,
+ "time": 0.5363296,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2605,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2605,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2622,
+ "time": 3.0075392,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3978,
+ "time": 3.0075392,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3978,
+ "time": 3.0075392,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3979,
+ "time": 3.0075392,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 4009,
+ "time": 3.0075392,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 4025,
+ "time": 0.001313,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4026,
+ "time": 0.001313,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 6546,
+ "time": 3.0115272,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.1466653,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 2,
+ "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:20.579Z",
+ "status": "passed",
+ "recordCount": 450,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1066
+ },
+ {
+ "name": "pause",
+ "at": 1724
+ },
+ {
+ "name": "seeking",
+ "at": 2526
+ },
+ {
+ "name": "canplay",
+ "at": 2526
+ },
+ {
+ "name": "seeked",
+ "at": 2541
+ },
+ {
+ "name": "loadstart",
+ "at": 3860
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3930
+ },
+ {
+ "name": "loadeddata",
+ "at": 3930
+ },
+ {
+ "name": "canplay",
+ "at": 3931
+ },
+ {
+ "name": "seeking",
+ "at": 3960
+ },
+ {
+ "name": "seeked",
+ "at": 3976
+ },
+ {
+ "name": "canplay",
+ "at": 3976
+ },
+ {
+ "name": "playing",
+ "at": 6345
+ }
+ ],
+ "publicState": {
+ "at": 6481,
+ "timeOrigin": 1789407320894,
+ "qualitySelectedAt": 3318,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2497
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3930
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 653,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 653,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 653,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1066,
+ "time": 0.0044309,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1724,
+ "time": 0.5416264,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2526,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2526,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2541,
+ "time": 3.0072655,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3930,
+ "time": 3.0072655,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3930,
+ "time": 3.0072655,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3931,
+ "time": 3.0072655,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3960,
+ "time": 3.0072655,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3976,
+ "time": 0.0022271,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3976,
+ "time": 0.0022271,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 6345,
+ "time": 3.0105105,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.1462509,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 3,
+ "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:27.667Z",
+ "status": "passed",
+ "recordCount": 840,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 9201,
+ "gap": 5061
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 988
+ },
+ {
+ "name": "pause",
+ "at": 1739
+ },
+ {
+ "name": "seeking",
+ "at": 2672
+ },
+ {
+ "name": "canplay",
+ "at": 2673
+ },
+ {
+ "name": "seeked",
+ "at": 2689
+ },
+ {
+ "name": "loadstart",
+ "at": 3798
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 4126
+ },
+ {
+ "name": "loadeddata",
+ "at": 4127
+ },
+ {
+ "name": "canplay",
+ "at": 4127
+ },
+ {
+ "name": "seeking",
+ "at": 4156
+ },
+ {
+ "name": "seeked",
+ "at": 4175
+ },
+ {
+ "name": "canplay",
+ "at": 4175
+ },
+ {
+ "name": "seeking",
+ "at": 9197
+ },
+ {
+ "name": "seeked",
+ "at": 9200
+ },
+ {
+ "name": "playing",
+ "at": 11580
+ }
+ ],
+ "publicState": {
+ "at": 12115,
+ "timeOrigin": 1789407327882,
+ "qualitySelectedAt": 3478,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2653
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 4127
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 601,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 601,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 602,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 988,
+ "time": 0.0014276,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1739,
+ "time": 0.5639905,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2672,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2673,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2689,
+ "time": 3.0077751,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 4126,
+ "time": 3.0077751,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 4127,
+ "time": 3.0077751,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4127,
+ "time": 3.0077751,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 4156,
+ "time": 3.0077751,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 4175,
+ "time": 3.0077751,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4175,
+ "time": 3.0077751,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 9197,
+ "time": 3.0098934,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 9200,
+ "time": 3.0098934,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 11580,
+ "time": 3.015103,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.5497873,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 4,
+ "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:27.855Z",
+ "status": "failed",
+ "error": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // deep equality\u001b[22m\n\n\u001b[32m- Expected - 3\u001b[39m\n\u001b[31m+ Received + 1\u001b[39m\n\n\u001b[32m- Array [\u001b[39m\n\u001b[32m- \"/test/pattern.mp4?quality=A\",\u001b[39m\n\u001b[32m- ]\u001b[39m\n\u001b[31m+ Array []\u001b[39m\n\nCall Log:\n- Timeout 7000ms exceeded while waiting on the predicate",
+ "recordCount": 540,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 9047,
+ "gap": 5036
+ },
+ {
+ "at": 14047,
+ "gap": 5000
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1085
+ },
+ {
+ "name": "pause",
+ "at": 1547
+ },
+ {
+ "name": "seeking",
+ "at": 2449
+ },
+ {
+ "name": "canplay",
+ "at": 2449
+ },
+ {
+ "name": "seeked",
+ "at": 2464
+ },
+ {
+ "name": "loadstart",
+ "at": 3669
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3982
+ },
+ {
+ "name": "loadeddata",
+ "at": 3982
+ },
+ {
+ "name": "canplay",
+ "at": 3983
+ },
+ {
+ "name": "seeking",
+ "at": 4011
+ },
+ {
+ "name": "seeked",
+ "at": 4027
+ },
+ {
+ "name": "canplay",
+ "at": 4027
+ },
+ {
+ "name": "seeking",
+ "at": 14046
+ },
+ {
+ "name": "canplay",
+ "at": 14058
+ },
+ {
+ "name": "seeked",
+ "at": 14075
+ }
+ ],
+ "publicState": {
+ "at": 14325,
+ "timeOrigin": 1789407328073,
+ "qualitySelectedAt": 3353,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2431
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3982
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 565,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 565,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 565,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1085,
+ "time": 0.0075905,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1547,
+ "time": 0.4529973,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2449,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2449,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2464,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3982,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3982,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3983,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 4011,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 4027,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4027,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 14046,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "canplay",
+ "at": 14058,
+ "time": 3.0084509,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 14075,
+ "time": 3.0105204,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ }
+ ],
+ "time": 3.0105204,
+ "paused": true,
+ "mediaError": null,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "readyState": 4,
+ "mobileBranch": false,
+ "maxTouchPoints": 0,
+ "chapters": [
+ {
+ "start": "0",
+ "end": "2",
+ "duration": "2",
+ "title": "Opening"
+ },
+ {
+ "start": "2",
+ "end": "6",
+ "duration": "4",
+ "title": "Middle"
+ },
+ {
+ "start": "6",
+ "end": "8",
+ "duration": "2",
+ "title": "Ending"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 5,
+ "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:40.767Z",
+ "status": "passed",
+ "recordCount": 550,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 983
+ },
+ {
+ "name": "pause",
+ "at": 1676
+ },
+ {
+ "name": "seeking",
+ "at": 2462
+ },
+ {
+ "name": "canplay",
+ "at": 2462
+ },
+ {
+ "name": "seeked",
+ "at": 2479
+ },
+ {
+ "name": "loadstart",
+ "at": 3515
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3795
+ },
+ {
+ "name": "loadeddata",
+ "at": 3795
+ },
+ {
+ "name": "canplay",
+ "at": 3796
+ },
+ {
+ "name": "seeking",
+ "at": 3825
+ },
+ {
+ "name": "seeked",
+ "at": 3827
+ },
+ {
+ "name": "canplay",
+ "at": 3828
+ },
+ {
+ "name": "playing",
+ "at": 6272
+ }
+ ],
+ "publicState": {
+ "at": 6414,
+ "timeOrigin": 1789407340997,
+ "qualitySelectedAt": 3170,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2437
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3795
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 526,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 526,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 526,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 983,
+ "time": 0.0059518,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1676,
+ "time": 0.5431023,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2462,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2462,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2479,
+ "time": 3.0080717,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3795,
+ "time": 3.0080717,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3795,
+ "time": 3.0080717,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3796,
+ "time": 3.0080717,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3825,
+ "time": 0.0011259,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3827,
+ "time": 0.0011259,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3828,
+ "time": 0.0011259,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 6272,
+ "time": 3.0164861,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.1580536,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 6,
+ "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:43.294Z",
+ "status": "passed",
+ "recordCount": 442,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1021
+ },
+ {
+ "name": "pause",
+ "at": 1468
+ },
+ {
+ "name": "seeking",
+ "at": 2217
+ },
+ {
+ "name": "canplay",
+ "at": 2218
+ },
+ {
+ "name": "seeked",
+ "at": 2233
+ },
+ {
+ "name": "loadstart",
+ "at": 3572
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3653
+ },
+ {
+ "name": "loadeddata",
+ "at": 3654
+ },
+ {
+ "name": "canplay",
+ "at": 3654
+ },
+ {
+ "name": "seeking",
+ "at": 3682
+ },
+ {
+ "name": "seeked",
+ "at": 3683
+ },
+ {
+ "name": "canplay",
+ "at": 3683
+ },
+ {
+ "name": "playing",
+ "at": 6267
+ }
+ ],
+ "publicState": {
+ "at": 6401,
+ "timeOrigin": 1789407343538,
+ "qualitySelectedAt": 3056,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2198
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3654
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 542,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 542,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 543,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1021,
+ "time": 0.0070917,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1468,
+ "time": 0.2688275,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2217,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2218,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2233,
+ "time": 3.007821,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3653,
+ "time": 3.007821,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3653,
+ "time": 3.007821,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3654,
+ "time": 3.007821,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3682,
+ "time": 0.001268,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3683,
+ "time": 0.001268,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3683,
+ "time": 0.001268,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 6266,
+ "time": 3.0163159,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.150734,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 7,
+ "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:47.643Z",
+ "status": "passed",
+ "recordCount": 848,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1128
+ },
+ {
+ "name": "pause",
+ "at": 1846
+ },
+ {
+ "name": "seeking",
+ "at": 2601
+ },
+ {
+ "name": "seeked",
+ "at": 2618
+ },
+ {
+ "name": "loadstart",
+ "at": 3799
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 4074
+ },
+ {
+ "name": "loadeddata",
+ "at": 4075
+ },
+ {
+ "name": "canplay",
+ "at": 4075
+ },
+ {
+ "name": "seeking",
+ "at": 4105
+ },
+ {
+ "name": "seeked",
+ "at": 4122
+ },
+ {
+ "name": "canplay",
+ "at": 4122
+ },
+ {
+ "name": "seeking",
+ "at": 4152
+ },
+ {
+ "name": "seeked",
+ "at": 4169
+ },
+ {
+ "name": "playing",
+ "at": 6909
+ }
+ ],
+ "publicState": {
+ "at": 7438,
+ "timeOrigin": 1789407347807,
+ "qualitySelectedAt": 3425,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2586
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 4075
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 554,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 554,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 555,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1128,
+ "time": 0.0140309,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1846,
+ "time": 0.532235,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2601,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2618,
+ "time": 3.0080647,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 4074,
+ "time": 3.0080647,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 4075,
+ "time": 3.0080647,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4075,
+ "time": 3.0080647,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 4105,
+ "time": 3.0080647,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 4122,
+ "time": 3.0080647,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4122,
+ "time": 3.0080647,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 4152,
+ "time": 3.0080647,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 4169,
+ "time": 3.0084812,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 6909,
+ "time": 3.0179694,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.5466948,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 8,
+ "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:50.199Z",
+ "status": "passed",
+ "recordCount": 644,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 917
+ },
+ {
+ "name": "pause",
+ "at": 1360
+ },
+ {
+ "name": "seeking",
+ "at": 2280
+ },
+ {
+ "name": "canplay",
+ "at": 2280
+ },
+ {
+ "name": "seeked",
+ "at": 2295
+ },
+ {
+ "name": "loadstart",
+ "at": 3369
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3645
+ },
+ {
+ "name": "loadeddata",
+ "at": 3645
+ },
+ {
+ "name": "canplay",
+ "at": 3645
+ },
+ {
+ "name": "seeking",
+ "at": 3674
+ },
+ {
+ "name": "seeked",
+ "at": 3689
+ },
+ {
+ "name": "canplay",
+ "at": 3689
+ },
+ {
+ "name": "seeking",
+ "at": 3719
+ },
+ {
+ "name": "canplay",
+ "at": 3719
+ },
+ {
+ "name": "seeked",
+ "at": 3736
+ },
+ {
+ "name": "playing",
+ "at": 6364
+ }
+ ],
+ "publicState": {
+ "at": 6671,
+ "timeOrigin": 1789407350352,
+ "qualitySelectedAt": 3074,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2250
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3645
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 552,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 552,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 553,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 916,
+ "time": 0.0043809,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1360,
+ "time": 0.2801499,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2280,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2280,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2295,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3645,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3645,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3645,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3674,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3689,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3689,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3719,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3719,
+ "time": 3.008458,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3736,
+ "time": 3.011483,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 6364,
+ "time": 3.0135942,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.3207804,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 9,
+ "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:56.087Z",
+ "status": "passed",
+ "recordCount": 568,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 9022,
+ "gap": 5034
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1063
+ },
+ {
+ "name": "pause",
+ "at": 1741
+ },
+ {
+ "name": "seeking",
+ "at": 2590
+ },
+ {
+ "name": "canplay",
+ "at": 2592
+ },
+ {
+ "name": "seeked",
+ "at": 2607
+ },
+ {
+ "name": "loadstart",
+ "at": 3883
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3960
+ },
+ {
+ "name": "loadeddata",
+ "at": 3960
+ },
+ {
+ "name": "canplay",
+ "at": 3961
+ },
+ {
+ "name": "seeking",
+ "at": 3987
+ },
+ {
+ "name": "seeked",
+ "at": 4004
+ },
+ {
+ "name": "canplay",
+ "at": 4004
+ },
+ {
+ "name": "playing",
+ "at": 11652
+ }
+ ],
+ "publicState": {
+ "at": 11779,
+ "timeOrigin": 1789407356320,
+ "qualitySelectedAt": 3373,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2571
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3960
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 542,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 542,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 542,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1063,
+ "time": 0.0091494,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1741,
+ "time": 0.5478166,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2590,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2592,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2607,
+ "time": 3.007764,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3960,
+ "time": 3.007764,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3960,
+ "time": 3.007764,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3961,
+ "time": 3.007764,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3987,
+ "time": 3.007764,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 4004,
+ "time": 0.0014512,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4004,
+ "time": 0.0014512,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 11652,
+ "time": 3.0130469,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.1401158,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 10,
+ "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:35:57.839Z",
+ "status": "passed",
+ "recordCount": 450,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1088
+ },
+ {
+ "name": "pause",
+ "at": 1717
+ },
+ {
+ "name": "seeking",
+ "at": 2391
+ },
+ {
+ "name": "canplay",
+ "at": 2391
+ },
+ {
+ "name": "seeked",
+ "at": 2406
+ },
+ {
+ "name": "loadstart",
+ "at": 3448
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3727
+ },
+ {
+ "name": "loadeddata",
+ "at": 3728
+ },
+ {
+ "name": "canplay",
+ "at": 3728
+ },
+ {
+ "name": "seeking",
+ "at": 3757
+ },
+ {
+ "name": "seeked",
+ "at": 3758
+ },
+ {
+ "name": "canplay",
+ "at": 3758
+ },
+ {
+ "name": "playing",
+ "at": 6163
+ }
+ ],
+ "publicState": {
+ "at": 6313,
+ "timeOrigin": 1789407358084,
+ "qualitySelectedAt": 3150,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2366
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3728
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 553,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 553,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 553,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1088,
+ "time": 0.0084455,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1717,
+ "time": 0.5286583,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2391,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2391,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2406,
+ "time": 3.008801,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3727,
+ "time": 3.008801,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3728,
+ "time": 3.008801,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3728,
+ "time": 3.008801,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3757,
+ "time": 0.0010971,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3758,
+ "time": 0.0010971,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3758,
+ "time": 0.0010971,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 6163,
+ "time": 3.014529,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.1644367,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 11,
+ "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:36:04.667Z",
+ "status": "passed",
+ "recordCount": 810,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1080
+ },
+ {
+ "name": "pause",
+ "at": 1834
+ },
+ {
+ "name": "seeking",
+ "at": 2683
+ },
+ {
+ "name": "canplay",
+ "at": 2683
+ },
+ {
+ "name": "seeked",
+ "at": 2699
+ },
+ {
+ "name": "loadstart",
+ "at": 3733
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 4033
+ },
+ {
+ "name": "loadeddata",
+ "at": 4033
+ },
+ {
+ "name": "canplay",
+ "at": 4034
+ },
+ {
+ "name": "seeking",
+ "at": 4063
+ },
+ {
+ "name": "seeked",
+ "at": 4065
+ },
+ {
+ "name": "canplay",
+ "at": 4066
+ },
+ {
+ "name": "seeking",
+ "at": 4095
+ },
+ {
+ "name": "seeked",
+ "at": 4097
+ },
+ {
+ "name": "canplay",
+ "at": 4112
+ },
+ {
+ "name": "playing",
+ "at": 6676
+ }
+ ],
+ "publicState": {
+ "at": 7226,
+ "timeOrigin": 1789407364809,
+ "qualitySelectedAt": 3400,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2667
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 4034
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 546,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 546,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 546,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1080,
+ "time": 0.0054235,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1834,
+ "time": 0.5414715,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2683,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2683,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2699,
+ "time": 3.0068988,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 4033,
+ "time": 3.0068988,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 4033,
+ "time": 3.0068988,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4034,
+ "time": 3.0068988,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 4063,
+ "time": 0.0017804,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 4065,
+ "time": 3.0068988,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 4066,
+ "time": 3.0068988,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 4095,
+ "time": 3.0090011,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "seeked",
+ "at": 4097,
+ "time": 3.0090011,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "canplay",
+ "at": 4112,
+ "time": 3.0090011,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 6676,
+ "time": 3.0209886,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.5712792,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 12,
+ "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:36:08.360Z",
+ "status": "passed",
+ "recordCount": 676,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 8860,
+ "gap": 5024
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 1072
+ },
+ {
+ "name": "pause",
+ "at": 1518
+ },
+ {
+ "name": "seeking",
+ "at": 2379
+ },
+ {
+ "name": "canplay",
+ "at": 2380
+ },
+ {
+ "name": "seeked",
+ "at": 2395
+ },
+ {
+ "name": "loadstart",
+ "at": 3727
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3805
+ },
+ {
+ "name": "loadeddata",
+ "at": 3805
+ },
+ {
+ "name": "canplay",
+ "at": 3806
+ },
+ {
+ "name": "seeking",
+ "at": 3836
+ },
+ {
+ "name": "seeked",
+ "at": 3836
+ },
+ {
+ "name": "canplay",
+ "at": 3851
+ },
+ {
+ "name": "seeking",
+ "at": 8857
+ },
+ {
+ "name": "seeked",
+ "at": 8858
+ },
+ {
+ "name": "canplay",
+ "at": 8868
+ },
+ {
+ "name": "playing",
+ "at": 11231
+ }
+ ],
+ "publicState": {
+ "at": 11812,
+ "timeOrigin": 1789407368509,
+ "qualitySelectedAt": 3187,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2352
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3806
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 538,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 538,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 539,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 1072,
+ "time": 0.0050242,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1518,
+ "time": 0.2794806,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2379,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2380,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2395,
+ "time": 3.0083362,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3805,
+ "time": 3.0083362,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3805,
+ "time": 3.0083362,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3806,
+ "time": 3.0083362,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3836,
+ "time": 0.0016652,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "seeked",
+ "at": 3836,
+ "time": 3.0083362,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "canplay",
+ "at": 3851,
+ "time": 3.0083362,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 8857,
+ "time": 3.0100231,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "seeked",
+ "at": 8858,
+ "time": 3.0100231,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "canplay",
+ "at": 8868,
+ "time": 3.0100231,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 11231,
+ "time": 3.0163967,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.5967833,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ }
+ ]
+ },
+ {
+ "label": "no-trace",
+ "scope": "same installed combinations; diagnostics on; trace off; repeat-each 3",
+ "directory": "refactor/.cache/chapter05-native-no-trace-report",
+ "report": {
+ "path": "refactor/.cache/chapter05-native-no-trace-report/report.json",
+ "sha256": "766420da4fd111dbd1af43d70b3a8221e1bdc888c9932a30fbbc2989cf1c5ca3"
+ },
+ "stats": {
+ "startTime": "2026-09-14T17:37:46.531Z",
+ "duration": 59003.097,
+ "expected": 11,
+ "skipped": 0,
+ "unexpected": 1,
+ "flaky": 0
+ },
+ "exitCode": 1,
+ "log": {
+ "path": "refactor/.cache/chapter05-native-no-trace.log",
+ "sha256": "2ee83c11d8c03b1559527429657544d1884520b8f8295d6399238c4aa4a75bce"
+ },
+ "samples": [
+ {
+ "ordinal": 1,
+ "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:37:47.963Z",
+ "status": "passed",
+ "recordCount": 482,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 950
+ },
+ {
+ "name": "pause",
+ "at": 1535
+ },
+ {
+ "name": "seeking",
+ "at": 2150
+ },
+ {
+ "name": "canplay",
+ "at": 2150
+ },
+ {
+ "name": "seeked",
+ "at": 2166
+ },
+ {
+ "name": "loadstart",
+ "at": 3211
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3493
+ },
+ {
+ "name": "loadeddata",
+ "at": 3493
+ },
+ {
+ "name": "canplay",
+ "at": 3494
+ },
+ {
+ "name": "seeking",
+ "at": 3524
+ },
+ {
+ "name": "seeked",
+ "at": 3525
+ },
+ {
+ "name": "canplay",
+ "at": 3526
+ },
+ {
+ "name": "playing",
+ "at": 5159
+ }
+ ],
+ "publicState": {
+ "at": 5209,
+ "timeOrigin": 1789407468252,
+ "qualitySelectedAt": 2736,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2125
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3493
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 603,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 603,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 603,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 950,
+ "time": 0.0064843,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1535,
+ "time": 0.5430788,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2150,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2150,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2166,
+ "time": 3.009604,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3493,
+ "time": 3.009604,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3493,
+ "time": 3.009604,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3494,
+ "time": 3.009604,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3523,
+ "time": 0.0013346,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3525,
+ "time": 0.0013346,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3526,
+ "time": 0.0013346,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 5159,
+ "time": 3.017633,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.0677766,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 2,
+ "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:37:47.964Z",
+ "status": "passed",
+ "recordCount": 390,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 8488,
+ "gap": 5026
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 936
+ },
+ {
+ "name": "pause",
+ "at": 1518
+ },
+ {
+ "name": "seeking",
+ "at": 2119
+ },
+ {
+ "name": "seeked",
+ "at": 2135
+ },
+ {
+ "name": "loadstart",
+ "at": 3358
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3432
+ },
+ {
+ "name": "loadeddata",
+ "at": 3432
+ },
+ {
+ "name": "canplay",
+ "at": 3433
+ },
+ {
+ "name": "seeking",
+ "at": 3462
+ },
+ {
+ "name": "seeked",
+ "at": 3478
+ },
+ {
+ "name": "canplay",
+ "at": 3478
+ },
+ {
+ "name": "playing",
+ "at": 10205
+ }
+ ],
+ "publicState": {
+ "at": 10263,
+ "timeOrigin": 1789407468251,
+ "qualitySelectedAt": 2661,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2102
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3432
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 602,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 602,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 602,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 936,
+ "time": 0.0065875,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1518,
+ "time": 0.542285,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2119,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2135,
+ "time": 3.0084626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3432,
+ "time": 3.0084626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3432,
+ "time": 3.0084626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3433,
+ "time": 3.0084626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3462,
+ "time": 3.0084626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3477,
+ "time": 0.0023485,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3478,
+ "time": 0.0023485,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 10205,
+ "time": 3.0160599,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.0736293,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 3,
+ "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:37:53.653Z",
+ "status": "passed",
+ "recordCount": 752,
+ "maxAccessMs": 2,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 8307,
+ "gap": 3408
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 875
+ },
+ {
+ "name": "pause",
+ "at": 1445
+ },
+ {
+ "name": "seeking",
+ "at": 1936
+ },
+ {
+ "name": "canplay",
+ "at": 1937
+ },
+ {
+ "name": "seeked",
+ "at": 1954
+ },
+ {
+ "name": "loadstart",
+ "at": 2987
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3252
+ },
+ {
+ "name": "loadeddata",
+ "at": 3252
+ },
+ {
+ "name": "canplay",
+ "at": 3252
+ },
+ {
+ "name": "seeking",
+ "at": 3281
+ },
+ {
+ "name": "seeked",
+ "at": 3283
+ },
+ {
+ "name": "seeking",
+ "at": 3312
+ },
+ {
+ "name": "seeked",
+ "at": 3315
+ },
+ {
+ "name": "canplay",
+ "at": 8318
+ },
+ {
+ "name": "playing",
+ "at": 8319
+ }
+ ],
+ "publicState": {
+ "at": 8755,
+ "timeOrigin": 1789407473792,
+ "qualitySelectedAt": 2531,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 1922
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3252
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 491,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 492,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 492,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 875,
+ "time": 0.0054156,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1445,
+ "time": 0.5432777,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 1936,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 1937,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 1954,
+ "time": 3.0075947,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3252,
+ "time": 3.0075947,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3252,
+ "time": 3.0075947,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3252,
+ "time": 3.0075947,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3281,
+ "time": 0.0014259,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3283,
+ "time": 3.0075947,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3312,
+ "time": 3.0101626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "seeked",
+ "at": 3315,
+ "time": 3.0101626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "canplay",
+ "at": 8318,
+ "time": 3.0101626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 8319,
+ "time": 3.0101626,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.4353598,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 4,
+ "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:37:58.731Z",
+ "status": "passed",
+ "recordCount": 668,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 8412,
+ "gap": 5056
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 884
+ },
+ {
+ "name": "pause",
+ "at": 1470
+ },
+ {
+ "name": "seeking",
+ "at": 1980
+ },
+ {
+ "name": "canplay",
+ "at": 1980
+ },
+ {
+ "name": "seeked",
+ "at": 1996
+ },
+ {
+ "name": "loadstart",
+ "at": 3028
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3342
+ },
+ {
+ "name": "loadeddata",
+ "at": 3342
+ },
+ {
+ "name": "canplay",
+ "at": 3342
+ },
+ {
+ "name": "seeking",
+ "at": 3371
+ },
+ {
+ "name": "seeked",
+ "at": 3372
+ },
+ {
+ "name": "canplay",
+ "at": 3372
+ },
+ {
+ "name": "seeking",
+ "at": 3402
+ },
+ {
+ "name": "seeked",
+ "at": 3403
+ },
+ {
+ "name": "canplay",
+ "at": 3403
+ },
+ {
+ "name": "playing",
+ "at": 10148
+ }
+ ],
+ "publicState": {
+ "at": 10571,
+ "timeOrigin": 1789407478861,
+ "qualitySelectedAt": 2553,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 1958
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3342
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 483,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 483,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 483,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 884,
+ "time": 0.0075341,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1470,
+ "time": 0.5316844,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 1980,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 1980,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 1996,
+ "time": 3.007945,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3342,
+ "time": 3.007945,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3342,
+ "time": 3.007945,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3342,
+ "time": 3.007945,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3371,
+ "time": 0.0017414,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3372,
+ "time": 3.007945,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3372,
+ "time": 3.007945,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3402,
+ "time": 3.0094112,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3403,
+ "time": 3.0094112,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3403,
+ "time": 3.0094112,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 10148,
+ "time": 3.0131532,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.4358792,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 5,
+ "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:38:03.262Z",
+ "status": "passed",
+ "recordCount": 476,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 895
+ },
+ {
+ "name": "pause",
+ "at": 1486
+ },
+ {
+ "name": "seeking",
+ "at": 1993
+ },
+ {
+ "name": "seeked",
+ "at": 2009
+ },
+ {
+ "name": "loadstart",
+ "at": 3052
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3347
+ },
+ {
+ "name": "loadeddata",
+ "at": 3348
+ },
+ {
+ "name": "canplay",
+ "at": 3348
+ },
+ {
+ "name": "seeking",
+ "at": 3377
+ },
+ {
+ "name": "seeked",
+ "at": 3379
+ },
+ {
+ "name": "canplay",
+ "at": 3379
+ },
+ {
+ "name": "playing",
+ "at": 5177
+ }
+ ],
+ "publicState": {
+ "at": 5217,
+ "timeOrigin": 1789407483477,
+ "qualitySelectedAt": 2565,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 1966
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3348
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 491,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 3
+ },
+ {
+ "name": "loadeddata",
+ "at": 492,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 3
+ },
+ {
+ "name": "canplay",
+ "at": 492,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 3
+ },
+ {
+ "name": "playing",
+ "at": 895,
+ "time": 0.0062727,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1486,
+ "time": 0.5334564,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 1993,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2009,
+ "time": 3.0095315,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3347,
+ "time": 3.0095315,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3347,
+ "time": 3.0095315,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3348,
+ "time": 3.0095315,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3377,
+ "time": 0.0012139,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3379,
+ "time": 0.0012139,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3379,
+ "time": 0.0012139,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 5177,
+ "time": 3.0158839,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.0556214,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 6,
+ "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:38:08.921Z",
+ "status": "passed",
+ "recordCount": 392,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 887
+ },
+ {
+ "name": "pause",
+ "at": 1455
+ },
+ {
+ "name": "seeking",
+ "at": 2058
+ },
+ {
+ "name": "canplay",
+ "at": 2058
+ },
+ {
+ "name": "seeked",
+ "at": 2074
+ },
+ {
+ "name": "loadstart",
+ "at": 3122
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3389
+ },
+ {
+ "name": "loadeddata",
+ "at": 3389
+ },
+ {
+ "name": "canplay",
+ "at": 3390
+ },
+ {
+ "name": "seeking",
+ "at": 3420
+ },
+ {
+ "name": "seeked",
+ "at": 3435
+ },
+ {
+ "name": "canplay",
+ "at": 3435
+ },
+ {
+ "name": "playing",
+ "at": 5077
+ }
+ ],
+ "publicState": {
+ "at": 5108,
+ "timeOrigin": 1789407489067,
+ "qualitySelectedAt": 2614,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2042
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3389
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 497,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 497,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 497,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 887,
+ "time": 0.0097511,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1455,
+ "time": 0.5318355,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2058,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2058,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2074,
+ "time": 3.0080799,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3389,
+ "time": 3.0080799,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3389,
+ "time": 3.0080799,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3390,
+ "time": 3.0080799,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3420,
+ "time": 3.0080799,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3435,
+ "time": 0.001138,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3435,
+ "time": 0.001138,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 5076,
+ "time": 3.0151644,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.0462754,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 7,
+ "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:38:10.143Z",
+ "status": "passed",
+ "recordCount": 758,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 8386,
+ "gap": 5046
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 896
+ },
+ {
+ "name": "pause",
+ "at": 1476
+ },
+ {
+ "name": "seeking",
+ "at": 1974
+ },
+ {
+ "name": "canplay",
+ "at": 1975
+ },
+ {
+ "name": "seeked",
+ "at": 1991
+ },
+ {
+ "name": "loadstart",
+ "at": 3026
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3307
+ },
+ {
+ "name": "loadeddata",
+ "at": 3307
+ },
+ {
+ "name": "canplay",
+ "at": 3307
+ },
+ {
+ "name": "seeking",
+ "at": 3337
+ },
+ {
+ "name": "seeked",
+ "at": 3339
+ },
+ {
+ "name": "seeking",
+ "at": 3368
+ },
+ {
+ "name": "seeked",
+ "at": 3371
+ },
+ {
+ "name": "canplay",
+ "at": 3371
+ },
+ {
+ "name": "playing",
+ "at": 10156
+ }
+ ],
+ "publicState": {
+ "at": 10582,
+ "timeOrigin": 1789407490371,
+ "qualitySelectedAt": 2553,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 1961
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3307
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 512,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 512,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 512,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 896,
+ "time": 0.0090918,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1476,
+ "time": 0.5431533,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 1974,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 1975,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 1991,
+ "time": 3.0084474,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3307,
+ "time": 3.0084474,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3307,
+ "time": 3.0084474,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3307,
+ "time": 3.0084474,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3337,
+ "time": 0.000604,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3339,
+ "time": 3.0084474,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3368,
+ "time": 3.0108258,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3371,
+ "time": 3.0108258,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3371,
+ "time": 3.0108258,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 10156,
+ "time": 3.0133975,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.4397713,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 8,
+ "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:38:14.373Z",
+ "status": "passed",
+ "recordCount": 650,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 851
+ },
+ {
+ "name": "pause",
+ "at": 1434
+ },
+ {
+ "name": "seeking",
+ "at": 1945
+ },
+ {
+ "name": "canplay",
+ "at": 1945
+ },
+ {
+ "name": "seeked",
+ "at": 1962
+ },
+ {
+ "name": "loadstart",
+ "at": 3002
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3267
+ },
+ {
+ "name": "loadeddata",
+ "at": 3267
+ },
+ {
+ "name": "canplay",
+ "at": 3268
+ },
+ {
+ "name": "seeking",
+ "at": 3297
+ },
+ {
+ "name": "seeked",
+ "at": 3297
+ },
+ {
+ "name": "canplay",
+ "at": 3298
+ },
+ {
+ "name": "seeking",
+ "at": 3328
+ },
+ {
+ "name": "seeked",
+ "at": 3329
+ },
+ {
+ "name": "canplay",
+ "at": 3329
+ },
+ {
+ "name": "playing",
+ "at": 5064
+ }
+ ],
+ "publicState": {
+ "at": 5486,
+ "timeOrigin": 1789407494507,
+ "qualitySelectedAt": 2515,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 1929
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3268
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 465,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 465,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 466,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 851,
+ "time": 0.0080765,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1434,
+ "time": 0.5310585,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 1945,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 1945,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 1962,
+ "time": 3.0080376,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3267,
+ "time": 3.0080376,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3267,
+ "time": 3.0080376,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3268,
+ "time": 3.0080376,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3297,
+ "time": 0.0013103,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3297,
+ "time": 3.0080376,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3298,
+ "time": 3.0080376,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3327,
+ "time": 3.0092408,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3329,
+ "time": 3.0092408,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3329,
+ "time": 3.0092408,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 5064,
+ "time": 3.0143679,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.4371243,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 9,
+ "title": "published core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:38:20.758Z",
+ "status": "passed",
+ "recordCount": 486,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 8374,
+ "gap": 5020
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 884
+ },
+ {
+ "name": "pause",
+ "at": 1485
+ },
+ {
+ "name": "seeking",
+ "at": 1994
+ },
+ {
+ "name": "canplay",
+ "at": 1994
+ },
+ {
+ "name": "seeked",
+ "at": 2010
+ },
+ {
+ "name": "loadstart",
+ "at": 3044
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3322
+ },
+ {
+ "name": "loadeddata",
+ "at": 3322
+ },
+ {
+ "name": "canplay",
+ "at": 3323
+ },
+ {
+ "name": "seeking",
+ "at": 3351
+ },
+ {
+ "name": "seeked",
+ "at": 3354
+ },
+ {
+ "name": "canplay",
+ "at": 3354
+ },
+ {
+ "name": "playing",
+ "at": 10084
+ }
+ ],
+ "publicState": {
+ "at": 10135,
+ "timeOrigin": 1789407500987,
+ "qualitySelectedAt": 2551,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 1968
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3323
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 498,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 498,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 498,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 883,
+ "time": 0.009313,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1485,
+ "time": 0.5481443,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 1994,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 1994,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2010,
+ "time": 3.0090367,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3322,
+ "time": 3.0090367,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3322,
+ "time": 3.0090367,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3323,
+ "time": 3.0090367,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3351,
+ "time": 0.0022715,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3354,
+ "time": 0.0022715,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3354,
+ "time": 0.0022715,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 10083,
+ "time": 3.0143809,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.0658024,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 10,
+ "title": "published core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:38:21.734Z",
+ "status": "passed",
+ "recordCount": 410,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 8395,
+ "gap": 5021
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 918
+ },
+ {
+ "name": "pause",
+ "at": 1499
+ },
+ {
+ "name": "seeking",
+ "at": 2026
+ },
+ {
+ "name": "canplay",
+ "at": 2027
+ },
+ {
+ "name": "seeked",
+ "at": 2043
+ },
+ {
+ "name": "loadstart",
+ "at": 3078
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3343
+ },
+ {
+ "name": "loadeddata",
+ "at": 3343
+ },
+ {
+ "name": "canplay",
+ "at": 3343
+ },
+ {
+ "name": "seeking",
+ "at": 3373
+ },
+ {
+ "name": "seeked",
+ "at": 3374
+ },
+ {
+ "name": "canplay",
+ "at": 3374
+ },
+ {
+ "name": "playing",
+ "at": 10384
+ }
+ ],
+ "publicState": {
+ "at": 10439,
+ "timeOrigin": 1789407501956,
+ "qualitySelectedAt": 2608,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2011
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3343
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 501,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 501,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 502,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 918,
+ "time": 0.0112131,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1499,
+ "time": 0.5761197,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2026,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2027,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2043,
+ "time": 3.0081307,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3343,
+ "time": 3.0081307,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3343,
+ "time": 3.0081307,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3343,
+ "time": 3.0081307,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3373,
+ "time": 0.0015652,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3374,
+ "time": 0.0015652,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3374,
+ "time": 0.0015652,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 10384,
+ "time": 3.0164641,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.0711506,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 11,
+ "title": "candidate core + published chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:38:31.338Z",
+ "status": "failed",
+ "error": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mtrue\u001b[39m\nReceived: \u001b[31mfalse\u001b[39m\n\nCall Log:\n- Timeout 7000ms exceeded while waiting on the predicate",
+ "recordCount": 614,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 8453,
+ "gap": 5033
+ },
+ {
+ "at": 13454,
+ "gap": 5001
+ }
+ ],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 941
+ },
+ {
+ "name": "pause",
+ "at": 1531
+ },
+ {
+ "name": "seeking",
+ "at": 2053
+ },
+ {
+ "name": "canplay",
+ "at": 2053
+ },
+ {
+ "name": "seeked",
+ "at": 2068
+ },
+ {
+ "name": "loadstart",
+ "at": 3109
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3390
+ },
+ {
+ "name": "loadeddata",
+ "at": 3390
+ },
+ {
+ "name": "canplay",
+ "at": 3390
+ },
+ {
+ "name": "seeking",
+ "at": 3418
+ },
+ {
+ "name": "seeked",
+ "at": 3435
+ },
+ {
+ "name": "canplay",
+ "at": 3435
+ },
+ {
+ "name": "seeking",
+ "at": 13453
+ },
+ {
+ "name": "canplay",
+ "at": 13473
+ },
+ {
+ "name": "seeked",
+ "at": 13611
+ }
+ ],
+ "publicState": {
+ "at": 13655,
+ "timeOrigin": 1789407511493,
+ "qualitySelectedAt": 2611,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 2028
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3390
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 543,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 543,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 543,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 941,
+ "time": 0.0079412,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1531,
+ "time": 0.5513656,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2053,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 2053,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2068,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3390,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 3
+ },
+ {
+ "name": "loadeddata",
+ "at": 3390,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 3
+ },
+ {
+ "name": "canplay",
+ "at": 3390,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 3
+ },
+ {
+ "name": "seeking",
+ "at": 3418,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3435,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3435,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 13453,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 2
+ },
+ {
+ "name": "canplay",
+ "at": 13473,
+ "time": 3.0086753,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 13611,
+ "time": 3.0189368,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ }
+ ],
+ "time": 3.0189368,
+ "paused": true,
+ "mediaError": null,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "readyState": 4,
+ "mobileBranch": false,
+ "maxTouchPoints": 0,
+ "chapters": [
+ {
+ "start": "0",
+ "end": "2",
+ "duration": "2",
+ "title": "Opening"
+ },
+ {
+ "start": "2",
+ "end": "6",
+ "duration": "4",
+ "title": "Middle"
+ },
+ {
+ "start": "6",
+ "end": "8",
+ "duration": "2",
+ "title": "Ending"
+ }
+ ]
+ },
+ "pageErrors": []
+ },
+ {
+ "ordinal": 12,
+ "title": "candidate core + candidate chapter: quality switch preserves chapter/thumbnail interactions",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:38:32.616Z",
+ "status": "passed",
+ "recordCount": 644,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": null,
+ "nativeEvents": [
+ {
+ "name": "playing",
+ "at": 912
+ },
+ {
+ "name": "pause",
+ "at": 1491
+ },
+ {
+ "name": "seeking",
+ "at": 2002
+ },
+ {
+ "name": "seeked",
+ "at": 2018
+ },
+ {
+ "name": "loadstart",
+ "at": 3054
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3305
+ },
+ {
+ "name": "loadeddata",
+ "at": 3305
+ },
+ {
+ "name": "canplay",
+ "at": 3306
+ },
+ {
+ "name": "seeking",
+ "at": 3335
+ },
+ {
+ "name": "seeked",
+ "at": 3336
+ },
+ {
+ "name": "canplay",
+ "at": 3336
+ },
+ {
+ "name": "seeking",
+ "at": 3366
+ },
+ {
+ "name": "seeked",
+ "at": 3367
+ },
+ {
+ "name": "canplay",
+ "at": 3367
+ },
+ {
+ "name": "playing",
+ "at": 4989
+ }
+ ],
+ "publicState": {
+ "at": 5422,
+ "timeOrigin": 1789407512757,
+ "qualitySelectedAt": 2562,
+ "events": [
+ {
+ "name": "seek",
+ "value": 3.0064516129032257,
+ "at": 1972
+ },
+ {
+ "name": "restart",
+ "value": "/test/pattern.mp4?quality=A",
+ "at": 3306
+ }
+ ],
+ "nativeEvents": [
+ {
+ "name": "loadedmetadata",
+ "at": 487,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 487,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 487,
+ "time": 0,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 912,
+ "time": 0.0081415,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": false,
+ "readyState": 4
+ },
+ {
+ "name": "pause",
+ "at": 1491,
+ "time": 0.5398439,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 2001,
+ "time": 3.0064516129032257,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 2018,
+ "time": 3.0071108,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=B",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 3305,
+ "time": 3.0071108,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "loadeddata",
+ "at": 3305,
+ "time": 3.0071108,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3306,
+ "time": 3.0071108,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3335,
+ "time": 0.0009714,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3336,
+ "time": 3.0071108,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3336,
+ "time": 3.0071108,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeking",
+ "at": 3366,
+ "time": 3.0082454,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "seeked",
+ "at": 3367,
+ "time": 3.0082454,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "canplay",
+ "at": 3367,
+ "time": 3.0082454,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": true,
+ "readyState": 4
+ },
+ {
+ "name": "playing",
+ "at": 4989,
+ "time": 3.0160971,
+ "source": "http://127.0.0.1:8084/test/pattern.mp4?quality=A",
+ "paused": false,
+ "readyState": 4
+ }
+ ],
+ "time": 3.449239,
+ "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"
+ }
+ ]
+ },
+ "pageErrors": []
+ }
+ ]
+ },
+ {
+ "label": "control",
+ "scope": "pure native media; metadata restore only; no correction; repeat-each 6",
+ "directory": "refactor/.cache/chapter05-native-control-report",
+ "report": {
+ "path": "refactor/.cache/chapter05-native-control-report/report.json",
+ "sha256": "59a14ba7970129167bed9b5378a8ae94562920e19694b1203ade3d62d54f296f"
+ },
+ "stats": {
+ "startTime": "2026-09-14T17:40:31.758Z",
+ "duration": 13809.145999999999,
+ "expected": 0,
+ "skipped": 0,
+ "unexpected": 6,
+ "flaky": 0
+ },
+ "exitCode": 1,
+ "log": {
+ "path": "refactor/.cache/chapter05-native-control.log",
+ "sha256": "2d64d6cf5e2da0f6c4ab845a278ff79569ede64a7f3d007c25e3869030d1ee65"
+ },
+ "samples": [
+ {
+ "ordinal": 1,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:40:34.137Z",
+ "status": "failed",
+ "error": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeCloseTo\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m, \u001b[22mprecision\u001b[2m)\u001b[22m\n\nExpected: \u001b[32m3.009658\u001b[39m\nReceived: \u001b[31m0.000468\u001b[39m\n\nExpected precision: 1\nExpected difference: < \u001b[32m0.05\u001b[39m\nReceived difference: \u001b[31m3.00919\u001b[39m",
+ "recordCount": 30,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 0.000468,
+ "target": 3.009658,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 75
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 599
+ },
+ {
+ "name": "loadeddata",
+ "at": 599
+ },
+ {
+ "name": "canplay",
+ "at": 599
+ },
+ {
+ "name": "playing",
+ "at": 934
+ },
+ {
+ "name": "pause",
+ "at": 1531
+ },
+ {
+ "name": "seeking",
+ "at": 1566
+ },
+ {
+ "name": "canplay",
+ "at": 1567
+ },
+ {
+ "name": "seeked",
+ "at": 1570
+ },
+ {
+ "name": "loadstart",
+ "at": 2298
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2380
+ },
+ {
+ "name": "loadeddata",
+ "at": 2380
+ },
+ {
+ "name": "canplay",
+ "at": 2380
+ },
+ {
+ "name": "seeking",
+ "at": 2411
+ },
+ {
+ "name": "seeked",
+ "at": 2411
+ },
+ {
+ "name": "canplay",
+ "at": 2411
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 2,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:40:34.120Z",
+ "status": "failed",
+ "error": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeCloseTo\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m, \u001b[22mprecision\u001b[2m)\u001b[22m\n\nExpected: \u001b[32m3.0114336\u001b[39m\nReceived: \u001b[31m0.0014442\u001b[39m\n\nExpected precision: 1\nExpected difference: < \u001b[32m0.05\u001b[39m\nReceived difference: \u001b[31m3.0099894000000003\u001b[39m",
+ "recordCount": 30,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 0.0014442,
+ "target": 3.0114336,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 82
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 644
+ },
+ {
+ "name": "loadeddata",
+ "at": 644
+ },
+ {
+ "name": "canplay",
+ "at": 644
+ },
+ {
+ "name": "playing",
+ "at": 957
+ },
+ {
+ "name": "pause",
+ "at": 1520
+ },
+ {
+ "name": "seeking",
+ "at": 1528
+ },
+ {
+ "name": "canplay",
+ "at": 1529
+ },
+ {
+ "name": "seeked",
+ "at": 1549
+ },
+ {
+ "name": "loadstart",
+ "at": 2283
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2357
+ },
+ {
+ "name": "loadeddata",
+ "at": 2358
+ },
+ {
+ "name": "canplay",
+ "at": 2358
+ },
+ {
+ "name": "seeking",
+ "at": 2388
+ },
+ {
+ "name": "seeked",
+ "at": 2389
+ },
+ {
+ "name": "canplay",
+ "at": 2403
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 3,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:40:37.971Z",
+ "status": "failed",
+ "error": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeCloseTo\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m, \u001b[22mprecision\u001b[2m)\u001b[22m\n\nExpected: \u001b[32m3.0099653\u001b[39m\nReceived: \u001b[31m0.0015638\u001b[39m\n\nExpected precision: 1\nExpected difference: < \u001b[32m0.05\u001b[39m\nReceived difference: \u001b[31m3.0084015\u001b[39m",
+ "recordCount": 30,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 0.0015638,
+ "target": 3.0099653,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 81
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 566
+ },
+ {
+ "name": "loadeddata",
+ "at": 566
+ },
+ {
+ "name": "canplay",
+ "at": 566
+ },
+ {
+ "name": "playing",
+ "at": 877
+ },
+ {
+ "name": "pause",
+ "at": 1491
+ },
+ {
+ "name": "seeking",
+ "at": 1530
+ },
+ {
+ "name": "canplay",
+ "at": 1530
+ },
+ {
+ "name": "seeked",
+ "at": 1534
+ },
+ {
+ "name": "loadstart",
+ "at": 2303
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2391
+ },
+ {
+ "name": "loadeddata",
+ "at": 2392
+ },
+ {
+ "name": "canplay",
+ "at": 2392
+ },
+ {
+ "name": "seeking",
+ "at": 2420
+ },
+ {
+ "name": "seeked",
+ "at": 2431
+ },
+ {
+ "name": "canplay",
+ "at": 2435
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 4,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:40:38.008Z",
+ "status": "failed",
+ "error": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeCloseTo\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m, \u001b[22mprecision\u001b[2m)\u001b[22m\n\nExpected: \u001b[32m3.008534\u001b[39m\nReceived: \u001b[31m0.0023366\u001b[39m\n\nExpected precision: 1\nExpected difference: < \u001b[32m0.05\u001b[39m\nReceived difference: \u001b[31m3.0061974\u001b[39m",
+ "recordCount": 30,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 0.0023366,
+ "target": 3.008534,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 80
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 564
+ },
+ {
+ "name": "loadeddata",
+ "at": 564
+ },
+ {
+ "name": "canplay",
+ "at": 564
+ },
+ {
+ "name": "playing",
+ "at": 922
+ },
+ {
+ "name": "pause",
+ "at": 1477
+ },
+ {
+ "name": "seeking",
+ "at": 1496
+ },
+ {
+ "name": "canplay",
+ "at": 1497
+ },
+ {
+ "name": "seeked",
+ "at": 1514
+ },
+ {
+ "name": "loadstart",
+ "at": 2093
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2400
+ },
+ {
+ "name": "loadeddata",
+ "at": 2400
+ },
+ {
+ "name": "canplay",
+ "at": 2400
+ },
+ {
+ "name": "seeking",
+ "at": 2418
+ },
+ {
+ "name": "seeked",
+ "at": 2448
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 5,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:40:41.863Z",
+ "status": "failed",
+ "error": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeCloseTo\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m, \u001b[22mprecision\u001b[2m)\u001b[22m\n\nExpected: \u001b[32m3.0092494\u001b[39m\nReceived: \u001b[31m0.0012832\u001b[39m\n\nExpected precision: 1\nExpected difference: < \u001b[32m0.05\u001b[39m\nReceived difference: \u001b[31m3.0079662\u001b[39m",
+ "recordCount": 30,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 0.0012832,
+ "target": 3.0092494,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 75
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 527
+ },
+ {
+ "name": "loadeddata",
+ "at": 527
+ },
+ {
+ "name": "canplay",
+ "at": 527
+ },
+ {
+ "name": "playing",
+ "at": 886
+ },
+ {
+ "name": "pause",
+ "at": 1512
+ },
+ {
+ "name": "seeking",
+ "at": 1522
+ },
+ {
+ "name": "canplay",
+ "at": 1522
+ },
+ {
+ "name": "seeked",
+ "at": 1539
+ },
+ {
+ "name": "loadstart",
+ "at": 2115
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2373
+ },
+ {
+ "name": "loadeddata",
+ "at": 2374
+ },
+ {
+ "name": "canplay",
+ "at": 2374
+ },
+ {
+ "name": "seeking",
+ "at": 2396
+ },
+ {
+ "name": "seeked",
+ "at": 2401
+ },
+ {
+ "name": "canplay",
+ "at": 2412
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 6,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:40:41.892Z",
+ "status": "failed",
+ "error": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeCloseTo\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m, \u001b[22mprecision\u001b[2m)\u001b[22m\n\nExpected: \u001b[32m3.009782\u001b[39m\nReceived: \u001b[31m0.0015251\u001b[39m\n\nExpected precision: 1\nExpected difference: < \u001b[32m0.05\u001b[39m\nReceived difference: \u001b[31m3.0082569\u001b[39m",
+ "recordCount": 30,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 0.0015251,
+ "target": 3.009782,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 80
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 534
+ },
+ {
+ "name": "loadeddata",
+ "at": 534
+ },
+ {
+ "name": "canplay",
+ "at": 534
+ },
+ {
+ "name": "playing",
+ "at": 887
+ },
+ {
+ "name": "pause",
+ "at": 1435
+ },
+ {
+ "name": "seeking",
+ "at": 1450
+ },
+ {
+ "name": "canplay",
+ "at": 1450
+ },
+ {
+ "name": "seeked",
+ "at": 1454
+ },
+ {
+ "name": "loadstart",
+ "at": 2193
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2270
+ },
+ {
+ "name": "loadeddata",
+ "at": 2270
+ },
+ {
+ "name": "canplay",
+ "at": 2270
+ },
+ {
+ "name": "seeking",
+ "at": 2294
+ },
+ {
+ "name": "seeked",
+ "at": 2314
+ },
+ {
+ "name": "canplay",
+ "at": 2323
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ }
+ ]
+ },
+ {
+ "label": "correction",
+ "scope": "pure native media; one direct correction on seeked; repeat-each 6",
+ "directory": "refactor/.cache/chapter05-native-correction-report",
+ "report": {
+ "path": "refactor/.cache/chapter05-native-correction-report/report.json",
+ "sha256": "bafc5e8c765c76caacff28e0151d9daec5dfe8a244984516aa61c72f61c2fcb5"
+ },
+ "stats": {
+ "startTime": "2026-09-14T17:42:31.950Z",
+ "duration": 19923.761,
+ "expected": 6,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "exitCode": 0,
+ "log": {
+ "path": "refactor/.cache/chapter05-native-correction.log",
+ "sha256": "4217dc21730bc6b332e80c3c84cf409a926555352f659a73e6ed02f0efcd73ef"
+ },
+ "samples": [
+ {
+ "ordinal": 1,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:42:34.279Z",
+ "status": "passed",
+ "recordCount": 38,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.0110796,
+ "target": 3.0095943,
+ "corrections": 1,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 91
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 576
+ },
+ {
+ "name": "loadeddata",
+ "at": 577
+ },
+ {
+ "name": "canplay",
+ "at": 577
+ },
+ {
+ "name": "playing",
+ "at": 917
+ },
+ {
+ "name": "pause",
+ "at": 1524
+ },
+ {
+ "name": "seeking",
+ "at": 1539
+ },
+ {
+ "name": "canplay",
+ "at": 1539
+ },
+ {
+ "name": "seeked",
+ "at": 1546
+ },
+ {
+ "name": "loadstart",
+ "at": 2020
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2260
+ },
+ {
+ "name": "loadeddata",
+ "at": 2260
+ },
+ {
+ "name": "canplay",
+ "at": 2260
+ },
+ {
+ "name": "seeking",
+ "at": 2285
+ },
+ {
+ "name": "seeked",
+ "at": 2294
+ },
+ {
+ "name": "canplay",
+ "at": 2300
+ },
+ {
+ "name": "seeking",
+ "at": 2315
+ },
+ {
+ "name": "seeked",
+ "at": 2316
+ },
+ {
+ "name": "canplay",
+ "at": 2316
+ },
+ {
+ "name": "playing",
+ "at": 2581
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 2,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:42:34.291Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 7463,
+ "gap": 5022
+ }
+ ],
+ "position": {
+ "time": 3.0095662,
+ "target": 3.0089794,
+ "corrections": 1,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 91
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 570
+ },
+ {
+ "name": "loadeddata",
+ "at": 570
+ },
+ {
+ "name": "canplay",
+ "at": 570
+ },
+ {
+ "name": "playing",
+ "at": 981
+ },
+ {
+ "name": "pause",
+ "at": 1570
+ },
+ {
+ "name": "seeking",
+ "at": 1585
+ },
+ {
+ "name": "canplay",
+ "at": 1586
+ },
+ {
+ "name": "seeked",
+ "at": 1601
+ },
+ {
+ "name": "loadstart",
+ "at": 2145
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2408
+ },
+ {
+ "name": "loadeddata",
+ "at": 2408
+ },
+ {
+ "name": "canplay",
+ "at": 2409
+ },
+ {
+ "name": "seeking",
+ "at": 2440
+ },
+ {
+ "name": "seeked",
+ "at": 2440
+ },
+ {
+ "name": "canplay",
+ "at": 2456
+ },
+ {
+ "name": "seeking",
+ "at": 7463
+ },
+ {
+ "name": "seeked",
+ "at": 7463
+ },
+ {
+ "name": "canplay",
+ "at": 7470
+ },
+ {
+ "name": "playing",
+ "at": 7668
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 3,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:42:38.477Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 7271,
+ "gap": 5003
+ }
+ ],
+ "position": {
+ "time": 3.0102495,
+ "target": 3.0095412,
+ "corrections": 1,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 68
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 463
+ },
+ {
+ "name": "loadeddata",
+ "at": 463
+ },
+ {
+ "name": "canplay",
+ "at": 464
+ },
+ {
+ "name": "playing",
+ "at": 832
+ },
+ {
+ "name": "pause",
+ "at": 1381
+ },
+ {
+ "name": "seeking",
+ "at": 1391
+ },
+ {
+ "name": "canplay",
+ "at": 1391
+ },
+ {
+ "name": "seeked",
+ "at": 1409
+ },
+ {
+ "name": "loadstart",
+ "at": 2153
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2218
+ },
+ {
+ "name": "loadeddata",
+ "at": 2218
+ },
+ {
+ "name": "canplay",
+ "at": 2218
+ },
+ {
+ "name": "seeking",
+ "at": 2237
+ },
+ {
+ "name": "seeked",
+ "at": 2250
+ },
+ {
+ "name": "canplay",
+ "at": 2252
+ },
+ {
+ "name": "seeking",
+ "at": 2268
+ },
+ {
+ "name": "seeked",
+ "at": 2269
+ },
+ {
+ "name": "canplay",
+ "at": 7277
+ },
+ {
+ "name": "playing",
+ "at": 7483
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 4,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:42:43.516Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.0120583,
+ "target": 3.0097159,
+ "corrections": 1,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 71
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 495
+ },
+ {
+ "name": "loadeddata",
+ "at": 495
+ },
+ {
+ "name": "canplay",
+ "at": 495
+ },
+ {
+ "name": "playing",
+ "at": 835
+ },
+ {
+ "name": "pause",
+ "at": 1386
+ },
+ {
+ "name": "seeking",
+ "at": 1394
+ },
+ {
+ "name": "canplay",
+ "at": 1395
+ },
+ {
+ "name": "seeked",
+ "at": 1412
+ },
+ {
+ "name": "loadstart",
+ "at": 2003
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2267
+ },
+ {
+ "name": "loadeddata",
+ "at": 2267
+ },
+ {
+ "name": "canplay",
+ "at": 2267
+ },
+ {
+ "name": "seeking",
+ "at": 2297
+ },
+ {
+ "name": "seeked",
+ "at": 2298
+ },
+ {
+ "name": "canplay",
+ "at": 2298
+ },
+ {
+ "name": "seeking",
+ "at": 2329
+ },
+ {
+ "name": "canplay",
+ "at": 2329
+ },
+ {
+ "name": "seeked",
+ "at": 2345
+ },
+ {
+ "name": "playing",
+ "at": 2531
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 5,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:42:47.460Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.0107413,
+ "target": 3.00955,
+ "corrections": 1,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 78
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 514
+ },
+ {
+ "name": "loadeddata",
+ "at": 514
+ },
+ {
+ "name": "canplay",
+ "at": 514
+ },
+ {
+ "name": "playing",
+ "at": 891
+ },
+ {
+ "name": "pause",
+ "at": 1453
+ },
+ {
+ "name": "seeking",
+ "at": 1467
+ },
+ {
+ "name": "canplay",
+ "at": 1467
+ },
+ {
+ "name": "seeked",
+ "at": 1479
+ },
+ {
+ "name": "loadstart",
+ "at": 2043
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2263
+ },
+ {
+ "name": "loadeddata",
+ "at": 2263
+ },
+ {
+ "name": "canplay",
+ "at": 2263
+ },
+ {
+ "name": "seeking",
+ "at": 2292
+ },
+ {
+ "name": "seeked",
+ "at": 2292
+ },
+ {
+ "name": "canplay",
+ "at": 2308
+ },
+ {
+ "name": "seeking",
+ "at": 2323
+ },
+ {
+ "name": "seeked",
+ "at": 2324
+ },
+ {
+ "name": "playing",
+ "at": 2569
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 6,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:42:47.667Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.0130571,
+ "target": 3.0104253,
+ "corrections": 1,
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 76
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 491
+ },
+ {
+ "name": "loadeddata",
+ "at": 491
+ },
+ {
+ "name": "canplay",
+ "at": 491
+ },
+ {
+ "name": "playing",
+ "at": 856
+ },
+ {
+ "name": "pause",
+ "at": 1441
+ },
+ {
+ "name": "seeking",
+ "at": 1449
+ },
+ {
+ "name": "canplay",
+ "at": 1450
+ },
+ {
+ "name": "seeked",
+ "at": 1468
+ },
+ {
+ "name": "loadstart",
+ "at": 2213
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2295
+ },
+ {
+ "name": "loadeddata",
+ "at": 2295
+ },
+ {
+ "name": "canplay",
+ "at": 2295
+ },
+ {
+ "name": "seeking",
+ "at": 2325
+ },
+ {
+ "name": "seeked",
+ "at": 2325
+ },
+ {
+ "name": "canplay",
+ "at": 2325
+ },
+ {
+ "name": "seeking",
+ "at": 2356
+ },
+ {
+ "name": "canplay",
+ "at": 2356
+ },
+ {
+ "name": "seeked",
+ "at": 2372
+ },
+ {
+ "name": "playing",
+ "at": 2681
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ }
+ ]
+ },
+ {
+ "label": "deferred",
+ "scope": "pure native media; one correction deferred with setTimeout(0); repeat-each 6",
+ "directory": "refactor/.cache/chapter05-native-deferred-report",
+ "report": {
+ "path": "refactor/.cache/chapter05-native-deferred-report/report.json",
+ "sha256": "6799b3148d90d93c52605050bec710e73b3ac72156b5203d7a92be6f84ecd927"
+ },
+ "stats": {
+ "startTime": "2026-09-14T17:44:21.225Z",
+ "duration": 20091.748,
+ "expected": 6,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "exitCode": 0,
+ "log": {
+ "path": "refactor/.cache/chapter05-native-deferred.log",
+ "sha256": "1e28f7211c03de999a7fad9dee31b4eabb88961a8ceb1c5c107880b32026e840"
+ },
+ "samples": [
+ {
+ "ordinal": 1,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:44:23.576Z",
+ "status": "passed",
+ "recordCount": 38,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.0117667,
+ "target": 3.0117667,
+ "corrections": 1,
+ "correctionMode": "deferred",
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 80
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 576
+ },
+ {
+ "name": "loadeddata",
+ "at": 576
+ },
+ {
+ "name": "canplay",
+ "at": 577
+ },
+ {
+ "name": "playing",
+ "at": 941
+ },
+ {
+ "name": "pause",
+ "at": 1505
+ },
+ {
+ "name": "seeking",
+ "at": 1545
+ },
+ {
+ "name": "canplay",
+ "at": 1545
+ },
+ {
+ "name": "seeked",
+ "at": 1552
+ },
+ {
+ "name": "loadstart",
+ "at": 2332
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2436
+ },
+ {
+ "name": "loadeddata",
+ "at": 2436
+ },
+ {
+ "name": "canplay",
+ "at": 2437
+ },
+ {
+ "name": "seeking",
+ "at": 2464
+ },
+ {
+ "name": "seeked",
+ "at": 2496
+ },
+ {
+ "name": "canplay",
+ "at": 2497
+ },
+ {
+ "name": "seeking",
+ "at": 2542
+ },
+ {
+ "name": "canplay",
+ "at": 2542
+ },
+ {
+ "name": "seeked",
+ "at": 2557
+ },
+ {
+ "name": "playing",
+ "at": 2674
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 2,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:44:23.574Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.0132269,
+ "target": 3.0122529,
+ "corrections": 1,
+ "correctionMode": "deferred",
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 87
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 583
+ },
+ {
+ "name": "loadeddata",
+ "at": 583
+ },
+ {
+ "name": "canplay",
+ "at": 583
+ },
+ {
+ "name": "playing",
+ "at": 947
+ },
+ {
+ "name": "pause",
+ "at": 1511
+ },
+ {
+ "name": "seeking",
+ "at": 1551
+ },
+ {
+ "name": "canplay",
+ "at": 1551
+ },
+ {
+ "name": "seeked",
+ "at": 1559
+ },
+ {
+ "name": "loadstart",
+ "at": 2350
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2435
+ },
+ {
+ "name": "loadeddata",
+ "at": 2436
+ },
+ {
+ "name": "canplay",
+ "at": 2436
+ },
+ {
+ "name": "seeking",
+ "at": 2455
+ },
+ {
+ "name": "seeked",
+ "at": 2478
+ },
+ {
+ "name": "canplay",
+ "at": 2487
+ },
+ {
+ "name": "seeking",
+ "at": 2502
+ },
+ {
+ "name": "seeked",
+ "at": 2502
+ },
+ {
+ "name": "canplay",
+ "at": 2518
+ },
+ {
+ "name": "playing",
+ "at": 2721
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 3,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:44:27.644Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.0110531,
+ "target": 3.009924,
+ "corrections": 1,
+ "correctionMode": "deferred",
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 77
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 529
+ },
+ {
+ "name": "loadeddata",
+ "at": 529
+ },
+ {
+ "name": "canplay",
+ "at": 529
+ },
+ {
+ "name": "playing",
+ "at": 914
+ },
+ {
+ "name": "pause",
+ "at": 1497
+ },
+ {
+ "name": "seeking",
+ "at": 1513
+ },
+ {
+ "name": "canplay",
+ "at": 1513
+ },
+ {
+ "name": "seeked",
+ "at": 1517
+ },
+ {
+ "name": "loadstart",
+ "at": 2088
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2325
+ },
+ {
+ "name": "loadeddata",
+ "at": 2325
+ },
+ {
+ "name": "canplay",
+ "at": 2325
+ },
+ {
+ "name": "seeking",
+ "at": 2351
+ },
+ {
+ "name": "seeked",
+ "at": 2353
+ },
+ {
+ "name": "canplay",
+ "at": 2366
+ },
+ {
+ "name": "seeking",
+ "at": 2382
+ },
+ {
+ "name": "seeked",
+ "at": 2382
+ },
+ {
+ "name": "canplay",
+ "at": 2383
+ },
+ {
+ "name": "playing",
+ "at": 2585
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 4,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:44:27.924Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.011053,
+ "target": 3.009918,
+ "corrections": 1,
+ "correctionMode": "deferred",
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 123
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 524
+ },
+ {
+ "name": "loadeddata",
+ "at": 524
+ },
+ {
+ "name": "canplay",
+ "at": 524
+ },
+ {
+ "name": "playing",
+ "at": 932
+ },
+ {
+ "name": "pause",
+ "at": 1576
+ },
+ {
+ "name": "seeking",
+ "at": 1602
+ },
+ {
+ "name": "canplay",
+ "at": 1603
+ },
+ {
+ "name": "seeked",
+ "at": 1607
+ },
+ {
+ "name": "loadstart",
+ "at": 2347
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2412
+ },
+ {
+ "name": "loadeddata",
+ "at": 2412
+ },
+ {
+ "name": "canplay",
+ "at": 2412
+ },
+ {
+ "name": "seeking",
+ "at": 2430
+ },
+ {
+ "name": "seeked",
+ "at": 2448
+ },
+ {
+ "name": "canplay",
+ "at": 2461
+ },
+ {
+ "name": "seeking",
+ "at": 2475
+ },
+ {
+ "name": "seeked",
+ "at": 2475
+ },
+ {
+ "name": "playing",
+ "at": 2691
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 5,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:44:31.784Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.0108145,
+ "target": 3.0096976,
+ "corrections": 1,
+ "correctionMode": "deferred",
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 79
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 539
+ },
+ {
+ "name": "loadeddata",
+ "at": 539
+ },
+ {
+ "name": "canplay",
+ "at": 539
+ },
+ {
+ "name": "playing",
+ "at": 934
+ },
+ {
+ "name": "pause",
+ "at": 1541
+ },
+ {
+ "name": "seeking",
+ "at": 1553
+ },
+ {
+ "name": "canplay",
+ "at": 1553
+ },
+ {
+ "name": "seeked",
+ "at": 1570
+ },
+ {
+ "name": "loadstart",
+ "at": 2143
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2366
+ },
+ {
+ "name": "loadeddata",
+ "at": 2366
+ },
+ {
+ "name": "canplay",
+ "at": 2366
+ },
+ {
+ "name": "seeking",
+ "at": 2393
+ },
+ {
+ "name": "seeked",
+ "at": 2393
+ },
+ {
+ "name": "canplay",
+ "at": 2409
+ },
+ {
+ "name": "seeking",
+ "at": 2424
+ },
+ {
+ "name": "seeked",
+ "at": 2424
+ },
+ {
+ "name": "canplay",
+ "at": 2424
+ },
+ {
+ "name": "playing",
+ "at": 2634
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 6,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "webkit",
+ "browser": "26.6",
+ "startTime": "2026-09-14T17:44:32.327Z",
+ "status": "passed",
+ "recordCount": 40,
+ "maxAccessMs": 1,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [
+ {
+ "at": 7304,
+ "gap": 5104
+ }
+ ],
+ "position": {
+ "time": 3.0097807,
+ "target": 3.0086361,
+ "corrections": 1,
+ "correctionMode": "deferred",
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 91
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 495
+ },
+ {
+ "name": "loadeddata",
+ "at": 495
+ },
+ {
+ "name": "canplay",
+ "at": 495
+ },
+ {
+ "name": "playing",
+ "at": 853
+ },
+ {
+ "name": "pause",
+ "at": 1427
+ },
+ {
+ "name": "seeking",
+ "at": 1442
+ },
+ {
+ "name": "canplay",
+ "at": 1442
+ },
+ {
+ "name": "seeked",
+ "at": 1446
+ },
+ {
+ "name": "loadstart",
+ "at": 2021
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 2250
+ },
+ {
+ "name": "loadeddata",
+ "at": 2251
+ },
+ {
+ "name": "canplay",
+ "at": 2251
+ },
+ {
+ "name": "seeking",
+ "at": 2273
+ },
+ {
+ "name": "seeked",
+ "at": 2281
+ },
+ {
+ "name": "canplay",
+ "at": 2289
+ },
+ {
+ "name": "seeking",
+ "at": 7304
+ },
+ {
+ "name": "seeked",
+ "at": 7304
+ },
+ {
+ "name": "playing",
+ "at": 7480
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ }
+ ]
+ },
+ {
+ "label": "engines",
+ "scope": "pure native media with direct correction enabled; Chromium and Firefox; one sample each",
+ "directory": "refactor/.cache/chapter05-native-engines-report",
+ "report": {
+ "path": "refactor/.cache/chapter05-native-engines-report/report.json",
+ "sha256": "8e42065b40584162932df5c3692c91abdb10c1a0dc77996d6efd3ebdf7433c6c"
+ },
+ "stats": {
+ "startTime": "2026-09-14T17:46:57.627Z",
+ "duration": 6283.360000000001,
+ "expected": 2,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "exitCode": 0,
+ "log": {
+ "path": "refactor/.cache/chapter05-native-engines.log",
+ "sha256": "34fe9c0d009e1ea4ce7def09cf0a8eeee2bca25c230c05e1032c022d6cc1a178"
+ },
+ "samples": [
+ {
+ "ordinal": 1,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "chromium",
+ "browser": "153.0.8010.12",
+ "startTime": "2026-09-14T17:47:00.068Z",
+ "status": "passed",
+ "recordCount": 36,
+ "maxAccessMs": 0.19999998807907104,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.008,
+ "target": 3.008,
+ "corrections": 0,
+ "correctionMode": "direct",
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 56.30000001192093
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 64.90000003576279
+ },
+ {
+ "name": "loadeddata",
+ "at": 64.90000003576279
+ },
+ {
+ "name": "canplay",
+ "at": 64.90000003576279
+ },
+ {
+ "name": "playing",
+ "at": 242.30000001192093
+ },
+ {
+ "name": "pause",
+ "at": 641.7000000476837
+ },
+ {
+ "name": "seeking",
+ "at": 641.8000000119209
+ },
+ {
+ "name": "seeked",
+ "at": 645.1000000238419
+ },
+ {
+ "name": "canplay",
+ "at": 645.1000000238419
+ },
+ {
+ "name": "loadstart",
+ "at": 792.3000000119209
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 796.7000000476837
+ },
+ {
+ "name": "loadeddata",
+ "at": 796.9000000357628
+ },
+ {
+ "name": "canplay",
+ "at": 796.9000000357628
+ },
+ {
+ "name": "seeking",
+ "at": 796.9000000357628
+ },
+ {
+ "name": "seeked",
+ "at": 805
+ },
+ {
+ "name": "canplay",
+ "at": 805.1000000238419
+ },
+ {
+ "name": "playing",
+ "at": 960
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ },
+ {
+ "ordinal": 2,
+ "title": "native paused video restores position after quality URL replacement without ArtPlayer",
+ "engine": "firefox",
+ "browser": "155.0",
+ "startTime": "2026-09-14T17:47:00.003Z",
+ "status": "passed",
+ "recordCount": 36,
+ "maxAccessMs": 0,
+ "accessesOver20ms": [],
+ "heartbeatGapsOver500ms": [],
+ "position": {
+ "time": 3.008,
+ "target": 3.008,
+ "corrections": 0,
+ "correctionMode": "direct",
+ "paused": true,
+ "error": null,
+ "artplayerLoaded": false
+ },
+ "nativeEvents": [
+ {
+ "name": "loadstart",
+ "at": 322
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 343
+ },
+ {
+ "name": "loadeddata",
+ "at": 348
+ },
+ {
+ "name": "canplay",
+ "at": 348
+ },
+ {
+ "name": "playing",
+ "at": 587
+ },
+ {
+ "name": "pause",
+ "at": 997
+ },
+ {
+ "name": "seeking",
+ "at": 1003
+ },
+ {
+ "name": "seeked",
+ "at": 1042
+ },
+ {
+ "name": "canplay",
+ "at": 1042
+ },
+ {
+ "name": "loadstart",
+ "at": 1164
+ },
+ {
+ "name": "loadedmetadata",
+ "at": 1171
+ },
+ {
+ "name": "loadeddata",
+ "at": 1175
+ },
+ {
+ "name": "canplay",
+ "at": 1175
+ },
+ {
+ "name": "seeking",
+ "at": 1175
+ },
+ {
+ "name": "seeked",
+ "at": 1213
+ },
+ {
+ "name": "canplay",
+ "at": 1213
+ },
+ {
+ "name": "playing",
+ "at": 1348
+ }
+ ],
+ "publicState": null,
+ "pageErrors": []
+ }
+ ]
+ }
+ ],
+ "conclusions": [
+ "Default tracing and trace-off fixed series each retain one failure; tracing is not a necessary trigger in these samples.",
+ "No monitored native media property access exceeded 20 ms, while page heartbeat gaps around 5 seconds appeared in passed and failed samples.",
+ "Unassisted native metadata restoration reset the position near zero in all six WebKit controls.",
+ "All six directly corrected native controls restored their position; two show a roughly 5-second heartbeat gap without ArtPlayer loaded.",
+ "Deferred correction also leaves a 5.104-second heartbeat gap; no setTimeout workaround was adopted.",
+ "Same native direct-control entry passes Chromium/Firefox once each."
+ ],
+ "limitations": [
+ "Property access instrumentation covers currentTime,duration,readyState,seeking,playbackRate,paused only; methods/layout/renderer/OS scheduling are not individually profiled.",
+ "Five-second gaps outside ArtPlayer do not prove the exact cause of every earlier ten-second timeout.",
+ "Each prospective series has a fixed repeat count and no failure retry; these are diagnostic samples, not statistical release certification.",
+ "Final helper adds a selector for the native page; correction and deferred control modes were added after their preceding preserved runs. No claim that final diagnostic source was identical across all controls.",
+ "Initial native failures retain their position assertion; not converted to expected passes or included in routine CI.",
+ "No production workaround, larger timeout, changed browser target, physical-device or remote CI acceptance."
+ ],
+ "defaultRegression": {
+ "report": "refactor/.cache/chapter05-timing-default-report/report.json",
+ "sha256": "b1d9ae3b47e9ff279f5315c74fe616a5fd87411ce44b0d4de1ee98f2febc8215",
+ "stats": {
+ "startTime": "2026-09-14T17:49:46.439Z",
+ "duration": 4778.524,
+ "expected": 1,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ },
+ "result": {
+ "scope": "installed",
+ "exitCode": 0,
+ "signal": null,
+ "args": [
+ "test",
+ "--config=playwright.installed.config.js",
+ "chapter-combinations.spec.js",
+ "--project=chromium",
+ "--workers=1",
+ "--grep=candidate core \\+ candidate chapter: quality switch"
+ ]
+ },
+ "diagnosticAttachmentAbsent": true,
+ "scope": "One Chromium installed candidate/core Chapter quality switch, with diagnostic flag disabled"
+ }
+}
diff --git a/refactor/changes/2026-09-15-PKG-CHAPTER-05-native-timing.md b/refactor/changes/2026-09-15-PKG-CHAPTER-05-native-timing.md
new file mode 100644
index 000000000..4365f586f
--- /dev/null
+++ b/refactor/changes/2026-09-15-PKG-CHAPTER-05-native-timing.md
@@ -0,0 +1,80 @@
+# PKG-CHAPTER-05 原生时钟与纠正对照
+
+进一步缩小 CHAPTER-TIMING-01 的范围,任务仍为 doing。没有修改核心或章节的
+生产代码,没有扩大测试超时。相似的五秒页面停顿已在未加载 ArtPlayer 的 video
+对照中出现;尚未确认底层原因,也不能据此宣称每次章节超时都与核心无关。
+
+## 诊断结构
+
+`test/browser/chapter-timing.js` 在显式开关下包装实际 video 实例的六个属性:
+currentTime、duration、readyState、seeking、playbackRate、paused。它转发真实
+原生 getter/setter 并记录前后页面时钟、返回值和异常,不替换媒体行为。最多保存
+10,000 条属性记录,同时保存不读取媒体属性的原生事件时间和 100 ms 心跳。
+本次所有样本均未达到记录上限。get/set 的记录本身会有开销,不能当作零干扰探针。
+
+章节组合默认不启用探针;设置 ARTPLAYER_CHAPTER_TIMING_DIAGNOSTICS=1 才安装。
+afterEach 先停止心跳并保存附件,随后保留原有状态与销毁流程。记录/属性包装和
+原生监听器属于该测试页面,随 Playwright 的页面销毁释放,不进入播放器包。
+
+`chapter-native-media.native.js` 使用不加载播放器脚本的独立 HTML,只放原生
+video 和播放/暂停/切换按钮;使用相同的 pattern.mp4、query 区分两个 URL,
+保持媒体字节不变。它提供 metadata 时恢复、seeked 时一次纠正和下一任务纠正
+三种显式诊断模式,不改变生产实现。默认 `.native.js` 不纳入 source spec。
+独立 `playwright.chapter-native.config.js` 复用原引擎/断言/超时,新增
+`yarn test:chapter-native` 入口和独立输出目录;没有新增依赖或更换运行时。
+
+## 固定序列结果
+
+Windows、Node 24.21.0、Yarn 1.22.22、WebKit 26.6;每一组先固定次数再运行,
+没有失败重试。既有安装组合使用 run-s8MkZT 已核验的 main,源码 HEAD 为
+a03e5acc500ceee13f79f438bd0533995f883eaa。
+
+| 组别 | 通过 / 失败 | 页面心跳间隔 >500 ms 的样本 |
+| --- | --- | --- |
+| 新旧核心/章节四组合 × 3,默认 trace | 11 / 1 | 4 / 12 |
+| 相同四组合 × 3,诊断时 trace=off | 11 / 1 | 7 / 12 |
+| 原生 video,仅 metadata 恢复 × 6 | 0 / 6 | 0 / 6 |
+| 原生 video,一次直接纠正 × 6 | 6 / 0 | 2 / 6 |
+| 原生 video,一次下一任务纠正 × 6 | 6 / 0 | 1 / 6 |
+| Chromium/Firefox 原生直接纠正入口各一次 | 2 / 0 | 0 / 2 |
+
+前两组被监测的原生属性访问最长分别为 1 ms、2 ms,但心跳出现约五秒空档,
+失败样本连续出现两段。关闭 trace 仍复现,说明录制不是必要条件。停顿发生于
+这些被采样的属性访问之外;未分别测量原生方法、布局、媒体线程、GPU、OS 调度,
+不能据此断言具体线程死锁或协议问题。
+
+没有纠正的原生对照六次都回到接近零的位置,保留原位置断言失败,不改成成功。
+加入一次纠正后六次均回到约三秒、保持暂停并能继续播放,且确认 window.Artplayer
+不存在;两次仍有约五秒心跳空档。下一任务纠正也有 5104 ms 空档,因此没有采用
+简单 setTimeout 作为核心修复。不能由小样本的数量差异推导某种模式更快或更可靠。
+
+原始结果、错误、每例属性最大耗时、页面事件、心跳、位置与输入摘要见
+[机器记录](../baselines/chapter-native-timing-validation.json)。此前的十秒读取
+失败及本次失败均保留;后续须定位这些停顿与具体失败的因果关系。
+
+## 复跑
+
+先按 scripts/browser-validation/README.md 准备六包并设置安装 map。
+
+```powershell
+$env:ARTPLAYER_CHAPTER_TIMING_DIAGNOSTICS = '1'
+yarn test:browser:installed chapter-combinations.spec.js --project=webkit --workers=2 --grep='quality switch' --repeat-each=3
+```
+
+`--trace=off` 只用于独立诊断对照,不修改正式 CI。完成进程后先归档该输出目录,
+再执行下一组。恢复默认组合测试前清除上述诊断环境变量。
+
+```powershell
+# 不带纠正:本次 Windows WebKit 因位置归零而失败的原生对照。
+$env:ARTPLAYER_NATIVE_QUALITY_CORRECTION = ''
+yarn test:chapter-native --project=webkit --workers=2 --repeat-each=6
+# 一次同步纠正,或改为 deferred 测试下一任务纠正。
+$env:ARTPLAYER_NATIVE_QUALITY_CORRECTION = '1'
+yarn test:chapter-native --project=webkit --workers=2 --repeat-each=6
+```
+
+每组都会写 refactor/.cache/chapter-native;先等待原进程终止,再核对目录归属并
+归档,不能覆盖之前的失败。源码/工具后续变化要另记输入和结果,不套用旧报告。
+scoped lint、严格工具链和计划检查通过;原生入口两引擎运行通过。这不是完整
+章节/真机/发布验收,PKG-CHAPTER-05 与 CHAPTER-TIMING-01 继续开放。
+撤销本检查点只移除诊断工具和文档,不涉及生产产物回退。未推送、部署或发布。
diff --git a/refactor/plan.md b/refactor/plan.md
index 173754a7d..f86070b65 100644
--- a/refactor/plan.md
+++ b/refactor/plan.md
@@ -539,7 +539,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) [记录](changes/2026-09-14-PKG-CHAPTER-05-timing.md) [记录](baselines/chapter-timing-observations.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) [记录](changes/2026-09-15-PKG-CHAPTER-05-native-timing.md) [记录](baselines/chapter-native-timing-validation.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 18ecb93e3..184872177 100644
--- a/refactor/progress.md
+++ b/refactor/progress.md
@@ -1,5 +1,13 @@
# 进度与证据
+## PKG-CHAPTER-05 原生时钟对照检查点
+
+默认 trace 与关闭 trace 的两组固定 WebKit 安装组合均为 11/12 通过,保留失败。
+被监测媒体属性访问均很短,页面却出现约五秒空档。不加载 ArtPlayer 的原生 video
+在一次位置纠正后 6/6 恢复,其中两次也有类似空档;延后纠正仍出现 5104 ms 空档,
+因此未改核心或扩大超时。新增显式探针、独立原生入口和[复跑记录](changes/2026-09-15-PKG-CHAPTER-05-native-timing.md)。
+具体底层原因仍未确认,05/CHAPTER-TIMING-01 保持开放;任务完成数仍为 196/262。
+
## CI-01 Ads 接入安装矩阵,完整回归保留章节失败
六包统一 installed 范围实测 426 项:425 通过、1 项 WebKit 章节切画质等待失败;
diff --git a/refactor/risks.json b/refactor/risks.json
index e97ec6aa9..c3dfcc8cc 100644
--- a/refactor/risks.json
+++ b/refactor/risks.json
@@ -2918,11 +2918,13 @@
"refactor/changes/2026-09-14-PKG-CHAPTER-05-timing.md",
"refactor/baselines/chapter-timing-observations.json",
"refactor/baselines/ci-ads-installed-validation.json",
- "refactor/changes/2026-09-15-CI-01-ads-installed.md"
+ "refactor/changes/2026-09-15-CI-01-ads-installed.md",
+ "refactor/changes/2026-09-15-PKG-CHAPTER-05-native-timing.md",
+ "refactor/baselines/chapter-native-timing-validation.json"
],
"compatibleResolution": "记录原生事件和绝对/相对时序,进一步区分媒体驱动耗时、夹具和核心源操作;未证明原因前不改核心、不扩大超时或重复到绿灯。",
"closureCriteria": "确认先前超时的来源并有对应可靠回归;后续单次通过不足以关闭。",
- "workspaceState": "Six-package installed run: WebKit candidate/core Chapter failed after restart while waiting for non-seeking readyState>=2. A trace evaluation took 9939.104 ms and returned false; initial seeked had already fired, followed later by another seeking/canplay. This is a different observed phase from the previous restart timeout; common root cause remains unconfirmed. Keep both failures and investigate without relaxing timeouts."
+ "workspaceState": "Six-package installed run: WebKit candidate/core Chapter failed after restart while waiting for non-seeking readyState>=2. A trace evaluation took 9939.104 ms and returned false; initial seeked had already fired, followed later by another seeking/canplay. This is a different observed phase from the previous restart timeout; common root cause remains unconfirmed. Keep both failures and investigate without relaxing timeouts. Fixed diagnostic runs with/without trace each retain one WebKit combination failure, while observed native getters/setters remain <=2 ms and page heartbeats show roughly five-second gaps. A no-ArtPlayer native video control restores with one correction yet reproduces a similar five-second gap; deferring correction still shows 5104 ms. Exact cause and relation to each earlier ten-second failure remain unconfirmed; no production timer workaround adopted."
},
{
"id": "DASH-SDK-01",
diff --git a/refactor/tasks.json b/refactor/tasks.json
index a0bad9dc6..31abacec9 100644
--- a/refactor/tasks.json
+++ b/refactor/tasks.json
@@ -1447,7 +1447,9 @@
"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"
+ "baselines/chapter-timing-observations.json",
+ "changes/2026-09-15-PKG-CHAPTER-05-native-timing.md",
+ "baselines/chapter-native-timing-validation.json"
]
},
{
diff --git a/test/browser/chapter-combinations.spec.js b/test/browser/chapter-combinations.spec.js
index 3bffca5a3..e89cffcfa 100644
--- a/test/browser/chapter-combinations.spec.js
+++ b/test/browser/chapter-combinations.spec.js
@@ -1,5 +1,7 @@
+import process from 'node:process'
import { devices } from '@playwright/test'
import { hoverProgress } from './chapter-hover.ts'
+import { installChapterTiming, readChapterTiming } from './chapter-timing.js'
import { expect, test } from './fixtures.js'
async function openChapter(page, core, chapter) {
@@ -35,6 +37,8 @@ async function openChapter(page, core, chapter) {
})
await expect.poll(() => page.evaluate(() => window.art.isReady)).toBe(true)
await expect(page.locator('.art-chapter')).toHaveCount(3)
+ if (process.env.ARTPLAYER_CHAPTER_TIMING_DIAGNOSTICS === '1')
+ await installChapterTiming(page)
}
async function hoverChapter(page, percentage, text) {
@@ -80,6 +84,8 @@ async function waitForChapterRestart(page, testInfo) {
}
test.afterEach(async ({ page }, testInfo) => {
+ if (process.env.ARTPLAYER_CHAPTER_TIMING_DIAGNOSTICS === '1')
+ await readChapterTiming(page, testInfo)
const state = await page.evaluate(() => ({
at: performance.now(),
timeOrigin: performance.timeOrigin,
diff --git a/test/browser/chapter-native-media.native.js b/test/browser/chapter-native-media.native.js
new file mode 100644
index 000000000..e19c942c0
--- /dev/null
+++ b/test/browser/chapter-native-media.native.js
@@ -0,0 +1,81 @@
+import process from 'node:process'
+import { installChapterTiming, readChapterTiming } from './chapter-timing.js'
+import { expect, test } from './fixtures.js'
+
+test('native paused video restores position after quality URL replacement without ArtPlayer', async ({ page }, testInfo) => {
+ await page.route('**/chapter-native.html', route => route.fulfill({ contentType: 'text/html', body: '' }))
+ await page.goto('/chapter-native.html')
+ await installChapterTiming(page, '#media')
+ await page.evaluate((correctionMode) => {
+ const video = document.querySelector('#media')
+ video.muted = true
+ window.nativeRestarts = []
+ document.querySelector('#play').onclick = () => video.play()
+ document.querySelector('#pause').onclick = () => video.pause()
+ document.querySelector('#quality').onclick = () => {
+ const time = video.currentTime
+ window.nativeRestoreTarget = time
+ window.nativeCorrections = 0
+ window.nativeCorrectionMode = correctionMode
+ if (correctionMode !== 'none') {
+ video.addEventListener('seeked', () => {
+ if (!window.nativeCorrections && Math.abs(video.currentTime - time) > 0.05) {
+ window.nativeCorrections++
+ if (correctionMode === 'deferred') {
+ setTimeout(() => {
+ video.currentTime = time
+ }, 0)
+ }
+ else {
+ video.currentTime = time
+ }
+ }
+ })
+ }
+ video.addEventListener('loadedmetadata', () => {
+ video.currentTime = time
+ }, { once: true })
+ video.addEventListener('loadeddata', () => {
+ window.nativeRestarts.push(video.currentSrc)
+ }, { once: true })
+ video.src = '/test/pattern.mp4?quality=A'
+ }
+ video.src = '/test/pattern.mp4?quality=B'
+ }, process.env.ARTPLAYER_NATIVE_QUALITY_CORRECTION === 'deferred' ? 'deferred' : process.env.ARTPLAYER_NATIVE_QUALITY_CORRECTION === '1' ? 'direct' : 'none')
+ try {
+ await expect.poll(() => page.evaluate(() => document.querySelector('#media').readyState >= 2)).toBe(true)
+ await page.locator('#play').click()
+ await expect.poll(() => page.evaluate(() => document.querySelector('#media').currentTime)).toBeGreaterThan(0.2)
+ await page.locator('#pause').click()
+ await page.evaluate(() => {
+ document.querySelector('#media').currentTime = 3.008
+ })
+ await expect.poll(() => page.evaluate(() => !document.querySelector('#media').seeking)).toBe(true)
+ await page.locator('#quality').click()
+ await expect.poll(() => page.evaluate(() => window.nativeRestarts.length)).toBe(1)
+ await expect.poll(() => page.evaluate(() => {
+ const video = document.querySelector('#media')
+ return !video.seeking && video.readyState >= 2
+ })).toBe(true)
+ const state = await page.evaluate(() => {
+ const video = document.querySelector('#media')
+ return { time: video.currentTime, target: window.nativeRestoreTarget, corrections: window.nativeCorrections, correctionMode: window.nativeCorrectionMode, paused: video.paused, error: video.error?.code || null, artplayerLoaded: typeof window.Artplayer !== 'undefined' }
+ })
+ await testInfo.attach('native-quality-position', { contentType: 'application/json', body: JSON.stringify(state) })
+ expect(state.artplayerLoaded).toBe(false)
+ expect(state.time).toBeCloseTo(state.target, 1)
+ expect(state.paused).toBe(true)
+ expect(state.error).toBeNull()
+ await page.locator('#play').click()
+ await expect.poll(() => page.evaluate(() => document.querySelector('#media').currentTime)).toBeGreaterThan(state.time + 0.2)
+ }
+ finally {
+ await readChapterTiming(page, testInfo)
+ await page.evaluate(() => {
+ const video = document.querySelector('#media')
+ video.pause()
+ video.removeAttribute('src')
+ video.load()
+ })
+ }
+})
diff --git a/test/browser/chapter-timing.js b/test/browser/chapter-timing.js
new file mode 100644
index 000000000..ccd5f500f
--- /dev/null
+++ b/test/browser/chapter-timing.js
@@ -0,0 +1,56 @@
+export async function installChapterTiming(page, selector) {
+ await page.evaluate((selector) => {
+ const video = selector ? document.querySelector(selector) : window.art.video
+ const records = []
+ let sequence = 0
+ const record = (value) => {
+ if (records.length < 10000)
+ records.push({ at: performance.now(), ...value })
+ }
+ for (const name of ['currentTime', 'duration', 'readyState', 'seeking', 'playbackRate', 'paused']) {
+ const descriptor = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, name)
+ if (!descriptor?.get)
+ throw new Error(`Missing native media descriptor: ${name}`)
+ const access = (kind, callback, value) => {
+ const id = sequence++
+ const start = performance.now()
+ record({ id, kind, name, phase: 'before', value })
+ try {
+ const result = callback()
+ record({ id, kind, name, phase: 'after', value: result, elapsed: performance.now() - start })
+ return result
+ }
+ catch (error) {
+ record({ id, kind, name, phase: 'error', error: String(error), elapsed: performance.now() - start })
+ throw error
+ }
+ }
+ Object.defineProperty(video, name, {
+ configurable: true,
+ get() { return access('get', () => descriptor.get.call(this)) },
+ ...(descriptor.set ? { set(value) { access('set', () => descriptor.set.call(this, value), value) } } : {}),
+ })
+ }
+ const events = []
+ for (const name of ['loadstart', 'loadedmetadata', 'loadeddata', 'canplay', 'seeking', 'seeked', 'playing', 'pause', 'error']) {
+ video.addEventListener(name, () => events.push({ name, at: performance.now() }))
+ }
+ const heartbeat = []
+ let previous = performance.now()
+ const timer = setInterval(() => {
+ const at = performance.now()
+ heartbeat.push({ at, gap: at - previous })
+ previous = at
+ }, 100)
+ window.chapterTiming = { records, events, heartbeat, started: previous, timeOrigin: performance.timeOrigin }
+ window.stopChapterTiming = () => clearInterval(timer)
+ }, selector)
+}
+
+export async function readChapterTiming(page, testInfo) {
+ const observation = await page.evaluate(() => {
+ window.stopChapterTiming?.()
+ return window.chapterTiming || null
+ }).catch(error => ({ error: error.message }))
+ await testInfo.attach('chapter-native-access-timing', { contentType: 'application/json', body: JSON.stringify(observation) })
+}