From 2a380679117b02499ff3a131cb449e1eda007cb2 Mon Sep 17 00:00:00 2001 From: Harvey Zhao Date: Tue, 15 Sep 2026 15:15:25 +0800 Subject: [PATCH] test(hls): [PKG-HLS-SDK-01] compare SDK sequences and capture pre-destroy crash --- .../ARCHITECTURE.md | 8 + .../hls-sdk-sequence-validation.json | 4183 +++++++++++++++++ .../2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md | 74 + refactor/plan.md | 2 +- refactor/progress.md | 13 + refactor/risk-table.md | 2 +- refactor/risks.json | 8 +- refactor/scripts/hls-sdk-diagnostic.mjs | 52 +- refactor/tasks.json | 4 +- 9 files changed, 4327 insertions(+), 19 deletions(-) create mode 100644 refactor/baselines/hls-sdk-sequence-validation.json create mode 100644 refactor/changes/2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md diff --git a/packages/artplayer-plugin-hls-control/ARCHITECTURE.md b/packages/artplayer-plugin-hls-control/ARCHITECTURE.md index 402d0d70b..10d74e0a6 100644 --- a/packages/artplayer-plugin-hls-control/ARCHITECTURE.md +++ b/packages/artplayer-plugin-hls-control/ARCHITECTURE.md @@ -145,6 +145,14 @@ later control passes. Diagnostic private SDK fields are read-only, version-speci never read load-level getters after SDK destruction. See the 2026-09-15 switch-boundary checkpoint in refactor for the reproduced empty-buffer failure and remaining attribution. +`--sequence 1.5.17,1.5.17,1.7.2` runs frozen SDK versions in separate contexts within +one Firefox browser instance. It cannot be combined with explicit `--version` or +`--iterations`; every result records and checks its actual SDK version. A first-case +direct-video 1.5.17 run also reported a page crash while awaiting the high-group +transition, before any explicit destroy. Keep playback and teardown evidence distinct; +neither the previous SDK nor ArtPlayer is a necessary precondition for that occurrence. +See the 2026-09-15 SDK sequence checkpoint for exact scope and remaining native diagnostics. + ## Package file boundary The package .npmignore excludes src and tsconfig.json. The implementation config diff --git a/refactor/baselines/hls-sdk-sequence-validation.json b/refactor/baselines/hls-sdk-sequence-validation.json new file mode 100644 index 000000000..b261bdce6 --- /dev/null +++ b/refactor/baselines/hls-sdk-sequence-validation.json @@ -0,0 +1,4183 @@ +{ + "schemaVersion": 1, + "task": "PKG-HLS-SDK-01", + "status": "partial-crash-before-teardown", + "sourceCommit": "ca967ea1a2faeab3f5e23c612af31b41d22fd7f8", + "capturedAt": "2026-09-15T07:13:27.407Z", + "sourceHashesLF": { + "refactor/scripts/hls-sdk-diagnostic.mjs": "31f6ba6960b854f88ef4ea0cbbbc309076e8d47b115f9cd633b29d827e2c5b0d" + }, + "runs": [ + { + "name": "direct", + "log": { + "file": "refactor/.cache/hls-sequence-direct.log", + "sha256": "daf0008cdc21e6cdbfb648fd4e6c16937f40cdbf41ed5070904f6644f31b8ee3", + "bytes": 474 + }, + "report": { + "file": "refactor/.cache/hls-direct-2mQWwg/report.json", + "sha256": "d1fdde4f974a5d1cc13b3a439595a73c8265fad2025fd96e52490928d9035bc3", + "bytes": 239494 + }, + "iterations": 3, + "sequence": [ + "1.5.17", + "1.5.17", + "1.7.2" + ], + "transport": "http", + "teardown": "reset-first", + "worker": true, + "host": "direct", + "plugin": false, + "sdkLogs": false, + "workerObserver": false, + "captureBeforeDestroy": true, + "switchBoundary": "selected", + "prefill": false, + "runnerSHA256": "5d499426b550a1a1d33c60e7ef2db7da9de77d4618132b8a2001bf70d17ab035", + "observerSHA256": "8ecd23a41293b7b6b065a077ba352fff0007ba07f41ce5f84943ac5f546a1cc1", + "browserVersion": "155.0", + "releases": { + "inputSHA256": "f03244ee1cb90e647f8319b275dc207ac6b44b4b703fe3fd398b49d236112151" + }, + "inputs": { + "inputSHA256": "b005703c17b80ee97b65ad445e612d9b0b9006719ddf9bde20acc9988da80a74" + }, + "results": [ + { + "iteration": 0, + "version": "1.5.17", + "status": "failed", + "errors": [ + "page crashed" + ], + "requests": [], + "phase": "context-close", + "crashes": [ + { + "phase": "high-group", + "at": "2026-09-15T07:05:48.727Z" + } + ], + "failure": "page.evaluate: Target crashed ", + "failurePhase": "high-group", + "state": { + "error": "page.evaluate: Target page, context or browser has been closed", + "eventCounts": {} + }, + "trace": { + "file": "refactor/.cache/hls-direct-2mQWwg/0.zip", + "sha256": "8ef094f4f2a4fbe6691a91d81fb21805290b05223c48ca849b4fd71d21ab0c11", + "bytes": 665140 + } + }, + { + "iteration": 1, + "version": "1.5.17", + "status": "passed", + "errors": [], + "requests": [ + { + "url": "http://127.0.0.1:1355/low-05.mpegts", + "error": { + "errorText": "NS_BINDING_ABORTED" + } + }, + { + "url": "http://127.0.0.1:1355/english-02.mpegts", + "error": { + "errorText": "NS_BINDING_ABORTED" + } + } + ], + "phase": "context-close", + "crashes": [], + "highPlayback": { + "start": { + "time": 1.306127, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 32, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 1.709507, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 41, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "lowPlayback": { + "start": { + "time": 2.623316, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 62, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 2.989084, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 71, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "beforeDestroy": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 2.989084, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 71, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "sdk": { + "version": "1.5.17", + "workerEnabled": true, + "level": 0, + "audioTrack": 0 + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "AUDIO_TRACK_SWITCHED": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 46, + "canplay": 1, + "LEVEL_SWITCHED": 3, + "playing": 1, + "BUFFER_FLUSHED": 6, + "high-group:requested": 1 + }, + "lastEvents": [ + { + "at": 2025, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 3, + "level": 0 + } + }, + "media": { + "time": 1.750162, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 8 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2027, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.750162, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2031, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.750162, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2034, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.750162, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2043, + "event": "LEVEL_SWITCHED", + "data": { + "level": 0 + }, + "media": { + "time": 1.792185, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 43, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + } + ] + }, + "state": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + }, + "sdk": { + "version": "1.5.17", + "level": -1, + "audioTrack": 0, + "mainState": "STOPPED" + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "AUDIO_TRACK_SWITCHED": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 46, + "canplay": 1, + "LEVEL_SWITCHED": 3, + "playing": 1, + "BUFFER_FLUSHED": 6, + "high-group:requested": 1, + "destroy:start": 1, + "destroy:end": 1 + }, + "lastEvents": [ + { + "at": 2031, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.750162, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2034, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.750162, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2043, + "event": "LEVEL_SWITCHED", + "data": { + "level": 0 + }, + "media": { + "time": 1.792185, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 43, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3274, + "event": "destroy:start", + "data": "reset-first", + "media": { + "time": 3.029423, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 71, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3276, + "event": "destroy:end", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + } + } + ] + }, + "trace": { + "file": "refactor/.cache/hls-direct-2mQWwg/1.zip", + "sha256": "4b1d2dce574169029dc15305b64356c83971de4c6c5ae24d53509a311f8245dd", + "bytes": 1906783 + } + }, + { + "iteration": 2, + "version": "1.7.2", + "status": "passed", + "errors": [], + "requests": [], + "phase": "context-close", + "crashes": [], + "highPlayback": { + "start": { + "time": 1.355957, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 31, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 1.763449, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 40, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "lowPlayback": { + "start": { + "time": 2.777128, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 65, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 3.18387, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 74, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "beforeDestroy": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 3.18387, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 75, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "sdk": { + "version": "1.7.2", + "workerEnabled": true, + "level": 0, + "audioTrack": 0 + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 51, + "canplay": 2, + "LEVEL_SWITCHED": 3, + "seeking": 1, + "waiting": 1, + "seeked": 1, + "playing": 1, + "BUFFER_FLUSHED": 9, + "AUDIO_TRACK_SWITCHED": 5, + "ERROR": 3, + "high-group:requested": 1 + }, + "lastEvents": [ + { + "at": 2176, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.924573, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 45, + "buffered": [ + [ + 2.005333, + 10 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2177, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.964899, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 45, + "buffered": [ + [ + 2.005333, + 10 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2180, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.964899, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 45, + "buffered": [ + [ + 2.005333, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2181, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.964899, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 45, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2184, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.964899, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 45, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + } + ] + }, + "state": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + }, + "sdk": { + "version": "1.7.2", + "level": -1, + "audioTrack": 0, + "mainState": "STOPPED", + "audioState": "STOPPED" + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 51, + "canplay": 2, + "LEVEL_SWITCHED": 3, + "seeking": 1, + "waiting": 1, + "seeked": 1, + "playing": 1, + "BUFFER_FLUSHED": 9, + "AUDIO_TRACK_SWITCHED": 5, + "ERROR": 3, + "high-group:requested": 1, + "destroy:start": 1, + "destroy:end": 1 + }, + "lastEvents": [ + { + "at": 2180, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.964899, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 45, + "buffered": [ + [ + 2.005333, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2181, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.964899, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 45, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2184, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.964899, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 45, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3465, + "event": "destroy:start", + "data": "reset-first", + "media": { + "time": 3.224096, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 76, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3467, + "event": "destroy:end", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + } + } + ] + }, + "trace": { + "file": "refactor/.cache/hls-direct-2mQWwg/2.zip", + "sha256": "e7a8c043cc7995663e596f480b0a0206b895a8084d1a5c425672ec62480791d6", + "bytes": 1976703 + } + } + ] + }, + { + "name": "published", + "log": { + "file": "refactor/.cache/hls-sequence-published.log", + "sha256": "744cb23a8600b7fb0a01fa73bb9d4578ade6367cdd88b470791957cef3e4c273", + "bytes": 529 + }, + "report": { + "file": "refactor/.cache/hls-direct-I1uJkd/report.json", + "sha256": "770a02baf815fdff4472b8691fed3b7bcaa4a2eda8b481fe455829ab6a8ea31a", + "bytes": 386621 + }, + "iterations": 3, + "sequence": [ + "1.5.17", + "1.5.17", + "1.7.2" + ], + "transport": "route", + "teardown": "reset-first", + "worker": true, + "host": "published", + "plugin": true, + "sdkLogs": false, + "workerObserver": true, + "captureBeforeDestroy": true, + "switchBoundary": "selected", + "prefill": false, + "runnerSHA256": "5d499426b550a1a1d33c60e7ef2db7da9de77d4618132b8a2001bf70d17ab035", + "observerSHA256": "8ecd23a41293b7b6b065a077ba352fff0007ba07f41ce5f84943ac5f546a1cc1", + "browserVersion": "155.0", + "releases": { + "inputSHA256": "f03244ee1cb90e647f8319b275dc207ac6b44b4b703fe3fd398b49d236112151" + }, + "inputs": { + "inputSHA256": "4b1d0626aec00349d173e24cd652414ac04f82e37f5465ae5890400b0b18d9a2" + }, + "results": [ + { + "iteration": 0, + "version": "1.5.17", + "status": "passed", + "errors": [], + "requests": [], + "phase": "context-close", + "crashes": [], + "highPlayback": { + "start": { + "time": 1.375243, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 31, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 1.792174, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 41, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "lowPlayback": { + "start": { + "time": 2.87577, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 66, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 3.282584, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 75, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "beforeDestroy": { + "coreLoaded": "function", + "pluginLoaded": "function", + "media": { + "time": 3.282584, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 76, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "sdk": { + "version": "1.5.17", + "workerEnabled": true, + "level": 0, + "audioTrack": 0 + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "AUDIO_TRACK_SWITCHED": 6, + "loadedmetadata": 1, + "FRAG_BUFFERED": 46, + "canplay": 1, + "LEVEL_SWITCHED": 3, + "playing": 1, + "BUFFER_FLUSHED": 6, + "high-group:requested": 1 + }, + "lastEvents": [ + { + "at": 2662, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.998997, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 6.016 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2663, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 3, + "level": 0 + } + }, + "media": { + "time": 1.998997, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 8 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2667, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.998997, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2670, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.998997, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2672, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.998997, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + } + ] + }, + "state": { + "coreLoaded": "function", + "pluginLoaded": "function", + "workers": [ + { + "url": "blob:http://127.0.0.1:6629/0c2e1c17-ed31-46fb-9784-1a2443291050", + "messages": { + "init": 1, + "workerLog": 39, + "transmuxComplete": 48, + "flush": 24 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/b5e46f90-6514-4369-9e18-effacdae4302", + "messages": { + "init": 1, + "workerLog": 6, + "transmuxComplete": 2, + "flush": 1 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/e30e68a8-2ded-4e82-9b75-4dbccfce5f88", + "messages": { + "init": 1, + "workerLog": 11, + "transmuxComplete": 12, + "flush": 6 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/e478e730-a9d7-473b-a4a4-00137832e867", + "messages": { + "init": 1, + "workerLog": 13, + "transmuxComplete": 6, + "flush": 3 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/ff694622-abc8-490c-8bb9-e5938ec4917c", + "messages": { + "init": 1, + "workerLog": 17, + "transmuxComplete": 14, + "flush": 7 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/20d53d36-4c65-4ebc-9b7a-7af11b835959", + "messages": { + "init": 1, + "workerLog": 11, + "transmuxComplete": 12, + "flush": 6 + }, + "errors": [], + "terminated": 1 + } + ], + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + }, + "sdk": { + "version": "1.5.17", + "level": -1, + "audioTrack": 0, + "mainState": "STOPPED" + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "AUDIO_TRACK_SWITCHED": 6, + "loadedmetadata": 1, + "FRAG_BUFFERED": 46, + "canplay": 1, + "LEVEL_SWITCHED": 3, + "playing": 1, + "BUFFER_FLUSHED": 6, + "high-group:requested": 1, + "destroy:start": 1, + "destroy:end": 1 + }, + "lastEvents": [ + { + "at": 2667, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.998997, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2670, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.998997, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2672, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.998997, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3974, + "event": "destroy:start", + "data": "reset-first", + "media": { + "time": 3.323042, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 76, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3976, + "event": "destroy:end", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + } + } + ] + }, + "trace": { + "file": "refactor/.cache/hls-direct-I1uJkd/0.zip", + "sha256": "0f1bdfa6dda2a5645ddce97a67236d3bcbedf5c33730547dd05a996026354a40", + "bytes": 3122684 + } + }, + { + "iteration": 1, + "version": "1.5.17", + "status": "passed", + "errors": [], + "requests": [ + { + "url": "http://127.0.0.1:6629/french-02.mpegts", + "error": { + "errorText": "NS_BINDING_ABORTED" + } + } + ], + "phase": "context-close", + "crashes": [], + "highPlayback": { + "start": { + "time": 1.333542, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 30, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 1.711192, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 39, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "lowPlayback": { + "start": { + "time": 2.792077, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 65, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 3.159912, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 74, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "beforeDestroy": { + "coreLoaded": "function", + "pluginLoaded": "function", + "media": { + "time": 3.159912, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 74, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "sdk": { + "version": "1.5.17", + "workerEnabled": true, + "level": 0, + "audioTrack": 0 + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "AUDIO_TRACK_SWITCHED": 6, + "loadedmetadata": 1, + "FRAG_BUFFERED": 50, + "canplay": 1, + "LEVEL_SWITCHED": 3, + "playing": 1, + "BUFFER_FLUSHED": 6, + "high-group:requested": 1 + }, + "lastEvents": [ + { + "at": 2278, + "event": "LEVEL_SWITCHED", + "data": { + "level": 0 + }, + "media": { + "time": 2.000438, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 6.016 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2288, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 3, + "level": 0 + } + }, + "media": { + "time": 2.000438, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 8 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2297, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 2.000438, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2302, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 2.000438, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2305, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 2.000438, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + } + ] + }, + "state": { + "coreLoaded": "function", + "pluginLoaded": "function", + "workers": [ + { + "url": "blob:http://127.0.0.1:6629/c7fa9d2f-8097-454c-949c-fbc745dbd7c5", + "messages": { + "init": 1, + "workerLog": 38, + "transmuxComplete": 46, + "flush": 23 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/8517c5a9-441d-437c-9913-d219d081fadd", + "messages": { + "init": 1, + "workerLog": 6, + "transmuxComplete": 2, + "flush": 1 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/4da66fbb-e017-483c-8832-c082998c3cbd", + "messages": { + "init": 1, + "workerLog": 11, + "transmuxComplete": 12, + "flush": 6 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/571e5b80-2c2b-4db3-a49a-0119560e2554", + "messages": { + "init": 1, + "workerLog": 13, + "transmuxComplete": 6, + "flush": 3 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/00cfbbf9-dbf2-4075-ace3-67283601b32d", + "messages": { + "init": 1, + "workerLog": 22, + "transmuxComplete": 24, + "flush": 12 + }, + "errors": [], + "terminated": 1 + }, + { + "url": "blob:http://127.0.0.1:6629/160bb97a-8d83-4112-a979-d722c6f12211", + "messages": { + "init": 1, + "workerLog": 11, + "transmuxComplete": 12, + "flush": 6 + }, + "errors": [], + "terminated": 1 + } + ], + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + }, + "sdk": { + "version": "1.5.17", + "level": -1, + "audioTrack": 0, + "mainState": "STOPPED" + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "AUDIO_TRACK_SWITCHED": 6, + "loadedmetadata": 1, + "FRAG_BUFFERED": 50, + "canplay": 1, + "LEVEL_SWITCHED": 3, + "playing": 1, + "BUFFER_FLUSHED": 6, + "high-group:requested": 1, + "destroy:start": 1, + "destroy:end": 1 + }, + "lastEvents": [ + { + "at": 2297, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 2.000438, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2302, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 2.000438, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2305, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 2.000438, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 46, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3501, + "event": "destroy:start", + "data": "reset-first", + "media": { + "time": 3.200552, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 75, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3502, + "event": "destroy:end", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + } + } + ] + }, + "trace": { + "file": "refactor/.cache/hls-direct-I1uJkd/1.zip", + "sha256": "8565ce4caa5922b57bac3c56ea2822579f6d22359e400bbfc6564f4fdb0215d8", + "bytes": 3109608 + } + }, + { + "iteration": 2, + "version": "1.7.2", + "status": "passed", + "errors": [], + "requests": [ + { + "url": "http://127.0.0.1:6629/english-01.mpegts", + "error": { + "errorText": "NS_BINDING_ABORTED" + } + }, + { + "url": "http://127.0.0.1:6629/low-03.mpegts", + "error": { + "errorText": "NS_BINDING_ABORTED" + } + } + ], + "phase": "context-close", + "crashes": [], + "highPlayback": { + "start": { + "time": 0.86939, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 20, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 1.232966, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 29, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "lowPlayback": { + "start": { + "time": 2.301668, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 53, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 2.70589, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 63, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "beforeDestroy": { + "coreLoaded": "function", + "pluginLoaded": "function", + "media": { + "time": 2.70589, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 63, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "sdk": { + "version": "1.7.2", + "workerEnabled": true, + "level": 0, + "audioTrack": 0 + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 53, + "canplay": 2, + "LEVEL_SWITCHED": 3, + "playing": 2, + "seeking": 1, + "waiting": 1, + "seeked": 1, + "BUFFER_FLUSHED": 9, + "AUDIO_TRACK_SWITCHED": 5, + "ERROR": 3, + "high-group:requested": 1 + }, + "lastEvents": [ + { + "at": 1698, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.39453, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 33, + "buffered": [ + [ + 0, + 8 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 1700, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.434644, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 33, + "buffered": [ + [ + 0, + 10 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 1703, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.434644, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 33, + "buffered": [ + [ + 0, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 1704, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.434644, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 33, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 1709, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.434644, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 33, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + } + ] + }, + "state": { + "coreLoaded": "function", + "pluginLoaded": "function", + "workers": [ + { + "url": "blob:http://127.0.0.1:6629/9eac0ed3-df30-4ffa-ad50-ae381e466d18", + "messages": { + "init": 6, + "workerLog": 97, + "transmuxComplete": 106, + "flush": 53 + }, + "errors": [], + "terminated": 1 + } + ], + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + }, + "sdk": { + "version": "1.7.2", + "level": -1, + "audioTrack": 0, + "mainState": "STOPPED", + "audioState": "STOPPED" + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 53, + "canplay": 2, + "LEVEL_SWITCHED": 3, + "playing": 2, + "seeking": 1, + "waiting": 1, + "seeked": 1, + "BUFFER_FLUSHED": 9, + "AUDIO_TRACK_SWITCHED": 5, + "ERROR": 3, + "high-group:requested": 1, + "destroy:start": 1, + "destroy:end": 1 + }, + "lastEvents": [ + { + "at": 1703, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.434644, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 33, + "buffered": [ + [ + 0, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 1704, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.434644, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 33, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 1709, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.434644, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 33, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3008, + "event": "destroy:start", + "data": "reset-first", + "media": { + "time": 2.70589, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 63, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3010, + "event": "destroy:end", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + } + } + ] + }, + "trace": { + "file": "refactor/.cache/hls-direct-I1uJkd/2.zip", + "sha256": "543b004e646e0165b6da9ccc0857152b1f703429233d9dd5e5f223f8c01132dd", + "bytes": 2890807 + } + } + ] + }, + { + "name": "reverse", + "log": { + "file": "refactor/.cache/hls-sequence-reverse.log", + "sha256": "33a9a67d2c49adab0de5fa467cd7ddddcf1a5e5131c483929a4dfe8845469e62", + "bytes": 377 + }, + "report": { + "file": "refactor/.cache/hls-direct-RimrJ6/report.json", + "sha256": "2ac17d16b889e4a9474756813dedc94b21424e17da025d779a8cee74577e0160", + "bytes": 233807 + }, + "iterations": 2, + "sequence": [ + "1.7.2", + "1.5.17" + ], + "transport": "http", + "teardown": "reset-first", + "worker": true, + "host": "direct", + "plugin": false, + "sdkLogs": false, + "workerObserver": false, + "captureBeforeDestroy": true, + "switchBoundary": "selected", + "prefill": false, + "runnerSHA256": "5d499426b550a1a1d33c60e7ef2db7da9de77d4618132b8a2001bf70d17ab035", + "observerSHA256": "8ecd23a41293b7b6b065a077ba352fff0007ba07f41ce5f84943ac5f546a1cc1", + "browserVersion": "155.0", + "releases": { + "inputSHA256": "a53b7a201b8c97668fc2ee77fd453e38df0c8fbaccc74f8160fa6b90133093e4" + }, + "inputs": { + "inputSHA256": "9018c51bdc7aef8a77fa7a6bc78b8e2b656950aafec1f70ba531117538966b74" + }, + "results": [ + { + "iteration": 0, + "version": "1.7.2", + "status": "passed", + "errors": [], + "requests": [], + "phase": "context-close", + "crashes": [], + "highPlayback": { + "start": { + "time": 1.349929, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 31, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 1.753681, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 41, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "lowPlayback": { + "start": { + "time": 2.782357, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 65, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 3.18604, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 74, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "beforeDestroy": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 3.18604, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 74, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "sdk": { + "version": "1.7.2", + "workerEnabled": true, + "level": 0, + "audioTrack": 0 + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 51, + "canplay": 2, + "LEVEL_SWITCHED": 3, + "seeking": 1, + "seeked": 1, + "playing": 1, + "BUFFER_FLUSHED": 10, + "AUDIO_TRACK_SWITCHED": 5, + "high-group:requested": 1, + "ERROR": 1 + }, + "lastEvents": [ + { + "at": 2504, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.999272, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 47, + "buffered": [ + [ + 2.005333, + 8 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2507, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.999272, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 47, + "buffered": [ + [ + 2.005333, + 10 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2516, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 2.042115, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 48, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2516, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 2.042115, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 48, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2520, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 2.042115, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 48, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + } + ] + }, + "state": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + }, + "sdk": { + "version": "1.7.2", + "level": -1, + "audioTrack": 0, + "mainState": "STOPPED", + "audioState": "STOPPED" + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 51, + "canplay": 2, + "LEVEL_SWITCHED": 3, + "seeking": 1, + "seeked": 1, + "playing": 1, + "BUFFER_FLUSHED": 10, + "AUDIO_TRACK_SWITCHED": 5, + "high-group:requested": 1, + "ERROR": 1, + "destroy:start": 1, + "destroy:end": 1 + }, + "lastEvents": [ + { + "at": 2516, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 2.042115, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 48, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2516, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 2.042115, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 48, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2520, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 2.042115, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 48, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3689, + "event": "destroy:start", + "data": "reset-first", + "media": { + "time": 3.18604, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 75, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3690, + "event": "destroy:end", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + } + } + ] + }, + "trace": { + "file": "refactor/.cache/hls-direct-RimrJ6/0.zip", + "sha256": "69836d26bfd71532b984b65f1b6a828c18d158b2aa8d4c2c3ed7d4ccc87f47ee", + "bytes": 1989427 + } + }, + { + "iteration": 1, + "version": "1.5.17", + "status": "passed", + "errors": [], + "requests": [ + { + "url": "http://127.0.0.1:4735/low-04.mpegts", + "error": { + "errorText": "NS_BINDING_ABORTED" + } + } + ], + "phase": "context-close", + "crashes": [], + "highPlayback": { + "start": { + "time": 1.309249, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 31, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 1.672889, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 40, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "lowPlayback": { + "start": { + "time": 2.610628, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 62, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 3.014663, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 71, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "beforeDestroy": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 3.014663, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 71, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "sdk": { + "version": "1.5.17", + "workerEnabled": true, + "level": 0, + "audioTrack": 0 + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "AUDIO_TRACK_SWITCHED": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 44, + "canplay": 1, + "LEVEL_SWITCHED": 3, + "playing": 1, + "BUFFER_FLUSHED": 6, + "high-group:requested": 1 + }, + "lastEvents": [ + { + "at": 2010, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 3, + "level": 0 + } + }, + "media": { + "time": 1.713232, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 41, + "buffered": [ + [ + 0, + 8 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2014, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 4, + "level": 0 + } + }, + "media": { + "time": 1.753702, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2017, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.753702, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2019, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.753702, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2066, + "event": "LEVEL_SWITCHED", + "data": { + "level": 0 + }, + "media": { + "time": 1.793888, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 43, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + } + ] + }, + "state": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + }, + "sdk": { + "version": "1.5.17", + "level": -1, + "audioTrack": 0, + "mainState": "STOPPED" + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "AUDIO_TRACK_SWITCHED": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 44, + "canplay": 1, + "LEVEL_SWITCHED": 3, + "playing": 1, + "BUFFER_FLUSHED": 6, + "high-group:requested": 1, + "destroy:start": 1, + "destroy:end": 1 + }, + "lastEvents": [ + { + "at": 2017, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.753702, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2019, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.753702, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 42, + "buffered": [ + [ + 0, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2066, + "event": "LEVEL_SWITCHED", + "data": { + "level": 0 + }, + "media": { + "time": 1.793888, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 43, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3323, + "event": "destroy:start", + "data": "reset-first", + "media": { + "time": 3.054948, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 72, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3325, + "event": "destroy:end", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + } + } + ] + }, + "trace": { + "file": "refactor/.cache/hls-direct-RimrJ6/1.zip", + "sha256": "027070b57709c9843dc6c2188e0eae94f445460f58db0a39a4f09e761c6961f2", + "bytes": 1932325 + } + } + ] + }, + { + "name": "default", + "log": { + "file": "refactor/.cache/hls-sequence-default.log", + "sha256": "e16b5cea08c86bb94f47d3bfa9840697d7f96de3ebfa1746176560ca969865b8", + "bytes": 225 + }, + "report": { + "file": "refactor/.cache/hls-direct-TtJbRl/report.json", + "sha256": "9a21567c094e0242f9d67654dd8263016ac92e566dc10b2666915e066799e66e", + "bytes": 74520 + }, + "version": "1.7.2", + "iterations": 1, + "sequence": [ + "1.7.2" + ], + "transport": "http", + "teardown": "reset-first", + "worker": true, + "host": "direct", + "plugin": false, + "sdkLogs": false, + "workerObserver": false, + "captureBeforeDestroy": false, + "switchBoundary": "switched", + "prefill": false, + "runnerSHA256": "31f6ba6960b854f88ef4ea0cbbbc309076e8d47b115f9cd633b29d827e2c5b0d", + "observerSHA256": "8ecd23a41293b7b6b065a077ba352fff0007ba07f41ce5f84943ac5f546a1cc1", + "browserVersion": "155.0", + "release": { + "inputSHA256": "f2a153e83f12feb8985e8fc06a8659196cbda79868446930539cc90499023520" + }, + "releases": { + "inputSHA256": "9fc7afc199928c0a99071a336bc9d29e988938a29980c98b13c9f41915c98529" + }, + "inputs": { + "inputSHA256": "73a4467520817fabe4247523c1b3080698bc5ecf025d821f7c1506a2d0d157ef" + }, + "results": [ + { + "iteration": 0, + "version": "1.7.2", + "status": "passed", + "errors": [], + "requests": [], + "phase": "context-close", + "crashes": [], + "highPlayback": { + "start": { + "time": 1.457501, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 34, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 1.861533, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 43, + "buffered": [ + [ + 0, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "lowPlayback": { + "start": { + "time": 2.879126, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 67, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + }, + "end": { + "time": 3.2481, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 76, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + "state": { + "coreLoaded": "undefined", + "pluginLoaded": "undefined", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + }, + "sdk": { + "version": "1.7.2", + "level": -1, + "audioTrack": 0, + "mainState": "STOPPED", + "audioState": "STOPPED" + }, + "eventCounts": { + "AUDIO_TRACKS_UPDATED": 5, + "AUDIO_TRACK_SWITCHING": 7, + "LEVEL_SWITCHING": 5, + "loadedmetadata": 1, + "FRAG_BUFFERED": 60, + "canplay": 2, + "LEVEL_SWITCHED": 3, + "seeking": 1, + "seeked": 1, + "playing": 1, + "BUFFER_FLUSHED": 9, + "AUDIO_TRACK_SWITCHED": 5, + "high-group:requested": 1, + "destroy:start": 1, + "destroy:end": 1 + }, + "lastEvents": [ + { + "at": 2471, + "event": "FRAG_BUFFERED", + "data": { + "id": "main", + "frag": { + "type": "main", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.982487, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 47, + "buffered": [ + [ + 2.005333, + 10.005333 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2473, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 5, + "level": 0 + } + }, + "media": { + "time": 1.982487, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 47, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 2475, + "event": "FRAG_BUFFERED", + "data": { + "id": "audio", + "frag": { + "type": "audio", + "sn": 6, + "level": 0 + } + }, + "media": { + "time": 1.982487, + "readyState": 4, + "height": 180, + "paused": false, + "frames": 47, + "buffered": [ + [ + 2.005333, + 12 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3733, + "event": "destroy:start", + "data": "reset-first", + "media": { + "time": 3.2481, + "readyState": 4, + "height": 90, + "paused": false, + "frames": 76, + "buffered": [ + [ + 2.005333, + 12.032 + ] + ], + "seekable": [ + [ + 0, + 12.032 + ] + ] + } + }, + { + "at": 3735, + "event": "destroy:end", + "media": { + "time": 0, + "readyState": 0, + "height": 0, + "paused": true, + "frames": 0, + "buffered": [], + "seekable": [] + } + } + ] + }, + "trace": { + "file": "refactor/.cache/hls-direct-TtJbRl/0.zip", + "sha256": "264bbaae6968ae683fd4cd87586834700ea7d1e42a6b9761834d1175a57ce558", + "bytes": 1991118 + } + } + ] + } + ], + "inputs": { + "f03244ee1cb90e647f8319b275dc207ac6b44b4b703fe3fd398b49d236112151": [ + { + "name": "hls.js", + "version": "1.5.17", + "tarball": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.17.tgz", + "integrity": "sha512-wA66nnYFvQa1o4DO/BFgLNRKnBTVXpNeldGRBJ2Y0SvFtdwvFKCbqa9zhHoZLoxHhZ+jYsj3aIBkWQQCPNOhMw==", + "sha256": "8f9e60001992f59dbfb1dbc397e145743c41bb6dde233ec8a7974013c8a031fe", + "files": { + "package/package.json": "f2172b9942a23ffb46edd4af815cf1ea161db088e7f63dc518d30e55c95d6ae9", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "484054e8cd03d3f6d1781fb7f402bdc318d8a4c527f933a95c624e27cc9a9470", + "package/src/hls.ts": "b3d3f797669e89bc8d05d2de2aae243ae110811d6738948f173d789cc1ac1f2d", + "package/src/controller/audio-track-controller.ts": "ff34f3cb29b66aa5fcba87758bb20d129b052a053808c150ce779e0ceb1e4626" + } + }, + { + "name": "hls.js", + "version": "1.7.2", + "tarball": "https://registry.npmjs.org/hls.js/-/hls.js-1.7.2.tgz", + "integrity": "sha512-CW/pPvSOFIRsosbwxrYaE9ERmpTo5fbTqL7wCvuCFlqW1Bmb1K5fXsY7yiH95rmlr4rVuA7UXHbM/cIXQ6AXwg==", + "sha256": "14311c46a7aea04a7ffc373653b11d019bb41df8a693a2459eb3115a262aef53", + "files": { + "package/package.json": "49918bb59328a44f4533dcfb5ecde80893db85072bd52b52721901b4ce239d81", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "package/dist/hls.d.ts": "9571b0113a7103feb8e36e9fbc04c3baba07b5ab3e5c51166b50552ebbbf17f2", + "package/src/hls.ts": "e86f0bb70e845814aa2e3a4ff6a9f1f658d1c98fbdc738b02f623c9ddcf6c72c", + "package/src/controller/audio-track-controller.ts": "f7ec55e90cc2194e64432db1336d75d0309f6cddf8b55d7eac45b0ebba0517b1" + } + } + ], + "b005703c17b80ee97b65ad445e612d9b0b9006719ddf9bde20acc9988da80a74": { + "/english-00.mpegts": "cc599f7c270385e85c28f710a34c5bd90b09d4d27adb3b1e6af3de65584b8207", + "/english-01.mpegts": "01b17c28defc8a8ebf4978c5236eb759d80521a1cb840898095c35dac420cec5", + "/english-02.mpegts": "90751b8b5abedd6b2f2e4eb83ccd609098ec7f2901163aaebf977cb9a11c46eb", + "/english-03.mpegts": "9b1d86b7b261df66dbdace4ef1e846796cd710ffb72b22fc69532c1fe7d1c55e", + "/english-04.mpegts": "dbfddd4f997942dd0b912f4c8bdbc5c11ee2a3fc51ac67df48d3aed2756715b9", + "/english-05.mpegts": "9b53790d4f50f172852b7d4ff51bdd4bedd39e4c7a1efbfe734edf7b9a68a533", + "/english-06.mpegts": "50baaa5e9fe7ca49b22c4d0817c44103b3edc763aee7f1b17d22f796d4189d4a", + "/english.m3u8": "5aae9d117d458f65f7febae68555ea4e48b2055b4cfb123fb919e385a1edda21", + "/french-00.mpegts": "7278acd094bc7caeeeea424a2c11ac4285fc45a8becb6c8ec55068f295ae35cd", + "/french-01.mpegts": "e9464d109e36a53d7f151442b544d47ce79324bbaa805e0a98f171621c9c7a13", + "/french-02.mpegts": "3ac48cab6aac942950b59f79ac6bd950dcae425f14821b83b1b5bb72d6815eb0", + "/french-03.mpegts": "906f2d8b1f29bb7d57240b145563bab975d8f7dfff78cebd1505b6d2a3feb43b", + "/french-04.mpegts": "cbf82876118d41af254bdef51f6cd08d842e8c6edf53250667fad2b8088e3601", + "/french-05.mpegts": "a91e564ec54d845837217c45b8e25b08fe208f2b5f97562f513baabd515427d9", + "/french-06.mpegts": "2c8edc11b06bacf1e62c4db67594ce187aa93e0241012011ebcf587b64ccff46", + "/french.m3u8": "6f7fb3eacb944597fa3105cb6d708eac3a8dc413e1706a11b6fb0e631214634e", + "/high-00.mpegts": "c5a8faac85b0594818255117696dce43fda6b363df40e2f3ffc453bd236cc833", + "/high-01.mpegts": "5714640c3f17d86c56036453dc17d45f871af63b461318c43527af3482f8661c", + "/high-02.mpegts": "fea1cbfb199bc867a322c7a646d43594a1d0d1d23fa0bcb6e770f2669b489440", + "/high-03.mpegts": "4a74a28e7ad6bc626358e32365a0b07df1da82c92753e28032983e22404958b5", + "/high-04.mpegts": "d04889b3b996d3e79c12bc297f9577690d3ae4f4172cdc0484b584954dab789c", + "/high-05.mpegts": "36ee0c64b8c3637d0e2282c611e9250650ac493440095fc2efbe9de1c54add15", + "/high.m3u8": "672c0e8b99242be05b16fc747a00715b2c25579b1ecc1623c0579fa34f0cb11d", + "/low-00.mpegts": "cbd62f5f4641cbe188a15640139bea393b5927fce600ff7513ef9ade9b33fb62", + "/low-01.mpegts": "f7821fba38c63f5d80daef21cdd3430880bdc9fd5f5adfa939ed6481106c2507", + "/low-02.mpegts": "3dc93f9f0fd065678b01fc6c568c12350e9ab0b324d1e0fa0e9f77787da7e7d2", + "/low-03.mpegts": "d94c8913f7fde98161550041287529b90a58d537d6083d4382540c5fce0b430b", + "/low-04.mpegts": "11596c59b547c2ff23bbba1f70e15f061a3e87bbdc1f4f59daa9b5279a6003af", + "/low-05.mpegts": "5c6ec25a69fdad73a23cfbc34f0f3c6d8abe44592650c92fa9110a38d6bd9e45", + "/low.m3u8": "404a8d868ed2af3598269aee89caba0563c2805dac223fe4c00c9a9eda73554f", + "/master.m3u8": "f226bd38f3c76714ada2b5a6866ad1cb39b041023e4a18d971d175f26f917e38", + "/video-only.m3u8": "3d7bb9069f6218191dc65745389bf1ab0ba6d5ed66cbd14e2cf30211913da3fc", + "/grouped.m3u8": "02c7482a012645a60014d429873f785e94c9a54f13f94f0b82597c7627173bfc", + "/hls-1.5.17.js": "484054e8cd03d3f6d1781fb7f402bdc318d8a4c527f933a95c624e27cc9a9470", + "/hls-1.7.2.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "/": "7abea2bb98110fb12f13773621338e2dd70804ecb5ac896febb5ef57db2bc386" + }, + "4b1d0626aec00349d173e24cd652414ac04f82e37f5465ae5890400b0b18d9a2": { + "/english-00.mpegts": "cc599f7c270385e85c28f710a34c5bd90b09d4d27adb3b1e6af3de65584b8207", + "/english-01.mpegts": "01b17c28defc8a8ebf4978c5236eb759d80521a1cb840898095c35dac420cec5", + "/english-02.mpegts": "90751b8b5abedd6b2f2e4eb83ccd609098ec7f2901163aaebf977cb9a11c46eb", + "/english-03.mpegts": "9b1d86b7b261df66dbdace4ef1e846796cd710ffb72b22fc69532c1fe7d1c55e", + "/english-04.mpegts": "dbfddd4f997942dd0b912f4c8bdbc5c11ee2a3fc51ac67df48d3aed2756715b9", + "/english-05.mpegts": "9b53790d4f50f172852b7d4ff51bdd4bedd39e4c7a1efbfe734edf7b9a68a533", + "/english-06.mpegts": "50baaa5e9fe7ca49b22c4d0817c44103b3edc763aee7f1b17d22f796d4189d4a", + "/english.m3u8": "5aae9d117d458f65f7febae68555ea4e48b2055b4cfb123fb919e385a1edda21", + "/french-00.mpegts": "7278acd094bc7caeeeea424a2c11ac4285fc45a8becb6c8ec55068f295ae35cd", + "/french-01.mpegts": "e9464d109e36a53d7f151442b544d47ce79324bbaa805e0a98f171621c9c7a13", + "/french-02.mpegts": "3ac48cab6aac942950b59f79ac6bd950dcae425f14821b83b1b5bb72d6815eb0", + "/french-03.mpegts": "906f2d8b1f29bb7d57240b145563bab975d8f7dfff78cebd1505b6d2a3feb43b", + "/french-04.mpegts": "cbf82876118d41af254bdef51f6cd08d842e8c6edf53250667fad2b8088e3601", + "/french-05.mpegts": "a91e564ec54d845837217c45b8e25b08fe208f2b5f97562f513baabd515427d9", + "/french-06.mpegts": "2c8edc11b06bacf1e62c4db67594ce187aa93e0241012011ebcf587b64ccff46", + "/french.m3u8": "6f7fb3eacb944597fa3105cb6d708eac3a8dc413e1706a11b6fb0e631214634e", + "/high-00.mpegts": "c5a8faac85b0594818255117696dce43fda6b363df40e2f3ffc453bd236cc833", + "/high-01.mpegts": "5714640c3f17d86c56036453dc17d45f871af63b461318c43527af3482f8661c", + "/high-02.mpegts": "fea1cbfb199bc867a322c7a646d43594a1d0d1d23fa0bcb6e770f2669b489440", + "/high-03.mpegts": "4a74a28e7ad6bc626358e32365a0b07df1da82c92753e28032983e22404958b5", + "/high-04.mpegts": "d04889b3b996d3e79c12bc297f9577690d3ae4f4172cdc0484b584954dab789c", + "/high-05.mpegts": "36ee0c64b8c3637d0e2282c611e9250650ac493440095fc2efbe9de1c54add15", + "/high.m3u8": "672c0e8b99242be05b16fc747a00715b2c25579b1ecc1623c0579fa34f0cb11d", + "/low-00.mpegts": "cbd62f5f4641cbe188a15640139bea393b5927fce600ff7513ef9ade9b33fb62", + "/low-01.mpegts": "f7821fba38c63f5d80daef21cdd3430880bdc9fd5f5adfa939ed6481106c2507", + "/low-02.mpegts": "3dc93f9f0fd065678b01fc6c568c12350e9ab0b324d1e0fa0e9f77787da7e7d2", + "/low-03.mpegts": "d94c8913f7fde98161550041287529b90a58d537d6083d4382540c5fce0b430b", + "/low-04.mpegts": "11596c59b547c2ff23bbba1f70e15f061a3e87bbdc1f4f59daa9b5279a6003af", + "/low-05.mpegts": "5c6ec25a69fdad73a23cfbc34f0f3c6d8abe44592650c92fa9110a38d6bd9e45", + "/low.m3u8": "404a8d868ed2af3598269aee89caba0563c2805dac223fe4c00c9a9eda73554f", + "/master.m3u8": "f226bd38f3c76714ada2b5a6866ad1cb39b041023e4a18d971d175f26f917e38", + "/video-only.m3u8": "3d7bb9069f6218191dc65745389bf1ab0ba6d5ed66cbd14e2cf30211913da3fc", + "/grouped.m3u8": "02c7482a012645a60014d429873f785e94c9a54f13f94f0b82597c7627173bfc", + "/hls-1.5.17.js": "484054e8cd03d3f6d1781fb7f402bdc318d8a4c527f933a95c624e27cc9a9470", + "/hls-1.7.2.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "/artplayer.js": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f", + "/plugin.js": "8e163d4ab6734cbc45e7f539de7db644c7faf36d0318469a86d300bf6365cca6", + "/": "7abea2bb98110fb12f13773621338e2dd70804ecb5ac896febb5ef57db2bc386" + }, + "a53b7a201b8c97668fc2ee77fd453e38df0c8fbaccc74f8160fa6b90133093e4": [ + { + "name": "hls.js", + "version": "1.7.2", + "tarball": "https://registry.npmjs.org/hls.js/-/hls.js-1.7.2.tgz", + "integrity": "sha512-CW/pPvSOFIRsosbwxrYaE9ERmpTo5fbTqL7wCvuCFlqW1Bmb1K5fXsY7yiH95rmlr4rVuA7UXHbM/cIXQ6AXwg==", + "sha256": "14311c46a7aea04a7ffc373653b11d019bb41df8a693a2459eb3115a262aef53", + "files": { + "package/package.json": "49918bb59328a44f4533dcfb5ecde80893db85072bd52b52721901b4ce239d81", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "package/dist/hls.d.ts": "9571b0113a7103feb8e36e9fbc04c3baba07b5ab3e5c51166b50552ebbbf17f2", + "package/src/hls.ts": "e86f0bb70e845814aa2e3a4ff6a9f1f658d1c98fbdc738b02f623c9ddcf6c72c", + "package/src/controller/audio-track-controller.ts": "f7ec55e90cc2194e64432db1336d75d0309f6cddf8b55d7eac45b0ebba0517b1" + } + }, + { + "name": "hls.js", + "version": "1.5.17", + "tarball": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.17.tgz", + "integrity": "sha512-wA66nnYFvQa1o4DO/BFgLNRKnBTVXpNeldGRBJ2Y0SvFtdwvFKCbqa9zhHoZLoxHhZ+jYsj3aIBkWQQCPNOhMw==", + "sha256": "8f9e60001992f59dbfb1dbc397e145743c41bb6dde233ec8a7974013c8a031fe", + "files": { + "package/package.json": "f2172b9942a23ffb46edd4af815cf1ea161db088e7f63dc518d30e55c95d6ae9", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "484054e8cd03d3f6d1781fb7f402bdc318d8a4c527f933a95c624e27cc9a9470", + "package/src/hls.ts": "b3d3f797669e89bc8d05d2de2aae243ae110811d6738948f173d789cc1ac1f2d", + "package/src/controller/audio-track-controller.ts": "ff34f3cb29b66aa5fcba87758bb20d129b052a053808c150ce779e0ceb1e4626" + } + } + ], + "9018c51bdc7aef8a77fa7a6bc78b8e2b656950aafec1f70ba531117538966b74": { + "/english-00.mpegts": "cc599f7c270385e85c28f710a34c5bd90b09d4d27adb3b1e6af3de65584b8207", + "/english-01.mpegts": "01b17c28defc8a8ebf4978c5236eb759d80521a1cb840898095c35dac420cec5", + "/english-02.mpegts": "90751b8b5abedd6b2f2e4eb83ccd609098ec7f2901163aaebf977cb9a11c46eb", + "/english-03.mpegts": "9b1d86b7b261df66dbdace4ef1e846796cd710ffb72b22fc69532c1fe7d1c55e", + "/english-04.mpegts": "dbfddd4f997942dd0b912f4c8bdbc5c11ee2a3fc51ac67df48d3aed2756715b9", + "/english-05.mpegts": "9b53790d4f50f172852b7d4ff51bdd4bedd39e4c7a1efbfe734edf7b9a68a533", + "/english-06.mpegts": "50baaa5e9fe7ca49b22c4d0817c44103b3edc763aee7f1b17d22f796d4189d4a", + "/english.m3u8": "5aae9d117d458f65f7febae68555ea4e48b2055b4cfb123fb919e385a1edda21", + "/french-00.mpegts": "7278acd094bc7caeeeea424a2c11ac4285fc45a8becb6c8ec55068f295ae35cd", + "/french-01.mpegts": "e9464d109e36a53d7f151442b544d47ce79324bbaa805e0a98f171621c9c7a13", + "/french-02.mpegts": "3ac48cab6aac942950b59f79ac6bd950dcae425f14821b83b1b5bb72d6815eb0", + "/french-03.mpegts": "906f2d8b1f29bb7d57240b145563bab975d8f7dfff78cebd1505b6d2a3feb43b", + "/french-04.mpegts": "cbf82876118d41af254bdef51f6cd08d842e8c6edf53250667fad2b8088e3601", + "/french-05.mpegts": "a91e564ec54d845837217c45b8e25b08fe208f2b5f97562f513baabd515427d9", + "/french-06.mpegts": "2c8edc11b06bacf1e62c4db67594ce187aa93e0241012011ebcf587b64ccff46", + "/french.m3u8": "6f7fb3eacb944597fa3105cb6d708eac3a8dc413e1706a11b6fb0e631214634e", + "/high-00.mpegts": "c5a8faac85b0594818255117696dce43fda6b363df40e2f3ffc453bd236cc833", + "/high-01.mpegts": "5714640c3f17d86c56036453dc17d45f871af63b461318c43527af3482f8661c", + "/high-02.mpegts": "fea1cbfb199bc867a322c7a646d43594a1d0d1d23fa0bcb6e770f2669b489440", + "/high-03.mpegts": "4a74a28e7ad6bc626358e32365a0b07df1da82c92753e28032983e22404958b5", + "/high-04.mpegts": "d04889b3b996d3e79c12bc297f9577690d3ae4f4172cdc0484b584954dab789c", + "/high-05.mpegts": "36ee0c64b8c3637d0e2282c611e9250650ac493440095fc2efbe9de1c54add15", + "/high.m3u8": "672c0e8b99242be05b16fc747a00715b2c25579b1ecc1623c0579fa34f0cb11d", + "/low-00.mpegts": "cbd62f5f4641cbe188a15640139bea393b5927fce600ff7513ef9ade9b33fb62", + "/low-01.mpegts": "f7821fba38c63f5d80daef21cdd3430880bdc9fd5f5adfa939ed6481106c2507", + "/low-02.mpegts": "3dc93f9f0fd065678b01fc6c568c12350e9ab0b324d1e0fa0e9f77787da7e7d2", + "/low-03.mpegts": "d94c8913f7fde98161550041287529b90a58d537d6083d4382540c5fce0b430b", + "/low-04.mpegts": "11596c59b547c2ff23bbba1f70e15f061a3e87bbdc1f4f59daa9b5279a6003af", + "/low-05.mpegts": "5c6ec25a69fdad73a23cfbc34f0f3c6d8abe44592650c92fa9110a38d6bd9e45", + "/low.m3u8": "404a8d868ed2af3598269aee89caba0563c2805dac223fe4c00c9a9eda73554f", + "/master.m3u8": "f226bd38f3c76714ada2b5a6866ad1cb39b041023e4a18d971d175f26f917e38", + "/video-only.m3u8": "3d7bb9069f6218191dc65745389bf1ab0ba6d5ed66cbd14e2cf30211913da3fc", + "/grouped.m3u8": "02c7482a012645a60014d429873f785e94c9a54f13f94f0b82597c7627173bfc", + "/hls-1.7.2.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "/hls-1.5.17.js": "484054e8cd03d3f6d1781fb7f402bdc318d8a4c527f933a95c624e27cc9a9470", + "/": "7abea2bb98110fb12f13773621338e2dd70804ecb5ac896febb5ef57db2bc386" + }, + "9fc7afc199928c0a99071a336bc9d29e988938a29980c98b13c9f41915c98529": [ + { + "name": "hls.js", + "version": "1.7.2", + "tarball": "https://registry.npmjs.org/hls.js/-/hls.js-1.7.2.tgz", + "integrity": "sha512-CW/pPvSOFIRsosbwxrYaE9ERmpTo5fbTqL7wCvuCFlqW1Bmb1K5fXsY7yiH95rmlr4rVuA7UXHbM/cIXQ6AXwg==", + "sha256": "14311c46a7aea04a7ffc373653b11d019bb41df8a693a2459eb3115a262aef53", + "files": { + "package/package.json": "49918bb59328a44f4533dcfb5ecde80893db85072bd52b52721901b4ce239d81", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "package/dist/hls.d.ts": "9571b0113a7103feb8e36e9fbc04c3baba07b5ab3e5c51166b50552ebbbf17f2", + "package/src/hls.ts": "e86f0bb70e845814aa2e3a4ff6a9f1f658d1c98fbdc738b02f623c9ddcf6c72c", + "package/src/controller/audio-track-controller.ts": "f7ec55e90cc2194e64432db1336d75d0309f6cddf8b55d7eac45b0ebba0517b1" + } + } + ], + "f2a153e83f12feb8985e8fc06a8659196cbda79868446930539cc90499023520": { + "name": "hls.js", + "version": "1.7.2", + "tarball": "https://registry.npmjs.org/hls.js/-/hls.js-1.7.2.tgz", + "integrity": "sha512-CW/pPvSOFIRsosbwxrYaE9ERmpTo5fbTqL7wCvuCFlqW1Bmb1K5fXsY7yiH95rmlr4rVuA7UXHbM/cIXQ6AXwg==", + "sha256": "14311c46a7aea04a7ffc373653b11d019bb41df8a693a2459eb3115a262aef53", + "files": { + "package/package.json": "49918bb59328a44f4533dcfb5ecde80893db85072bd52b52721901b4ce239d81", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "package/dist/hls.d.ts": "9571b0113a7103feb8e36e9fbc04c3baba07b5ab3e5c51166b50552ebbbf17f2", + "package/src/hls.ts": "e86f0bb70e845814aa2e3a4ff6a9f1f658d1c98fbdc738b02f623c9ddcf6c72c", + "package/src/controller/audio-track-controller.ts": "f7ec55e90cc2194e64432db1336d75d0309f6cddf8b55d7eac45b0ebba0517b1" + } + }, + "73a4467520817fabe4247523c1b3080698bc5ecf025d821f7c1506a2d0d157ef": { + "/english-00.mpegts": "cc599f7c270385e85c28f710a34c5bd90b09d4d27adb3b1e6af3de65584b8207", + "/english-01.mpegts": "01b17c28defc8a8ebf4978c5236eb759d80521a1cb840898095c35dac420cec5", + "/english-02.mpegts": "90751b8b5abedd6b2f2e4eb83ccd609098ec7f2901163aaebf977cb9a11c46eb", + "/english-03.mpegts": "9b1d86b7b261df66dbdace4ef1e846796cd710ffb72b22fc69532c1fe7d1c55e", + "/english-04.mpegts": "dbfddd4f997942dd0b912f4c8bdbc5c11ee2a3fc51ac67df48d3aed2756715b9", + "/english-05.mpegts": "9b53790d4f50f172852b7d4ff51bdd4bedd39e4c7a1efbfe734edf7b9a68a533", + "/english-06.mpegts": "50baaa5e9fe7ca49b22c4d0817c44103b3edc763aee7f1b17d22f796d4189d4a", + "/english.m3u8": "5aae9d117d458f65f7febae68555ea4e48b2055b4cfb123fb919e385a1edda21", + "/french-00.mpegts": "7278acd094bc7caeeeea424a2c11ac4285fc45a8becb6c8ec55068f295ae35cd", + "/french-01.mpegts": "e9464d109e36a53d7f151442b544d47ce79324bbaa805e0a98f171621c9c7a13", + "/french-02.mpegts": "3ac48cab6aac942950b59f79ac6bd950dcae425f14821b83b1b5bb72d6815eb0", + "/french-03.mpegts": "906f2d8b1f29bb7d57240b145563bab975d8f7dfff78cebd1505b6d2a3feb43b", + "/french-04.mpegts": "cbf82876118d41af254bdef51f6cd08d842e8c6edf53250667fad2b8088e3601", + "/french-05.mpegts": "a91e564ec54d845837217c45b8e25b08fe208f2b5f97562f513baabd515427d9", + "/french-06.mpegts": "2c8edc11b06bacf1e62c4db67594ce187aa93e0241012011ebcf587b64ccff46", + "/french.m3u8": "6f7fb3eacb944597fa3105cb6d708eac3a8dc413e1706a11b6fb0e631214634e", + "/high-00.mpegts": "c5a8faac85b0594818255117696dce43fda6b363df40e2f3ffc453bd236cc833", + "/high-01.mpegts": "5714640c3f17d86c56036453dc17d45f871af63b461318c43527af3482f8661c", + "/high-02.mpegts": "fea1cbfb199bc867a322c7a646d43594a1d0d1d23fa0bcb6e770f2669b489440", + "/high-03.mpegts": "4a74a28e7ad6bc626358e32365a0b07df1da82c92753e28032983e22404958b5", + "/high-04.mpegts": "d04889b3b996d3e79c12bc297f9577690d3ae4f4172cdc0484b584954dab789c", + "/high-05.mpegts": "36ee0c64b8c3637d0e2282c611e9250650ac493440095fc2efbe9de1c54add15", + "/high.m3u8": "672c0e8b99242be05b16fc747a00715b2c25579b1ecc1623c0579fa34f0cb11d", + "/low-00.mpegts": "cbd62f5f4641cbe188a15640139bea393b5927fce600ff7513ef9ade9b33fb62", + "/low-01.mpegts": "f7821fba38c63f5d80daef21cdd3430880bdc9fd5f5adfa939ed6481106c2507", + "/low-02.mpegts": "3dc93f9f0fd065678b01fc6c568c12350e9ab0b324d1e0fa0e9f77787da7e7d2", + "/low-03.mpegts": "d94c8913f7fde98161550041287529b90a58d537d6083d4382540c5fce0b430b", + "/low-04.mpegts": "11596c59b547c2ff23bbba1f70e15f061a3e87bbdc1f4f59daa9b5279a6003af", + "/low-05.mpegts": "5c6ec25a69fdad73a23cfbc34f0f3c6d8abe44592650c92fa9110a38d6bd9e45", + "/low.m3u8": "404a8d868ed2af3598269aee89caba0563c2805dac223fe4c00c9a9eda73554f", + "/master.m3u8": "f226bd38f3c76714ada2b5a6866ad1cb39b041023e4a18d971d175f26f917e38", + "/video-only.m3u8": "3d7bb9069f6218191dc65745389bf1ab0ba6d5ed66cbd14e2cf30211913da3fc", + "/grouped.m3u8": "02c7482a012645a60014d429873f785e94c9a54f13f94f0b82597c7627173bfc", + "/hls-1.7.2.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "/": "7abea2bb98110fb12f13773621338e2dd70804ecb5ac896febb5ef57db2bc386" + } + }, + "cli": [ + { + "args": [ + "--sequence", + "1.7.2", + "--iterations", + "1" + ], + "expected": "Use --sequence or --version/--iterations, not both", + "exitCode": 1, + "stderr": "node:internal/modules/run_main:107\r\n triggerUncaughtException(\r\n ^\r\n\r\nAssertionError [ERR_ASSERTION]: Use --sequence or --version/--iterations, not both\r\n at file:///D:/github/ArtPlayer/refactor/scripts/hls-sdk-diagnostic.mjs:322:1 {\r\n generatedMessage: false,\r\n code: 'ERR_ASSERTION',\r\n actual: false,\r\n expected: true,\r\n operator: '==',\r\n diff: 'simple'\r\n}\r\n\r\nNode.js v24.21.0\r\n" + }, + { + "args": [ + "--sequence", + "0.0.0" + ], + "expected": "Use a frozen SDK version", + "exitCode": 1, + "stderr": "AssertionError [ERR_ASSERTION]: Use a frozen SDK version\n at file:///D:/github/ArtPlayer/refactor/scripts/hls-sdk-diagnostic.mjs:27:5\n at Array.map ()\n at diagnose (file:///D:/github/ArtPlayer/refactor/scripts/hls-sdk-diagnostic.mjs:25:43)\n at file:///D:/github/ArtPlayer/refactor/scripts/hls-sdk-diagnostic.mjs:323:1 {\n generatedMessage: false,\n code: 'ERR_ASSERTION',\n actual: undefined,\n expected: true,\n operator: '==',\n diff: 'simple'\n}\n" + }, + { + "args": [ + "--sequence", + "1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2,1.7.2" + ], + "expected": "versions.length <= 50", + "exitCode": 1, + "stderr": "AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:\n\n assert(Array.isArray(versions) && versions.length > 0 && versions.length <= 50)\n\n at diagnose (file:///D:/github/ArtPlayer/refactor/scripts/hls-sdk-diagnostic.mjs:24:3)\n at file:///D:/github/ArtPlayer/refactor/scripts/hls-sdk-diagnostic.mjs:323:1 {\n generatedMessage: true,\n code: 'ERR_ASSERTION',\n actual: false,\n expected: true,\n operator: '==',\n diff: 'simple'\n}\n" + } + ], + "windowsEvents": { + "file": "refactor/.cache/hls-sequence-windows-events.json", + "sha256": "6a60d6e7e771c1f17661582b159abc7ee7c791e7edb9dde8d903c26e8f67f775", + "bytes": 250, + "query": { + "startUtc": "2026-09-15T07:05:18Z", + "endUtc": "2026-09-15T07:06:18Z", + "error": "No events were found that match the specified selection criteria.", + "errorId": "NoMatchingEventsFound,Microsoft.PowerShell.Commands.GetWinEventCommand" + } + }, + "checks": { + "lint": { + "file": "refactor/.cache/hls-sequence-lint.log", + "sha256": "8de136fad41409586f0bba206e29b1bbd29f0f4b1c14f779b3cdff9b6497fbc6", + "bytes": 435 + }, + "matrix": { + "file": "refactor/.cache/hls-sequence-matrix.log", + "sha256": "670a7472f6e5607dad5c535bc476357848c706a30fe18091e7a4c9a31c91f9d2", + "bytes": 232 + }, + "toolchain": { + "file": "refactor/.cache/hls-sequence-toolchain.log", + "sha256": "1571f5347b59b58115b2957e9bf933b02e00674e54d6fc430f7022d2e1b9f914", + "bytes": 510 + } + }, + "scope": [ + "Three explicit sequences and one single-version compatibility invocation total 8 passes and 1 page-crash failure; no retries or skipped cases. Not a release matrix.", + "Each diagnose invocation launches one Firefox browser, then separate contexts sequentially. Both SDKs are frozen; each page checks Hls.version before initialization. No attempt to infer native content-process reuse across contexts.", + "The direct first-case 1.5.17 crash is reported while awaiting the high-group height/audio predicate, before capture-before-destroy or any explicit destroy call. It cannot require an earlier SDK case in this invocation.", + "Direct mode loads no ArtPlayer or plugin. Its ordinary HTTP worker run has neither route interception, SDK logging nor Worker observation. Existing Playwright tracing and media/SDK event observation remain.", + "Later passes do not prove the absence of sequence effects, fix the original 1.7.2 empty-buffer stall, or identify the native crash cause. Windows Application event query is explicitly scoped to 1000/1001 within 30 seconds either side; no matching records were returned, not proof that no crash happened.", + "Final sourceHashesLF describe the final CLI ambiguity check; per-run runnerSHA256 preserves the earlier sequence runner identity. Runtime operations did not change when the CLI conflict validation was added.", + "No production source, declarations, dependency, browser installation or artifact build changed. Default single-version report fields remain, mixed runs use sequence/releases and per-result version to avoid labeling every iteration with one SDK.", + "Full raw reports and traces are referenced by file/sha256; passing event histories and worker messages are summarized. No crash upload, external issue submission or native minidump collection was performed." + ] +} diff --git a/refactor/changes/2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md b/refactor/changes/2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md new file mode 100644 index 000000000..b5ce813b5 --- /dev/null +++ b/refactor/changes/2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md @@ -0,0 +1,74 @@ +# PKG-HLS-SDK-01 同浏览器实例的 SDK 顺序对照 + +来源 HEAD:`ca967ea1a2faeab3f5e23c612af31b41d22fd7f8`。任务保持 doing。 +本轮扩展诊断工具并取得销毁前的崩溃信号,没有修改播放器、插件、公共声明、 +依赖或分发文件。HLS-CRASH-01 和 HLS-PLAYBACK-01 均继续开放。 + +## 顺序对照 + +之前的集成失败发生于包含两个 SDK 的测试序列,单版本诊断不足以比较这个条件。 +`hls-sdk-diagnostic.mjs --sequence` 现在能在同一个 Firefox browser 实例中依次 +创建隔离 context,使用指定的固定 SDK。不能据此声称各 context 的原生内容进程 +相同;也没有在一个播放器上直接替换 SDK 构造函数。 + +所有序列值必须在 hls-sdk-matrix.json 中,先验证归档成员哈希,再通过独立版本 +URL 加载,初始化前检查页面 Hls.version。每项结果记录实际 version,报告记录 +sequence/releases。旧 `--version --iterations` 方式继续支持,保留单版本 release +字段。两种 CLI 模式显式混用会报错,避免标签或执行次数与意图不符。最多50项。 + +| 对照 | SDK 顺序 | 宿主和传输 | 结果 | +| --- | --- | --- | --- | +| direct | 1.5.17 → 1.5.17 → 1.7.2 | 原生 video、普通 HTTP | 2通过,第一项崩溃 | +| published | 1.5.17 → 1.5.17 → 1.7.2 | 发布核心/候选插件、route、Worker观察器 | 3通过 | +| reverse | 1.7.2 → 1.5.17 | 原生 video、普通 HTTP | 2通过 | +| default | 1.7.2 一次,旧参数入口 | 原生 video、普通 HTTP | 1通过 | + +均为 Windows Firefox155.0、真实 worker、同一冻结媒体夹具;没有替换 worker 输出。 +前三组使用 selected 边界及销毁前快照;default 保留默认 switched 边界与关闭的 +快照。direct/reverse 没有 ArtPlayer、插件、route、SDK logger 或 Worker观察器, +仍保留已有 Playwright trace 和事件记录,不能称为完全无插桩。 + +## 新的崩溃证据改变了什么 + +direct 第一项1.5.17在 high-group 阶段等待高度/音轨条件时收到 page-crash 信号, +时间为2026-09-15 07:05:48.727 UTC。还未执行 capture-before-destroy,也未调用 +显式 destroy。它是该 browser 实例的第一项 SDK 用例,因此不能要求先运行其他 +版本才会发生这次崩溃。完整报告及本项 trace 已独立保存并记录指纹。 + +此前已复现的销毁后崩溃不因此消失,但“只排查销毁顺序”已不充分。更新风险标题 +及 workspaceState,保留旧证据和原关闭条件;没有将两次不同阶段的崩溃当作已 +证明同一原生根因。后续成功的 context 也不证明浏览器状态完全无影响。 + +查阅本次信号前后各30秒的 Windows Application 1000/1001 事件没有匹配记录。 +这仅说明该窄范围查询没有返回事件,不代表没有崩溃,也不是原生堆栈。当前仍缺 +能够解释退出/异常的原生诊断。取得原生 dump 时可参考 +[Mozilla Crash Reporter 文档](https://firefox-source-docs.mozilla.org/toolkit/crashreporter/crashreporter/index.html#environment-variables-affecting-crash-reporting) +的本地保存选项;本轮没有启用新报告环境、采集 dump 或上传崩溃数据。 + +本机 Playwright1.63.0 的 coreBundle 中默认 Firefox 与 BidiFirefox 是不同启动类, +不能把 Bidi 的 MOZ_CRASHREPORTER 默认环境误认为当前 Firefox 后端已应用。 +安装目录未看到独立 crashreporter 文件,也不足以证明该二进制的所有 dump 能力。 +下一步应先核实当前后端/二进制的原生取证方式,再处理 SDK/浏览器边界;不凭猜测 +变更核心公开 destroy 顺序、强制无 worker 或宣称使用单一版本已修复问题。 + +## 验证与维护 + +```sh +node refactor/scripts/hls-sdk-diagnostic.mjs --sequence 1.5.17,1.5.17,1.7.2 --switch-boundary selected --capture-before-destroy +node refactor/scripts/hls-sdk-diagnostic.mjs --sequence 1.5.17,1.5.17,1.7.2 --host published --plugin --transport route --observe-workers --switch-boundary selected --capture-before-destroy +node refactor/scripts/hls-sdk-diagnostic.mjs --sequence 1.7.2,1.5.17 --switch-boundary selected --capture-before-destroy +node refactor/scripts/hls-sdk-diagnostic.mjs --version 1.7.2 --iterations 1 +``` + +机器证据见 [hls-sdk-sequence-validation.json](../baselines/hls-sdk-sequence-validation.json): +8通过、1失败,无重试/跳过。三项 CLI 非法输入(冲突模式、未冻结版本、超长序列) +均在浏览器启动前拒绝;定向 lint、SDK来源单测和严格工具链通过。 +Node24.21.0、Yarn1.22.22,未重新安装/构建浏览器或工作区包。 +本轮没有更改集成验收用例,复用上一检查点的最终测试验证,不重复完整矩阵。 + +报告中的原始路径/哈希保留完整事件,已提交摘要只保留事件统计和末尾状态, +复用输入对象按哈希去重。不同 runnerSHA256 对应增加 CLI 冲突检查之前/之后; +序列运行逻辑相同,不能把最终源码哈希说成早期运行时已有的字节。 + +这是诊断进展,不是修复或发布验收。回退本提交恢复单版本 runner 和此前的风险 +说明,不改运行时。不得把新的失败从汇总删除;后续处置仍需独立测试、记录和提交。 diff --git a/refactor/plan.md b/refactor/plan.md index 56572b567..4391493b4 100644 --- a/refactor/plan.md +++ b/refactor/plan.md @@ -569,7 +569,7 @@ - PKG-HLS-02: [记录](hls-validation.md) [记录](baselines/hls-sdk.json) [记录](baselines/hls-validation.json) [记录](changes/2026-09-11-PKG-HLS-02-tests.md) - PKG-HLS-03: [记录](changes/2026-09-12-PKG-HLS-03-modules.md) [记录](baselines/hls-modules-validation.json) [记录](hls-validation.md) - PKG-HLS-04: [记录](changes/2026-09-12-PKG-HLS-04-types.md) [记录](baselines/hls-types-validation.json) [记录](hls-validation.md) -- PKG-HLS-SDK-01: [记录](changes/2026-09-12-PKG-HLS-SDK-01-integration.md) [记录](baselines/hls-sdk-validation.json) [记录](baselines/hls-sdk-diagnostics.json) [记录](changes/2026-09-14-PKG-HLS-SDK-01-http-teardown.md) [记录](baselines/hls-http-teardown-validation.json) [记录](changes/2026-09-15-PKG-HLS-SDK-01-switch-boundary.md) [记录](baselines/hls-switch-boundary-validation.json) +- PKG-HLS-SDK-01: [记录](changes/2026-09-12-PKG-HLS-SDK-01-integration.md) [记录](baselines/hls-sdk-validation.json) [记录](baselines/hls-sdk-diagnostics.json) [记录](changes/2026-09-14-PKG-HLS-SDK-01-http-teardown.md) [记录](baselines/hls-http-teardown-validation.json) [记录](changes/2026-09-15-PKG-HLS-SDK-01-switch-boundary.md) [记录](baselines/hls-switch-boundary-validation.json) [记录](changes/2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md) [记录](baselines/hls-sdk-sequence-validation.json) - PKG-DASH-01: [记录](changes/2026-09-12-PKG-DASH-01-contract.md) [记录](baselines/dash-control-contract.md) [记录](baselines/dash-control-release.json) - PKG-DASH-02: [记录](changes/2026-09-12-PKG-DASH-02-tests.md) [记录](dash-validation.md) [记录](baselines/dash-validation.json) - PKG-DASH-03: [记录](changes/2026-09-12-PKG-DASH-03-runtime.md) [记录](baselines/dash-runtime.json) [记录](dash-validation.md) diff --git a/refactor/progress.md b/refactor/progress.md index 7f0aa0cfc..cb5350840 100644 --- a/refactor/progress.md +++ b/refactor/progress.md @@ -1,5 +1,18 @@ # 进度与证据 +## PKG-HLS-SDK-01 SDK顺序与销毁前崩溃 + +新增固定SDK序列诊断入口,逐页核验版本并保存实际顺序。在同一个Firefox实例 +依次运行两个SDK的对照中,直接原生video第一项1.5.17就在high-group阶段收到 +页面崩溃信号,尚未执行destroy;此前SDK或核心/插件不是该次发生的必要前提。 +这扩展了HLS-CRASH-01的证据范围,不能继续仅围绕销毁顺序排查。 + +四组共8通过1失败,原始报告/trace独立保留;三个CLI非法输入拒绝、lint、SDK +来源单测和工具链通过。窄范围Windows事件查询无匹配,仍缺原生根因证据。 +见[记录](changes/2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md)及 +[证据](baselines/hls-sdk-sequence-validation.json)。未修改运行时、依赖或分发。 +两项HLS风险及任务继续开放,总数203 done、21 doing、43 todo不变。 + ## PKG-HLS-SDK-01 分组切换与持续播放 再次复现 Firefox/Hls.js 1.7.2/发布核心分组切换失败:音轨已更新,视频仍90高、 diff --git a/refactor/risk-table.md b/refactor/risk-table.md index 8d19112f9..9f45a727a 100644 --- a/refactor/risk-table.md +++ b/refactor/risk-table.md @@ -124,7 +124,7 @@ | HLS-LIFE-01 | resolved / 已复现 | 过期 HLS 选择回调与销毁后 update 仍工作 | PKG-HLS-03 | | HLS-AUTO-01 | resolved / 已复现 | 真实 ABR 播放的 Auto 标签在 update 后丢失 | PKG-HLS-03, PKG-HLS-05 | | HLS-ENV-01 | open / 已复现 | Windows WebKit 缺失 MSE,HLS 播放矩阵尚缺 Safari 证据 | PKG-HLS-05, REL-09, REVIEW-02 | -| HLS-CRASH-01 | open / 已复现 | Firefox Hls 1.5.17 worker 销毁可在原生 video 与候选核心复现崩溃 | PKG-HLS-SDK-01, PKG-HLS-05, REVIEW-02 | +| HLS-CRASH-01 | open / 已复现 | Firefox Hls 1.5.17 worker 播放切组及销毁路径出现页面崩溃信号 | PKG-HLS-SDK-01, PKG-HLS-05, REVIEW-02 | | HLS-PLAYBACK-01 | open / 已复现 | Firefox 旧核心与 Hls 1.7.2 切组后视频档位未完成切换 | PKG-HLS-SDK-01, PKG-HLS-05, REVIEW-02 | | AUDIO-LIFE-01 | resolved / 已复现 | Audio Track 销毁后 update 与媒体/订阅缺少终止守卫 | PKG-AUDIO-02, PKG-AUDIO-03, PKG-AUDIO-05 | | AUDIO-SYNC-01 | open / 已复现 | Audio Track 未同步原生暂停/结束,偏移边界与切源/缓冲仍待完整验证 | PKG-AUDIO-02, PKG-AUDIO-03, PKG-AUDIO-05 | diff --git a/refactor/risks.json b/refactor/risks.json index a11b6052e..1c3877d14 100644 --- a/refactor/risks.json +++ b/refactor/risks.json @@ -2799,7 +2799,7 @@ }, { "id": "HLS-CRASH-01", - "title": "Firefox Hls 1.5.17 worker 销毁可在原生 video 与候选核心复现崩溃", + "title": "Firefox Hls 1.5.17 worker 播放切组及销毁路径出现页面崩溃信号", "confirmation": "reproduced", "status": "open", "owners": [ @@ -2813,11 +2813,13 @@ "refactor/baselines/hls-sdk-diagnostics.json", "refactor/scripts/hls-sdk-diagnostic.mjs", "refactor/changes/2026-09-14-PKG-HLS-SDK-01-http-teardown.md", - "refactor/baselines/hls-http-teardown-validation.json" + "refactor/baselines/hls-http-teardown-validation.json", + "refactor/changes/2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md", + "refactor/baselines/hls-sdk-sequence-validation.json" ], "compatibleResolution": "直接原生 video(无 ArtPlayer/插件)和候选核心已有 page crashed;候选核心无观察器也复现。继续区分 SDK、Firefox/Playwright 与媒体销毁,不静默改核心 destroy 顺序或调用方 SDK 配置。", "closureCriteria": "取得可解释的崩溃诊断或直接 SDK 对照;验证处置和新旧核心/worker/分组销毁矩阵,不能仅以再次通过关闭。", - "workspaceState": "2026-09-14 direct HTTP/no ArtPlayer/plugin/Worker observer:35 diagnostics,31 passed4 failed. Worker reset-first fails1/10 and1/5; no-worker10/10 and optional pre-destroy snapshot5/5 pass. SDK-first also fails2/5. Three phase-recorded crashes occur during final-state collection after destroy returned. Installed Firefox TargetRegistry observer receives oop-frameloader-crashed; no native stack/root cause established. Do not substitute no-worker/snapshot success or change core teardown order; risk remains open." + "workspaceState": "2026-09-14 direct HTTP/no ArtPlayer/plugin/Worker observer:35 diagnostics,31 passed4 failed. Worker reset-first fails1/10 and1/5; no-worker10/10 and optional pre-destroy snapshot5/5 pass. SDK-first also fails2/5. Three phase-recorded crashes occur during final-state collection after destroy returned. Installed Firefox TargetRegistry observer receives oop-frameloader-crashed; no native stack/root cause established. Do not substitute no-worker/snapshot success or change core teardown order; risk remains open. 2026-09-15 sequence: direct native video first 1.5.17 case reports page crash in high-group phase before explicit destroy; no earlier SDK case, ArtPlayer, plugin, route, SDK logger or Worker observer. Three ordered sequences plus one default invocation total 8 passed/1 failed. Native cause remains unproven; do not restrict investigation to teardown or merge distinct signals into a proven shared cause." }, { "id": "HLS-PLAYBACK-01", diff --git a/refactor/scripts/hls-sdk-diagnostic.mjs b/refactor/scripts/hls-sdk-diagnostic.mjs index 2a6d2c275..f0de5a5bd 100644 --- a/refactor/scripts/hls-sdk-diagnostic.mjs +++ b/refactor/scripts/hls-sdk-diagnostic.mjs @@ -10,7 +10,7 @@ import { observeWorkers } from '../../test/helpers/worker-observer.js' import { ensureArchive, hash, readMember, refactorDir } from './releases.mjs' // Direct SDK control: no ArtPlayer or plugin is loaded, and no worker output is substituted. -export async function diagnose({ version = '1.7.2', iterations = 5, transport = 'http', teardown = 'reset-first', worker = true, host = 'direct', plugin = false, sdkLogs = false, workerObserver = false, captureBeforeDestroy = false, switchBoundary = 'switched', prefill = false } = {}) { +export async function diagnose({ version = '1.7.2', iterations = 5, transport = 'http', teardown = 'reset-first', worker = true, host = 'direct', plugin = false, sdkLogs = false, workerObserver = false, captureBeforeDestroy = false, switchBoundary = 'switched', prefill = false, sequence } = {}) { const runnerSHA256 = hash(fs.readFileSync(new URL(import.meta.url))) const observerSHA256 = hash(fs.readFileSync(new URL('../../test/helpers/worker-observer.js', import.meta.url))) assert(Number.isInteger(iterations) && iterations > 0 && iterations <= 50) @@ -20,10 +20,13 @@ export async function diagnose({ version = '1.7.2', iterations = 5, transport = assert(['switched', 'selected', 'immediate'].includes(switchBoundary)) assert(!plugin || host !== 'direct', 'Plugin comparison requires an ArtPlayer host') const matrix = JSON.parse(fs.readFileSync(path.join(refactorDir, 'baselines/hls-sdk-matrix.json'))) - const release = matrix.releases.find(item => item.version === version) - assert(release, 'Use a frozen SDK version') - const sdk = readMember(await ensureArchive(release), 'package/dist/hls.min.js') - assert.equal(hash(sdk), release.files['package/dist/hls.min.js']) + const versions = sequence || Array.from({ length: iterations }, () => version) + assert(Array.isArray(versions) && versions.length > 0 && versions.length <= 50) + const releases = [...new Set(versions)].map((version) => { + const release = matrix.releases.find(item => item.version === version) + assert(release, 'Use a frozen SDK version') + return release + }) const media = path.join(refactorDir, '../test/browser/media/hls') const manifest = JSON.parse(fs.readFileSync(path.join(media, 'manifest.json'))) const files = new Map() @@ -33,7 +36,11 @@ export async function diagnose({ version = '1.7.2', iterations = 5, transport = files.set(`/${name}`, bytes) } files.set('/grouped.m3u8', fs.readFileSync(path.join(refactorDir, '../test/browser/fixtures/hls-grouped.m3u8'))) - files.set('/hls.js', sdk) + for (const release of releases) { + const sdk = readMember(await ensureArchive(release), 'package/dist/hls.min.js') + assert.equal(hash(sdk), release.files['package/dist/hls.min.js']) + files.set(`/hls-${release.version}.js`, sdk) + } if (host === 'published') { const baseline = JSON.parse(fs.readFileSync(path.join(refactorDir, 'baselines/releases.json'))) const core = baseline.releases.find(item => item.name === 'artplayer') @@ -62,12 +69,12 @@ export async function diagnose({ version = '1.7.2', iterations = 5, transport = try { browser = await firefox.launch({ headless: true }) browserVersion = browser.version() - for (let iteration = 0; iteration < iterations; iteration++) { + for (let iteration = 0; iteration < versions.length; iteration++) { const context = await browser.newContext() await context.tracing.start({ screenshots: true, snapshots: true, sources: true }) const page = await context.newPage() const wait = predicate => expect.poll(() => page.evaluate(predicate), { timeout: 7000 }).toBe(true) - const entry = { iteration, status: 'running', errors: [], requests: [], phase: 'setup', crashes: [] } + const entry = { iteration, version: versions[iteration], status: 'running', errors: [], requests: [], phase: 'setup', crashes: [] } results.push(entry) page.on('pageerror', error => entry.errors.push(error.message)) page.on('crash', () => { @@ -88,7 +95,8 @@ export async function diagnose({ version = '1.7.2', iterations = 5, transport = await page.goto(origin) if (workerObserver) await page.evaluate(observeWorkers) - await page.addScriptTag({ url: `${origin}/hls.js` }) + await page.addScriptTag({ url: `${origin}/hls-${entry.version}.js` }) + assert.equal(await page.evaluate(() => window.Hls.version), entry.version) if (host !== 'direct') await page.addScriptTag({ url: `${origin}/artplayer.js` }) if (plugin) @@ -280,21 +288,39 @@ export async function diagnose({ version = '1.7.2', iterations = 5, transport = entry.failure ||= entry.state.error || entry.traceError || entry.closeError || entry.errors.join('; ') } } - console.log(JSON.stringify({ iteration, status: entry.status, failure: entry.failure, media: entry.state.media })) + console.log(JSON.stringify({ iteration, version: entry.version, status: entry.status, failure: entry.failure, media: entry.state.media })) } } finally { await browser?.close() server.closeAllConnections() await new Promise(resolve => server.close(resolve)) - fs.writeFileSync(path.join(directory, 'report.json'), `${JSON.stringify({ version, iterations, transport, teardown, worker, host, plugin, sdkLogs, workerObserver, captureBeforeDestroy, switchBoundary, prefill, runnerSHA256, observerSHA256, browserVersion, release, inputs: Object.fromEntries([...files].map(([file, bytes]) => [file, hash(bytes)])), results }, null, 2)}\n`) + fs.writeFileSync(path.join(directory, 'report.json'), `${JSON.stringify({ version: sequence ? undefined : version, iterations: versions.length, sequence: versions, transport, teardown, worker, host, plugin, sdkLogs, workerObserver, captureBeforeDestroy, switchBoundary, prefill, runnerSHA256, observerSHA256, browserVersion, release: sequence ? undefined : releases[0], releases, inputs: Object.fromEntries([...files].map(([file, bytes]) => [file, hash(bytes)])), results }, null, 2)}\n`) console.log(`Diagnostic report: ${directory}`) } return results } -const { values } = parseArgs({ options: { 'version': { type: 'string', default: '1.7.2' }, 'iterations': { type: 'string', default: '5' }, 'transport': { type: 'string', default: 'http' }, 'teardown': { type: 'string', default: 'reset-first' }, 'host': { type: 'string', default: 'direct' }, 'no-worker': { type: 'boolean', default: false }, 'plugin': { type: 'boolean', default: false }, 'sdk-logs': { type: 'boolean', default: false }, 'observe-workers': { type: 'boolean', default: false }, 'capture-before-destroy': { type: 'boolean', default: false }, 'switch-boundary': { type: 'string', default: 'switched' }, 'prefill': { type: 'boolean', default: false } } }) -diagnose({ version: values.version, iterations: Number(values.iterations), transport: values.transport, teardown: values.teardown, worker: !values['no-worker'], host: values.host, plugin: values.plugin, sdkLogs: values['sdk-logs'], workerObserver: values['observe-workers'], captureBeforeDestroy: values['capture-before-destroy'], switchBoundary: values['switch-boundary'], prefill: values.prefill }).then((results) => { +const { values, tokens } = parseArgs({ + tokens: true, + options: { + 'version': { type: 'string', default: '1.7.2' }, + 'iterations': { type: 'string', default: '5' }, + 'sequence': { type: 'string' }, + 'transport': { type: 'string', default: 'http' }, + 'teardown': { type: 'string', default: 'reset-first' }, + 'host': { type: 'string', default: 'direct' }, + 'no-worker': { type: 'boolean', default: false }, + 'plugin': { type: 'boolean', default: false }, + 'sdk-logs': { type: 'boolean', default: false }, + 'observe-workers': { type: 'boolean', default: false }, + 'capture-before-destroy': { type: 'boolean', default: false }, + 'switch-boundary': { type: 'string', default: 'switched' }, + 'prefill': { type: 'boolean', default: false }, + }, +}) +assert(!values.sequence || !tokens.some(token => token.kind === 'option' && ['version', 'iterations'].includes(token.name)), 'Use --sequence or --version/--iterations, not both') +diagnose({ version: values.version, iterations: Number(values.iterations), transport: values.transport, teardown: values.teardown, worker: !values['no-worker'], host: values.host, plugin: values.plugin, sdkLogs: values['sdk-logs'], workerObserver: values['observe-workers'], captureBeforeDestroy: values['capture-before-destroy'], switchBoundary: values['switch-boundary'], prefill: values.prefill, sequence: values.sequence?.split(',') }).then((results) => { process.exitCode = results.some(result => result.status !== 'passed') ? 1 : 0 }).catch((error) => { console.error(error) diff --git a/refactor/tasks.json b/refactor/tasks.json index 450599941..ac154e838 100644 --- a/refactor/tasks.json +++ b/refactor/tasks.json @@ -2151,7 +2151,9 @@ "changes/2026-09-14-PKG-HLS-SDK-01-http-teardown.md", "baselines/hls-http-teardown-validation.json", "changes/2026-09-15-PKG-HLS-SDK-01-switch-boundary.md", - "baselines/hls-switch-boundary-validation.json" + "baselines/hls-switch-boundary-validation.json", + "changes/2026-09-15-PKG-HLS-SDK-01-sdk-sequence.md", + "baselines/hls-sdk-sequence-validation.json" ] }, {