diff --git a/docs/assets/example/asr.local.js b/docs/assets/example/asr.local.js
new file mode 100644
index 000000000..ed6259100
--- /dev/null
+++ b/docs/assets/example/asr.local.js
@@ -0,0 +1,68 @@
+/* global Artplayer, artplayerPluginAsr */
+// Local audio capture demo. The subtitles below are simulated, not recognized speech.
+// No audio is uploaded; only the sample media is loaded from this local site.
+const statistics = document.createElement('div')
+statistics.textContent = 'Local ASR demo: press play. No recognition service is used.'
+let chunks = 0
+let pcmBytes = 0
+let wavBytes = 0
+
+const art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/steve-jobs.mp4',
+ autoSize: true,
+ fullscreen: true,
+ fullscreenWeb: true,
+ layers: [{
+ name: 'asr-local-statistics',
+ html: statistics,
+ style: {
+ position: 'absolute',
+ top: '12px',
+ left: '12px',
+ right: '12px',
+ padding: '8px 12px',
+ background: 'rgba(0, 0, 0, 0.65)',
+ color: '#fff',
+ fontSize: '12px',
+ whiteSpace: 'pre-line',
+ pointerEvents: 'none',
+ },
+ }],
+ controls: [{
+ name: 'asr-local-stop',
+ position: 'right',
+ html: 'Stop ASR',
+ tooltip: 'Stop capture; pause and play to restart',
+ async click() {
+ await art.plugins.artplayerPluginAsr.stop()
+ if (!art.isDestroy)
+ statistics.textContent = 'Local capture stopped. Pause and play to restart. Nothing was uploaded.'
+ },
+ }],
+ plugins: [artplayerPluginAsr({
+ length: 2,
+ interval: 250,
+ sampleRate: 16000,
+ autoHideTimeout: 5000,
+ onAudioChunk({ pcm, wav }) {
+ if (art.isDestroy)
+ return
+ chunks++
+ pcmBytes += pcm.byteLength
+ wavBytes += wav.byteLength
+ const sampleRate = new DataView(wav).getUint32(24, true)
+ const samples = new DataView(pcm)
+ let peak = 0
+ for (let offset = 0; offset < pcm.byteLength; offset += 2)
+ peak = Math.max(peak, Math.abs(samples.getInt16(offset, true)))
+ const duration = (pcmBytes / 2 / sampleRate).toFixed(2)
+ statistics.textContent = [
+ 'Local capture only - simulated subtitles, no speech recognition',
+ `Chunks: ${chunks} | ${sampleRate} Hz mono PCM16 | ${duration} seconds captured`,
+ `PCM: ${pcmBytes} bytes | WAV: ${wavBytes} bytes | Current peak: ${peak}`,
+ ].join('\n')
+ return `Simulated local subtitle: audio chunk ${chunks} received.`
+ },
+ })],
+})
diff --git a/docs/uncompiled/artplayer-plugin-asr/index.js b/docs/uncompiled/artplayer-plugin-asr/index.js
index 8507077a1..1d240af86 100644
--- a/docs/uncompiled/artplayer-plugin-asr/index.js
+++ b/docs/uncompiled/artplayer-plugin-asr/index.js
@@ -1,247 +1,385 @@
var artplayerPluginAsr = (function() {
"use strict";
- const style = ".art-video-player .art-layer-asr {\n pointer-events: none !important;\n position: absolute;\n z-index: 150;\n inset: 0px;\n display: flex;\n flex-direction: column;\n justify-content: end;\n padding: 0 2%;\n font-size: 1rem;\n gap: var(--art-subtitle-gap);\n padding-bottom: var(--art-subtitle-bottom);\n transition: padding-bottom var(--art-transition-duration) ease;\n text-shadow: var(--art-subtitle-border) 1px 0 1px, var(--art-subtitle-border) 0 1px 1px, var(--art-subtitle-border) -1px 0 1px, var(--art-subtitle-border) 0 -1px 1px, var(--art-subtitle-border) 1px 1px 1px, var(--art-subtitle-border) -1px -1px 1px, var(--art-subtitle-border) 1px -1px 1px, var(--art-subtitle-border) -1px 1px 1px;\n}\n.art-video-player.art-control-show .art-layer-asr {\n padding-bottom: calc(var(--art-control-height) + var(--art-subtitle-bottom));\n}\n";
- function artplayerPluginAsr2(option = {}) {
- const {
- length = 3,
- interval = 100,
- sampleRate = 16e3,
- autoHideTimeout = 1e4,
- onAudioChunk = () => null
- } = option;
- return (art) => {
- let started = false;
- let audioCtx = null;
- let sourceNode = null;
- let recorderNode = null;
- let gainNode = null;
- let bufferChunks = [];
- let timer = null;
- let workletLoaded = false;
- let hideTimer = null;
- let mediaStream = null;
- let mediaStreamSource = null;
- const $asr = art.layers.add({
- name: "asr",
- html: ""
- });
- function splitByPunctuation(text) {
- return text.split(/(?<=[、。!?!?.])\s*/u).map((s) => s.trim()).filter(Boolean).slice(-length);
- }
- function hide() {
- $asr.style.display = "none";
- }
- function append(subtitle) {
- if (typeof subtitle !== "string")
- return;
- clearTimeout(hideTimer);
- hideTimer = setTimeout(hide, autoHideTimeout);
- $asr.style.display = "";
- $asr.innerHTML = splitByPunctuation(subtitle).map((line) => `
${line}
`).join("");
- }
- const recorderProcessorCode = `
- class RecorderProcessor extends AudioWorkletProcessor {
- process(inputs) {
- const input = inputs[0];
- if (input && input[0]) {
- this.port.postMessage(input[0]);
- }
- return true;
- }
- }
- registerProcessor('recorder-processor', RecorderProcessor);
- `;
- const createWorkletBlobUrl = () => {
- const blob = new Blob([recorderProcessorCode], { type: "application/javascript" });
- return URL.createObjectURL(blob);
- };
- function floatTo16BitPCM(float32Array) {
- const len = float32Array.length;
- const buffer = new ArrayBuffer(len * 2);
- const view = new DataView(buffer);
- for (let i = 0; i < len; i++) {
- const s = Math.max(-1, Math.min(1, float32Array[i]));
- view.setInt16(i * 2, s < 0 ? s * 32768 : s * 32767, true);
+ const recorderProcessorCode = `
+class RecorderProcessor extends AudioWorkletProcessor {
+ process(inputs) {
+ const input = inputs[0];
+ if (input && input[0]) {
+ this.port.postMessage(input[0]);
}
- return buffer;
+ return true;
+ }
+}
+registerProcessor('recorder-processor', RecorderProcessor);
+`;
+ class AudioGraph {
+ constructor(video, sampleRate) {
+ this.video = video;
+ this.sampleRate = sampleRate;
+ this.closed = false;
+ this.direct = false;
+ this.workletLoaded = false;
+ }
+ assertOpen() {
+ if (this.closed)
+ throw new Error("Audio capture was closed");
+ }
+ revokeWorklet() {
+ if (this.blobUrl !== void 0) {
+ URL.revokeObjectURL(this.blobUrl);
+ this.blobUrl = void 0;
}
- function pcmToWav(pcmBuffer, sampleRate2) {
- const pcmLength = pcmBuffer.byteLength;
- const wavBuffer = new ArrayBuffer(44 + pcmLength);
- const view = new DataView(wavBuffer);
- const writeString = (offset, str) => {
- for (let i = 0; i < str.length; i++) {
- view.setUint8(offset + i, str.charCodeAt(i));
- }
- };
- writeString(0, "RIFF");
- view.setUint32(4, 36 + pcmLength, true);
- writeString(8, "WAVE");
- writeString(12, "fmt ");
- view.setUint32(16, 16, true);
- view.setUint16(20, 1, true);
- view.setUint16(22, 1, true);
- view.setUint32(24, sampleRate2, true);
- view.setUint32(28, sampleRate2 * 2, true);
- view.setUint16(32, 2, true);
- view.setUint16(34, 16, true);
- writeString(36, "data");
- view.setUint32(40, pcmLength, true);
- new Uint8Array(wavBuffer).set(new Uint8Array(pcmBuffer), 44);
- return wavBuffer;
- }
- async function setupAudioContext() {
- if (audioCtx)
- return audioCtx;
- audioCtx = new (window.AudioContext || window.webkitAudioContext)({ sampleRate });
- if (audioCtx.state === "suspended")
- await audioCtx.resume();
- return audioCtx;
- }
- async function setupAudioSource() {
- if (!sourceNode && art.video) {
- try {
- sourceNode = audioCtx.createMediaElementSource(art.video);
- return sourceNode;
- } catch (err) {
- console.warn("[artplayerPluginAsr] Direct connection failed:", err);
- }
- }
+ }
+ async initialize() {
+ this.assertOpen();
+ const platform = window;
+ const Context = window.AudioContext || platform.webkitAudioContext;
+ if (!Context)
+ throw new Error("AudioContext is not supported");
+ const context = this.context ?? (this.context = new Context({ sampleRate: this.sampleRate }));
+ if (context.state === "suspended")
+ await context.resume();
+ this.assertOpen();
+ if (!this.workletLoaded) {
+ this.blobUrl = URL.createObjectURL(new Blob([recorderProcessorCode], { type: "application/javascript" }));
try {
- if (!mediaStream) {
- mediaStream = await captureAudioFromVideo(art.video);
- }
- if (mediaStream) {
- mediaStreamSource = audioCtx.createMediaStreamSource(mediaStream);
- return mediaStreamSource;
- }
- } catch (err) {
- console.warn("[artplayerPluginAsr] MediaStream fallback failed:", err);
- }
- return null;
- }
- async function captureAudioFromVideo(videoElement) {
- try {
- if (videoElement.captureStream)
- return videoElement.captureStream();
- if (videoElement.mozCaptureStream)
- return videoElement.mozCaptureStream();
- console.warn("[artplayerPluginAsr] captureStream not supported");
- return null;
- } catch (err) {
- console.warn("[artplayerPluginAsr] Error capturing stream:", err);
- return null;
+ await context.audioWorklet.addModule(this.blobUrl);
+ this.workletLoaded = true;
+ } finally {
+ this.revokeWorklet();
}
}
- async function startCapture() {
- if (started)
- return;
+ this.assertOpen();
+ if (!this.source) {
try {
- await setupAudioContext();
- const audioSource = await setupAudioSource();
- if (!audioSource)
+ this.source = context.createMediaElementSource(this.video);
+ this.direct = true;
+ } catch (error) {
+ console.warn("[artplayerPluginAsr] Direct connection failed:", error);
+ const capture = this.video.captureStream || this.video.mozCaptureStream;
+ if (!capture)
throw new Error("Could not establish audio source");
- if (!workletLoaded) {
- const blobUrl = createWorkletBlobUrl();
- await audioCtx.audioWorklet.addModule(blobUrl);
- URL.revokeObjectURL(blobUrl);
- workletLoaded = true;
- }
- gainNode = audioCtx.createGain();
- gainNode.gain.value = 1;
- recorderNode = new AudioWorkletNode(audioCtx, "recorder-processor");
- recorderNode.port.onmessage = (event) => {
- bufferChunks.push(new Float32Array(event.data));
- };
- audioSource.connect(recorderNode);
- audioSource.connect(gainNode);
- gainNode.connect(audioCtx.destination);
- const CHUNK_SAMPLES = sampleRate * (interval / 1e3);
- timer = setInterval(async () => {
- if (bufferChunks.length === 0)
- return;
- let accumulated = new Float32Array(0);
- while (accumulated.length < CHUNK_SAMPLES && bufferChunks.length) {
- const next = bufferChunks.shift();
- const tmp = new Float32Array(accumulated.length + next.length);
- tmp.set(accumulated, 0);
- tmp.set(next, accumulated.length);
- accumulated = tmp;
- }
- if (accumulated.length < CHUNK_SAMPLES)
- return;
- const chunkToSend = accumulated.slice(0, CHUNK_SAMPLES);
- const pcm = floatTo16BitPCM(chunkToSend);
- const wav = pcmToWav(pcm, sampleRate);
- const subtitle = await onAudioChunk({ pcm, wav });
- append(subtitle);
- }, interval);
- started = true;
- } catch (err) {
- console.error("[artplayerPluginAsr] Initialization failed:", err);
- await stopCapture();
+ this.stream = capture.call(this.video);
+ this.source = context.createMediaStreamSource(this.stream);
}
}
- async function stopCapture() {
- if (!started)
- return;
- started = false;
- clearInterval(timer);
- timer = null;
- if (recorderNode) {
- recorderNode.disconnect();
- recorderNode.port.onmessage = null;
- recorderNode = null;
- }
- if (gainNode) {
- gainNode.disconnect();
- gainNode = null;
- }
- bufferChunks = [];
+ }
+ prepare() {
+ this.preparation ?? (this.preparation = this.initialize().catch((error) => {
+ this.preparation = void 0;
+ throw error;
+ }));
+ return this.preparation;
+ }
+ get ownsMediaConnection() {
+ return this.direct;
+ }
+ idle() {
+ const gain = this.gain;
+ this.disconnect();
+ if (this.direct && this.context && this.source) {
+ this.gain = gain || this.context.createGain();
+ if (!gain)
+ this.gain.gain.value = 1;
+ this.source.connect(this.gain);
+ this.gain.connect(this.context.destination);
}
- async function destroy() {
- await stopCapture();
- if (mediaStreamSource) {
- mediaStreamSource.disconnect();
- mediaStreamSource = null;
- }
- if (sourceNode) {
- sourceNode.disconnect();
- sourceNode = null;
- }
- if (mediaStream) {
- mediaStream.getTracks().forEach((track) => track.stop());
- mediaStream = null;
- }
- if (audioCtx) {
- await audioCtx.close();
- audioCtx = null;
- }
- workletLoaded = false;
- }
- art.on("video:volumechange", () => {
- if (gainNode) {
- gainNode.gain.value = art.volume;
- }
- });
- art.on("play", startCapture);
- art.on("pause", stopCapture);
- art.on("destroy", destroy);
- return {
- name: "artplayerPluginAsr",
- stop: destroy,
- hide,
- append
+ }
+ connect(receive) {
+ this.assertOpen();
+ const context = this.context;
+ const source = this.source;
+ if (!context || !source)
+ throw new Error("Audio capture is not prepared");
+ const previousGain = this.gain;
+ this.disconnect();
+ const gain = this.gain = previousGain || context.createGain();
+ if (!previousGain)
+ gain.gain.value = this.direct ? 1 : 0;
+ const recorder = this.recorder = new AudioWorkletNode(context, "recorder-processor");
+ recorder.port.onmessage = (event) => {
+ if (!this.closed && this.recorder === recorder)
+ receive(event.data);
};
+ source.connect(recorder);
+ if (this.direct)
+ source.connect(gain);
+ else recorder.connect(gain);
+ gain.connect(context.destination);
+ }
+ disconnect() {
+ if (this.recorder) {
+ this.recorder.port.onmessage = null;
+ this.recorder.disconnect();
+ this.recorder = void 0;
+ }
+ this.gain?.disconnect();
+ this.gain = void 0;
+ this.source?.disconnect();
+ }
+ async close() {
+ if (this.closed)
+ return;
+ this.closed = true;
+ this.disconnect();
+ this.revokeWorklet();
+ this.stream?.getTracks().forEach((track) => track.stop());
+ this.stream = void 0;
+ const context = this.context;
+ this.context = void 0;
+ this.source = void 0;
+ if (context && context.state !== "closed")
+ await context.close();
+ }
+ }
+ function encodeAudio(samples, sampleRate) {
+ const pcm = new ArrayBuffer(samples.length * 2);
+ const pcmView = new DataView(pcm);
+ for (let index = 0; index < samples.length; index++) {
+ const value = Math.max(-1, Math.min(1, samples[index]));
+ pcmView.setInt16(index * 2, value < 0 ? value * 32768 : value * 32767, true);
+ }
+ const wav = new ArrayBuffer(44 + pcm.byteLength);
+ const header = new DataView(wav);
+ function writeString(offset, value) {
+ for (let index = 0; index < value.length; index++)
+ header.setUint8(offset + index, value.charCodeAt(index));
+ }
+ writeString(0, "RIFF");
+ header.setUint32(4, 36 + pcm.byteLength, true);
+ writeString(8, "WAVE");
+ writeString(12, "fmt ");
+ header.setUint32(16, 16, true);
+ header.setUint16(20, 1, true);
+ header.setUint16(22, 1, true);
+ header.setUint32(24, sampleRate, true);
+ header.setUint32(28, sampleRate * 2, true);
+ header.setUint16(32, 2, true);
+ header.setUint16(34, 16, true);
+ writeString(36, "data");
+ header.setUint32(40, pcm.byteLength, true);
+ new Uint8Array(wav).set(new Uint8Array(pcm), 44);
+ return { pcm, wav };
+ }
+ class SampleQueue {
+ constructor() {
+ this.offset = 0;
+ this.size = 0;
+ }
+ get length() {
+ return this.size;
+ }
+ push(input) {
+ if (input.length === 0)
+ return;
+ const block = { samples: new Float32Array(input) };
+ if (this.tail)
+ this.tail.next = block;
+ else
+ this.head = block;
+ this.tail = block;
+ this.size += input.length;
+ }
+ take(count) {
+ if (!Number.isSafeInteger(count) || count <= 0)
+ throw new RangeError("Sample count must be a positive safe integer");
+ if (count > this.size)
+ return null;
+ const output = new Float32Array(count);
+ let written = 0;
+ while (this.head && written < count) {
+ const samples = this.head.samples;
+ const amount = Math.min(samples.length - this.offset, count - written);
+ output.set(samples.subarray(this.offset, this.offset + amount), written);
+ written += amount;
+ this.offset += amount;
+ if (this.offset === samples.length) {
+ this.head = this.head.next;
+ this.offset = 0;
+ }
+ }
+ if (!this.head)
+ this.tail = void 0;
+ this.size -= count;
+ return output;
+ }
+ clear() {
+ this.head = void 0;
+ this.tail = void 0;
+ this.offset = 0;
+ this.size = 0;
+ }
+ }
+ class Capture {
+ constructor(video, options, append) {
+ this.video = video;
+ this.options = options;
+ this.append = append;
+ this.queue = new SampleQueue();
+ this.closing = Promise.resolve();
+ this.running = false;
+ this.terminal = false;
+ this.epoch = 0;
+ }
+ reset() {
+ this.epoch++;
+ this.pending = void 0;
+ this.queue.clear();
+ }
+ pause() {
+ this.reset();
+ this.running = false;
+ clearInterval(this.timer);
+ this.timer = void 0;
+ this.starting = void 0;
+ this.graph?.idle();
+ }
+ restart() {
+ const active = this.running || Boolean(this.starting);
+ this.pause();
+ if (this.graph && !this.graph.ownsMediaConnection)
+ return this.stop().then(() => active ? this.start() : void 0);
+ return active ? this.start() : Promise.resolve();
+ }
+ start() {
+ if (this.terminal || this.running)
+ return Promise.resolve();
+ if (this.starting)
+ return this.starting;
+ const epoch = this.epoch;
+ const current = () => !this.terminal && this.epoch === epoch;
+ const operation = (async () => {
+ await this.closing;
+ if (!current())
+ return;
+ const { sampleRate, interval } = this.options;
+ const count = Math.floor(sampleRate * interval / 1e3);
+ if (!Number.isSafeInteger(count) || count < 1 || !Number.isFinite(interval) || interval <= 0)
+ throw new Error("Audio chunk length must be positive and finite");
+ const graph = this.graph ?? (this.graph = new AudioGraph(this.video, sampleRate));
+ await graph.prepare();
+ if (!current()) {
+ if (!this.running && this.graph === graph)
+ graph.idle();
+ return;
+ }
+ graph.connect((samples) => {
+ if (!this.running || this.graph !== graph)
+ return;
+ if (this.queue.length + samples.length > Math.max(sampleRate * 60, count * 2)) {
+ console.error("[artplayerPluginAsr] Audio callback backlog exceeded its capture limit");
+ this.pause();
+ return;
+ }
+ this.queue.push(samples);
+ });
+ this.running = true;
+ this.timer = setInterval(() => this.tick(count), interval);
+ })().catch(async (error) => {
+ if (current()) {
+ console.error("[artplayerPluginAsr] Initialization failed:", error);
+ await this.stop();
+ }
+ }).finally(() => {
+ if (this.starting === operation)
+ this.starting = void 0;
+ });
+ this.starting = operation;
+ return operation;
+ }
+ async tick(count) {
+ if (!this.running || this.pending)
+ return;
+ const samples = this.queue.take(count);
+ if (!samples)
+ return;
+ const epoch = this.epoch;
+ const pending = this.pending = {};
+ try {
+ const text = await this.options.onAudioChunk(encodeAudio(samples, this.options.sampleRate));
+ if (this.running && !this.terminal && this.epoch === epoch)
+ this.append(text);
+ } catch (error) {
+ if (this.epoch === epoch && !this.terminal)
+ console.error("[artplayerPluginAsr] Audio callback failed:", error);
+ } finally {
+ if (this.pending === pending)
+ this.pending = void 0;
+ }
+ }
+ stop(terminal = false) {
+ this.terminal || (this.terminal = terminal);
+ this.pause();
+ const graph = this.graph;
+ if (terminal || !graph?.ownsMediaConnection) {
+ this.graph = void 0;
+ this.closing = Promise.all([this.closing, graph?.close()]).then(() => void 0);
+ }
+ return this.closing;
+ }
+ }
+ const style = ".art-video-player .art-layer-asr {\n pointer-events: none !important;\n position: absolute;\n z-index: 150;\n inset: 0px;\n display: flex;\n flex-direction: column;\n justify-content: end;\n padding: 0 2%;\n font-size: 1rem;\n gap: var(--art-subtitle-gap);\n padding-bottom: var(--art-subtitle-bottom);\n transition: padding-bottom var(--art-transition-duration) ease;\n text-shadow: var(--art-subtitle-border) 1px 0 1px, var(--art-subtitle-border) 0 1px 1px, var(--art-subtitle-border) -1px 0 1px, var(--art-subtitle-border) 0 -1px 1px, var(--art-subtitle-border) 1px 1px 1px, var(--art-subtitle-border) -1px -1px 1px, var(--art-subtitle-border) 1px -1px 1px, var(--art-subtitle-border) -1px 1px 1px;\n}\n.art-video-player.art-control-show .art-layer-asr {\n padding-bottom: calc(var(--art-control-height) + var(--art-subtitle-bottom));\n}\n";
+ function createSubtitles(layer, length, autoHideTimeout) {
+ let timer;
+ let destroyed = false;
+ function cancelTimer() {
+ clearTimeout(timer);
+ timer = void 0;
+ }
+ function hide() {
+ if (!destroyed)
+ layer.style.display = "none";
+ }
+ function append(subtitle) {
+ if (destroyed || typeof subtitle !== "string")
+ return;
+ cancelTimer();
+ timer = setTimeout(hide, autoHideTimeout);
+ layer.style.display = "";
+ layer.innerHTML = subtitle.split(/(?<=[、。!?!?.])\s*/u).map((line) => line.trim()).filter(Boolean).slice(-length).map((line) => `${line}
`).join("");
+ }
+ return {
+ append,
+ hide,
+ destroy() {
+ destroyed = true;
+ cancelTimer();
+ }
};
}
- if (typeof document !== "undefined") {
- if (!document.getElementById("artplayer-plugin-asr")) {
- const $style = document.createElement("style");
- $style.id = "artplayer-plugin-asr";
- $style.textContent = style;
- document.head.appendChild($style);
- }
+ function artplayerPluginAsr2(option = {}) {
+ const { length = 3, interval = 100, sampleRate = 16e3, autoHideTimeout = 1e4, onAudioChunk = () => null } = option;
+ return (art) => {
+ const layer = art.layers.add({ name: "asr", html: "" });
+ if (!layer)
+ throw new Error("Could not create ASR subtitle layer");
+ const subtitles = createSubtitles(layer, length, autoHideTimeout);
+ const capture = new Capture(art.video, { interval, sampleRate, onAudioChunk }, subtitles.append);
+ const play = () => capture.start();
+ const pause = () => capture.pause();
+ const restart = () => capture.restart();
+ const stop = () => capture.stop();
+ const destroy = () => {
+ subtitles.destroy();
+ art.off("play", play);
+ art.off("pause", pause);
+ art.off("restart", restart);
+ art.off("destroy", destroy);
+ return capture.stop(true);
+ };
+ art.on("play", play);
+ art.on("pause", pause);
+ art.on("restart", restart);
+ art.on("destroy", destroy);
+ return { name: "artplayerPluginAsr", stop, hide: subtitles.hide, append: subtitles.append };
+ };
+ }
+ Object.defineProperty(artplayerPluginAsr2, "default", { value: artplayerPluginAsr2 });
+ if (typeof document !== "undefined" && !document.getElementById("artplayer-plugin-asr")) {
+ const styleElement = document.createElement("style");
+ styleElement.id = "artplayer-plugin-asr";
+ styleElement.textContent = style;
+ document.head.appendChild(styleElement);
}
return artplayerPluginAsr2;
})();
diff --git a/package.json b/package.json
index 6e1477bf4..9cc1ea159 100644
--- a/package.json
+++ b/package.json
@@ -51,7 +51,7 @@
"ci:build": "yarn build:types && yarn build all && yarn build:i18n && yarn build:ts && yarn build:docs && yarn test:imports",
"test:imports": "node --test test/esm.test.js test/i18n.test.js test/ssr.test.js test/asr-distribution.test.js",
"typecheck": "node scripts/typecheck.mjs",
- "test:unit": "node --test test/asr-encoding.test.js test/asr-lifecycle.test.js test/asr-audio.test.js test/asr.test.js test/jassub.test.js test/multiple-subtitles-merge.test.js test/multiple-subtitles-lifecycle.test.js test/multiple-subtitles-failures.test.js test/multiple-subtitles.test.js test/multiple-subtitles-vendor.test.js test/vtt-thumbnail-parser.test.js test/vtt-thumbnail-lifecycle.test.js test/vtt-thumbnail.test.js test/auto-thumbnail-frames.test.js test/auto-thumbnail-lifecycle.test.js test/auto-thumbnail.test.js test/thumbnail-emitter.test.js test/thumbnail-runtime.test.js test/thumbnail-vendor.test.js test/thumbnail-lifecycle.test.js test/thumbnail-input.test.js test/thumbnail.test.js test/iframe-navigation.test.js test/iframe-boundaries.test.js test/iframe-lifecycle.test.js test/iframe.test.js test/mediabunny.test.js test/mediabunny-shim.test.js test/mediabunny-coordination.test.js test/mediabunny-video.test.js test/mediabunny-audio.test.js test/mediabunny-hls.test.js test/mediabunny-entry.test.js test/mediabunny-capability.test.js test/mediabunny-load.test.js test/mediabunny-input.test.js test/dpip.test.js test/dpip-lifecycle.test.js test/canvas.test.js test/canvas-lifecycle.test.js test/ambilight.test.js test/ambilight-lifecycle.test.js test/ambilight-proxy.test.js test/vast.test.js test/vast-lifecycle.test.js test/ads.test.js test/ads-lifecycle.test.js test/playback.test.js test/dash-control.test.js test/dash-contract.test.js test/dash-lifecycle.test.js test/dash-events.test.js test/hls-control.test.js test/audio-track.test.js test/public-behavior.test.js test/helpers.test.js test/chapter.test.js test/utils.test.js test/resource-scope.test.js test/instance-lifecycle.test.js test/options.test.js test/media-hosts.test.js test/plugins.test.js test/source.test.js test/playback-properties.test.js test/media-events.test.js test/template-resources.test.js test/core-vendor.test.js test/component-resources.test.js test/setting-model.test.js test/setting-layout.test.js test/setting-resources.test.js test/subtitle.test.js test/display-native.test.js test/display-video-fullscreen.test.js test/display-pip.test.js test/display-mini.test.js test/display-sizing.test.js test/display-orientation.test.js test/hotkey.test.js test/listener-registry.test.js test/global-events.test.js test/pointer-events.test.js test/gesture.test.js test/event-scheduling.test.js test/notice.test.js test/fast-forward.test.js test/auto-playback.test.js test/builtin-layers.test.js test/prompt-components.test.js test/screenshot.test.js test/thumbnails.test.js test/progress.test.js test/environment.test.js test/storage.test.js test/facade-properties.test.js test/dom-boundaries.test.js test/initialization.test.js test/entry.test.js test/accessibility-button.test.js test/accessibility-focus.test.js test/accessibility-slider.test.js test/asr-fallback-routing.test.js",
+ "test:unit": "node --test test/asr-encoding.test.js test/asr-lifecycle.test.js test/asr-audio.test.js test/asr.test.js test/jassub.test.js test/multiple-subtitles-merge.test.js test/multiple-subtitles-lifecycle.test.js test/multiple-subtitles-failures.test.js test/multiple-subtitles.test.js test/multiple-subtitles-vendor.test.js test/vtt-thumbnail-parser.test.js test/vtt-thumbnail-lifecycle.test.js test/vtt-thumbnail.test.js test/auto-thumbnail-frames.test.js test/auto-thumbnail-lifecycle.test.js test/auto-thumbnail.test.js test/thumbnail-emitter.test.js test/thumbnail-runtime.test.js test/thumbnail-vendor.test.js test/thumbnail-lifecycle.test.js test/thumbnail-input.test.js test/thumbnail.test.js test/iframe-navigation.test.js test/iframe-boundaries.test.js test/iframe-lifecycle.test.js test/iframe.test.js test/mediabunny.test.js test/mediabunny-shim.test.js test/mediabunny-coordination.test.js test/mediabunny-video.test.js test/mediabunny-audio.test.js test/mediabunny-hls.test.js test/mediabunny-entry.test.js test/mediabunny-capability.test.js test/mediabunny-load.test.js test/mediabunny-input.test.js test/dpip.test.js test/dpip-lifecycle.test.js test/canvas.test.js test/canvas-lifecycle.test.js test/ambilight.test.js test/ambilight-lifecycle.test.js test/ambilight-proxy.test.js test/vast.test.js test/vast-lifecycle.test.js test/ads.test.js test/ads-lifecycle.test.js test/playback.test.js test/dash-control.test.js test/dash-contract.test.js test/dash-lifecycle.test.js test/dash-events.test.js test/hls-control.test.js test/audio-track.test.js test/public-behavior.test.js test/helpers.test.js test/chapter.test.js test/utils.test.js test/resource-scope.test.js test/instance-lifecycle.test.js test/options.test.js test/media-hosts.test.js test/plugins.test.js test/source.test.js test/playback-properties.test.js test/media-events.test.js test/template-resources.test.js test/core-vendor.test.js test/component-resources.test.js test/setting-model.test.js test/setting-layout.test.js test/setting-resources.test.js test/subtitle.test.js test/display-native.test.js test/display-video-fullscreen.test.js test/display-pip.test.js test/display-mini.test.js test/display-sizing.test.js test/display-orientation.test.js test/hotkey.test.js test/listener-registry.test.js test/global-events.test.js test/pointer-events.test.js test/gesture.test.js test/event-scheduling.test.js test/notice.test.js test/fast-forward.test.js test/auto-playback.test.js test/builtin-layers.test.js test/prompt-components.test.js test/screenshot.test.js test/thumbnails.test.js test/progress.test.js test/environment.test.js test/storage.test.js test/facade-properties.test.js test/dom-boundaries.test.js test/initialization.test.js test/entry.test.js test/accessibility-button.test.js test/accessibility-focus.test.js test/accessibility-slider.test.js test/asr-fallback-routing.test.js test/asr-local-example.test.js",
"test:coverage": "node --test test/coverage.test.js && node scripts/coverage.mjs",
"test": "yarn test:node && yarn test:baseline",
"test:browser": "playwright test",
@@ -94,8 +94,9 @@
"check:ci": "node refactor/scripts/ci-workflow.mjs",
"test:ci": "node --test test/ci-summary.test.js refactor/scripts/ci-workflow.test.mjs refactor/scripts/impact.test.mjs test/package-runtime.test.js",
"test:package:runtime": "node scripts/package-runtime.mjs --canonical",
- "test:asr": "node --test test/asr.test.js test/asr-audio.test.js test/asr-encoding.test.js test/asr-lifecycle.test.js test/asr-distribution.test.js test/asr-fallback-routing.test.js",
- "test:asr-types-package": "node refactor/scripts/asr-package-types.mjs"
+ "test:asr": "node --test test/asr.test.js test/asr-audio.test.js test/asr-encoding.test.js test/asr-lifecycle.test.js test/asr-distribution.test.js test/asr-fallback-routing.test.js test/asr-local-example.test.js",
+ "test:asr-types-package": "node refactor/scripts/asr-package-types.mjs",
+ "test:asr-demo": "node refactor/scripts/asr-local-demo.mjs"
},
"browserslist": "last 1 Chrome version",
"devDependencies": {
diff --git a/packages/artplayer-plugin-asr/ARCHITECTURE.md b/packages/artplayer-plugin-asr/ARCHITECTURE.md
index 6651cc2e4..95b2a8a47 100644
--- a/packages/artplayer-plugin-asr/ARCHITECTURE.md
+++ b/packages/artplayer-plugin-asr/ARCHITECTURE.md
@@ -118,6 +118,10 @@ From the repository root:
modes, verifies offline frozen reinstall and file hashes, exercises actual
import/require exports, and rejects invalid uses. Historical declaration errors
are explicit expectations and never counted as candidate success.
+- `yarn test:asr-demo`: actual localhost:8082 docs/Monaco/Run flow in Chromium
+ and Firefox, served script hashes, local PCM statistics, stop/play and destroy.
+ Requires a free port 8082; owns only its temporary dev server. The exact AdSense
+ request is isolated in this test; recognition requests must remain absent.
- `yarn dev artplayer-plugin-asr` and `yarn build artplayer-plugin-asr`: normal
repository development and three-format production builds.
diff --git a/packages/artplayer-plugin-asr/README.md b/packages/artplayer-plugin-asr/README.md
index c45e815b3..3bb980572 100644
--- a/packages/artplayer-plugin-asr/README.md
+++ b/packages/artplayer-plugin-asr/README.md
@@ -46,6 +46,13 @@ known migration gaps and test commands.
[https://artplayer.org](https://artplayer.org/?libs=./uncompiled/artplayer-plugin-asr/index.js&example=asr)
+For local verification without a recognition service, run
+`yarn dev artplayer-plugin-asr --no-open` in the repository and open the
+[local capture demo](http://localhost:8082/?libs=./uncompiled/artplayer-plugin-asr/index.js&example=asr.local).
+It displays PCM/WAV statistics and clearly labelled simulated subtitles, using
+the site's sample video. Stop ASR leaves playback running; pause/play resumes
+capture. The existing `asr` example remains the external-service example.
+
## License
MIT © Harvey Zhao
diff --git a/refactor/baselines/asr-core.json b/refactor/baselines/asr-core.json
new file mode 100644
index 000000000..47fe46b82
--- /dev/null
+++ b/refactor/baselines/asr-core.json
@@ -0,0 +1,174 @@
+{
+ "schemaVersion": 1,
+ "task": "PKG-ASR-05",
+ "sourceCommit": "93208e59e14e3384d0a5f5ffa49f55ee95c218c4",
+ "capturedAt": "2026-09-13T07:20:45.919Z",
+ "association": {
+ "commit": "daf133b22630b4a0eecfa3336bbddab0e9119d96",
+ "file": "packages/artplayer/package.json",
+ "version": "5.3.1",
+ "sha256LF": "862f3697876fe915dd0ada178da766ce823aae7563ed30b3e5b11b811202929c"
+ },
+ "associationScope": "ASR 2.1.0 source commit records core workspace version 5.3.1, which is absent from npm at capture time. The frozen 5.3.0 archive is an adjacent published stable comparison point; it is not that source-associated version, a minimum supported core, or completed browser validation.",
+ "metadata": {
+ "requestedVersion": "5.3.1",
+ "selectedVersion": "5.3.0",
+ "selectionReason": "Expand actual native compatibility coverage with an available adjacent stable npm release; existing 5.4.0 and candidate checks remain separate.",
+ "checks": [
+ {
+ "checkedAt": "2026-09-13T07:20:42.645Z",
+ "url": "https://registry.npmjs.org/artplayer/5.3.1",
+ "method": "GET",
+ "status": 404,
+ "body": "\"version not found: 5.3.1\""
+ },
+ {
+ "checkedAt": "2026-09-13T07:20:43.810Z",
+ "url": "https://registry.npmjs.org/artplayer",
+ "method": "GET",
+ "status": 200,
+ "bodySha256": "560fa27d689284c6e1743835b765e790613b0b11d7255ea0390eb0017a7e9748",
+ "containsRequestedVersion": false,
+ "requestedVersion": "5.3.1",
+ "nearbyVersions": [
+ "5.2.0",
+ "5.2.1",
+ "5.2.2",
+ "5.2.3",
+ "5.2.4",
+ "5.2.5",
+ "5.3.0-beta.0",
+ "5.3.0-beta.1",
+ "5.3.0-beta.2",
+ "5.3.0-beta.3",
+ "5.3.0-beta.4",
+ "5.3.0",
+ "5.3.1-beta.0",
+ "5.3.1-beta.1",
+ "5.4.0"
+ ],
+ "distTags": {
+ "latest": "5.4.0",
+ "beta": "5.3.1-beta.1"
+ }
+ },
+ {
+ "checkedAt": "2026-09-13T07:20:44.012Z",
+ "url": "https://registry.npmjs.org/artplayer/-/artplayer-5.3.1.tgz",
+ "method": "HEAD",
+ "status": 404,
+ "contentType": "application/json"
+ }
+ ],
+ "replayCommand": "@'\nconst urls = ['https://registry.npmjs.org/artplayer/5.3.1', 'https://registry.npmjs.org/artplayer', 'https://registry.npmjs.org/artplayer/-/artplayer-5.3.1.tgz'];\nfor (const url of urls) { const method = url.endsWith('.tgz') ? 'HEAD' : 'GET'; const response = await fetch(url, { method, redirect: 'error', signal: AbortSignal.timeout(30000) }); const body = method === 'HEAD' ? null : await response.text(); console.log({ url, method, status: response.status, body: url.endsWith('/artplayer') && response.ok ? { contains531: Object.hasOwn(JSON.parse(body).versions, '5.3.1'), nearbyVersions: Object.keys(JSON.parse(body).versions).filter(version => /^5\\.[234]\\./.test(version)) } : body }); }\n'@ | & refactor/.cache/toolchains/node-v24.21.0-win-x64/node.exe --input-type=module",
+ "archiveVerificationCommand": "@'\nimport assert from 'node:assert/strict';\nimport fs from 'node:fs';\nimport {execFileSync} from 'node:child_process';\nimport {archiveFiles,ensureArchive,hash,readMember} from './refactor/scripts/releases.mjs';\nconst baseline=JSON.parse(fs.readFileSync('refactor/baselines/asr-core.json','utf8'));\nconst {release,association}=baseline;\nconst archive=await ensureArchive(release);\nassert.deepEqual(archiveFiles(archive),Object.keys(release.files).sort());\nfor(const [member,expected] of Object.entries(release.files)) assert.equal(hash(readMember(archive,member)),expected,member);\nassert.deepEqual(JSON.parse(readMember(archive,'package/package.json')),release.manifest);\nassert.equal(hash(fs.readFileSync(archive),'sha1'),release.registryShasum);\nfor(const field of ['main','module','types','legacy']) assert(Object.hasOwn(release.files,'package/'+release.manifest[field].replace(/^\\.\\//,'')));\nconst source=execFileSync('git',['show',association.commit+':'+association.file],{encoding:'utf8'}).replaceAll('\\r\\n','\\n');\nassert.equal(hash(source),association.sha256LF);\nassert.equal(JSON.parse(source).version,'5.3.1');\nassert.equal(release.manifest.version,'5.3.0');\nconsole.log('Verified ASR adjacent stable core 5.3.0: '+Object.keys(release.files).length+' archive members and distinct 5.3.1 source association');\n'@ | & refactor/.cache/toolchains/node-v24.21.0-win-x64/node.exe --input-type=module"
+ },
+ "release": {
+ "name": "artplayer",
+ "version": "5.3.0",
+ "metadataUrl": "https://registry.npmjs.org/artplayer/5.3.0",
+ "tarball": "https://registry.npmjs.org/artplayer/-/artplayer-5.3.0.tgz",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "sha256": "8649d22785381d2f7729efeb73f384e5810507031e9b47ebe6df79ae5bea309b",
+ "registryShasum": "ecb011d1eed008ee806e2a1850026ee0030fd85f",
+ "registryGitHead": "eb015c7facd42cde2f1af6b79dd19e4662182fdf",
+ "files": {
+ "package/README.md": "2070b94087839a80dc01616a3114cbe2d3a4950018188f433752880daf7843f8",
+ "package/dist/artplayer.js": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "package/dist/artplayer.legacy.js": "16cbdfbae82f91e16aa7654885e82be00647b57652ce81d050bb42ae1e58ed52",
+ "package/dist/artplayer.mjs": "9282f24a395f6ebc8122fddce6faaac2c58f22a05f150b538b954c3ace8b0712",
+ "package/dist/i18n/ar.js": "44b94758cfc7c45179ee1a90ca730b91717fccb5a79d27afd691b61fdfdf51e0",
+ "package/dist/i18n/ar.mjs": "5dd3a7183c81350786e95a5f0431de9c64937a16627c2a44042af7cb33d3d646",
+ "package/dist/i18n/cs.js": "76353dbd1b97f52f3bcd7e71aa9117ca7d76d2b2cbf86426cf3dac64afd7abf2",
+ "package/dist/i18n/cs.mjs": "aa6cb5eaa1ce78fd7d4033affb4f48cff4fedd773bf55f88ccaf3d76dd822cb1",
+ "package/dist/i18n/es.js": "7e43252ba479d87c1edd5244a7c870126aae07c8791c365888fe0ba82dd6e85f",
+ "package/dist/i18n/es.mjs": "7a0aa9698ddcb191fc4f62d1fcd07ee004dbb00053b2920cfcf5fa81f71ea71e",
+ "package/dist/i18n/fa.js": "4b60d3d4f5d5e87686a3af179c9b671b4f432888c6f77ae92fb7025386a9910b",
+ "package/dist/i18n/fa.mjs": "261a81e46d40a1bcad64419d4954036fb49e9fea86682a89aaba277bd52d3c54",
+ "package/dist/i18n/fr.js": "410d9552ad387c191d168b6fff6d21538c57e74d07908ebab2c0dedc3577ed90",
+ "package/dist/i18n/fr.mjs": "d8adfe0ba5eb2208a5241675a084dbd1c4d20d8ac2979fcbcb72bef18827fbfd",
+ "package/dist/i18n/id.js": "4a8fc5d2393a5a19a8ba68429545073035c8803d9d3101b696fbc895d20b22b2",
+ "package/dist/i18n/id.mjs": "b3ac8f8c203a7a64374ac64931d7eb3d912c2e71c4a604ddc4651229cca64c07",
+ "package/dist/i18n/pl.js": "a7c421f0264cd054b8d289e553e77018c547417d8d437f24157ccb1a2cd8c4f6",
+ "package/dist/i18n/pl.mjs": "c58ce3f06411e837c28dbea3d2a68f38045da58de3b73ae5457468a01d526884",
+ "package/dist/i18n/ru.js": "5406ee8662a259af703a930c4e241874e12a811304f3e1d40dd00033e7ff0b52",
+ "package/dist/i18n/ru.mjs": "c17c830da2189d4584c816907b6e8626d8606c7a20565b383c4b768be00e6600",
+ "package/dist/i18n/tr.js": "f82cdbf5feefceff68f78466ca261e1ea1c4975c853543947fc91ffd8107ec46",
+ "package/dist/i18n/tr.mjs": "683b768eeea905793f63bf483d9870af10183a718aba84d8ee794934a8f07b22",
+ "package/dist/i18n/vi.js": "c4f0c224404ce73a807758661c9eaa46fb548eb4519a2ee11304396f268a6a0e",
+ "package/dist/i18n/vi.mjs": "68d10c0bb6e7fe4d82817bca883f04f514d73301ff5dfddf02a0a1e3b2bfbc0a",
+ "package/dist/i18n/zh-tw.js": "1241a6749c088192d1118f91ae36a894ecc198875d4b9bdfe2bbf617803e3806",
+ "package/dist/i18n/zh-tw.mjs": "b28d13355759e2b47d0553617a01ad6b3af76d975681b569bad2e99e48d095ff",
+ "package/package.json": "da526c13939b7a55b08c5c518608fa59c7185a0bab184186d5a1af80d1ea5078",
+ "package/types/artplayer.d.ts": "28cb09ddffb6591372ab01cbde8ff3c3c0db903eea58851dc6561375e740cc3c",
+ "package/types/component.d.ts": "0118ec5dbb9aa48d735169c74bd65149b72c9f99db29dd635cd41ff69707b68d",
+ "package/types/config.d.ts": "bb40a0ca9d200c15bba7ecba0103d4ce8216e428d05c17ec43288d298223bc68",
+ "package/types/cssVar.d.ts": "dd4ff10f9b4d55b3e438abf1ec6239baa3692a110e05f49d883285ce069c3687",
+ "package/types/events.d.ts": "afd56b6939bedecc070eecd2b7440d0903ef8d3107fe41d376bfdb9e0ae3362d",
+ "package/types/i18n.d.ts": "01e7d7e7f775166eed6dbc6b86feb26306302fcbfe33fa01b7e363a14b3ef2b0",
+ "package/types/icons.d.ts": "61ce1b0cb9bc7488263b644419b5fd5a13e72de1493c8113eee81d5174f1234b",
+ "package/types/option.d.ts": "d689b55e3fbc0a9ca9c554b5c9f6c1ae5f1d81aed07c174a557c95633a18a276",
+ "package/types/player.d.ts": "8eb3e3b5822139379ad09f6aad8a0da360fb049bd0ebf4540d128cdd1fb5e994",
+ "package/types/quality.d.ts": "dcca8c0f5b5c25373f85825a274fc3ee8beeffd7c8b2a978468e039ff4946a9e",
+ "package/types/setting.d.ts": "cc87ff5ccb87901e12d2f367ec2e872afd5c029b9f6d0a22d01d7d44a63dfb33",
+ "package/types/subtitle.d.ts": "92f711ad0f7924e609ad4425cd26d19c73eb027cccddc6d89fcf9b8e334db065",
+ "package/types/template.d.ts": "22d64dc2c68f8bd90247755a12bcd233343bb67537591ab08e34900917e1723d",
+ "package/types/utils.d.ts": "65cbb66ab2f5d38085e0a1e5ebea57c320d16f566fb6dc8f8e2dac6cf096c004"
+ },
+ "manifest": {
+ "name": "artplayer",
+ "version": "5.3.0",
+ "description": "ArtPlayer.js is a modern and full featured HTML5 video player",
+ "author": "Harvey Zack ",
+ "license": "MIT",
+ "homepage": "https://artplayer.org",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/zhw2590582/ArtPlayer.git"
+ },
+ "bugs": {
+ "url": "https://github.com/zhw2590582/ArtPlayer/issues"
+ },
+ "keywords": [
+ "html5",
+ "video",
+ "player"
+ ],
+ "exports": {
+ ".": {
+ "types": "./types/artplayer.d.ts",
+ "import": "./dist/artplayer.mjs",
+ "require": "./dist/artplayer.js"
+ },
+ "./legacy": {
+ "types": "./types/artplayer.d.ts",
+ "import": "./dist/artplayer.legacy.js",
+ "require": "./dist/artplayer.legacy.js"
+ },
+ "./i18n/*": {
+ "types": "./types/i18n.d.ts",
+ "import": "./dist/i18n/*.mjs",
+ "require": "./dist/i18n/*.js"
+ }
+ },
+ "main": "./dist/artplayer.js",
+ "module": "./dist/artplayer.mjs",
+ "types": "./types/artplayer.d.ts",
+ "typesVersions": {
+ "*": {
+ "i18n/*": [
+ "types/i18n.d.ts"
+ ],
+ "legacy": [
+ "types/artplayer.d.ts"
+ ]
+ }
+ },
+ "legacy": "./dist/artplayer.legacy.js",
+ "browserslist": "last 1 Chrome version",
+ "dependencies": {
+ "option-validator": "^2.0.6"
+ }
+ }
+ }
+}
diff --git a/refactor/baselines/asr-local-core-validation.json b/refactor/baselines/asr-local-core-validation.json
new file mode 100644
index 000000000..b24470c6e
--- /dev/null
+++ b/refactor/baselines/asr-local-core-validation.json
@@ -0,0 +1,9848 @@
+{
+ "schemaVersion": 1,
+ "task": "PKG-ASR-05",
+ "status": "doing",
+ "capturedAt": "2026-09-13T07:55:04.067Z",
+ "baseCommit": "6d7b9292f867f3c464702eda985c800be7139b4f",
+ "core": {
+ "file": "refactor/baselines/asr-core.json",
+ "sha256": "84f78952f726b982cd3d6fa6ae0bfe276493c20c5222a30e49557985baa2c18a",
+ "tested": "5.3.0",
+ "limitation": "Adjacent real stable npm release; source-associated 5.3.1 was not published. This is not a minimum supported version claim."
+ },
+ "browsers": [
+ {
+ "mode": "main",
+ "file": "refactor/.cache/asr05-core-main/report.json",
+ "sha256": "e6757974cb9a5310cfd943344c11180f9dbe57b5323033b3f285b7feeb1d917f",
+ "passed": 14,
+ "skipped": 7,
+ "rows": [
+ {
+ "title": "ASR 2.0.0 + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-inputs": {
+ "version": "2.0.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
+ "integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "function",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "function"
+ },
+ "asr-native-chunks": [
+ {
+ "samples": 1600,
+ "max": 831,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ }
+ ],
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-inputs": {
+ "version": "2.1.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
+ "integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "function",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "function"
+ },
+ "asr-native-chunks": [
+ {
+ "samples": 1600,
+ "max": 837,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ }
+ ],
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
+ "integrity": null,
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "function",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "function"
+ },
+ "asr-native-chunks": [
+ {
+ "samples": 1600,
+ "max": 860,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 837,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 833,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 838,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 849,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 854,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 842,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 856,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 874,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 838,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 848,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 848,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 835,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 855,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 838,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ }
+ ],
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ },
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR 2.0.0 + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-inputs": {
+ "version": "2.0.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
+ "integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "function",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "function"
+ },
+ "asr-native-chunks": [
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 848,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ }
+ ],
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-inputs": {
+ "version": "2.1.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
+ "integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "function",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "function"
+ },
+ "asr-native-chunks": [
+ {
+ "samples": 1600,
+ "max": 0,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 838,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ }
+ ],
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
+ "integrity": null,
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "function",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "function"
+ },
+ "asr-native-chunks": [
+ {
+ "samples": 1600,
+ "max": 0,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 816,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 834,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 837,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 854,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 856,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 861,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 839,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 841,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 860,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 837,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 836,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 848,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 835,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 855,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 856,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 848,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ }
+ ],
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR 2.0.0 + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
+ "line": 30,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "asr-inputs": {
+ "version": "2.0.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
+ "integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "undefined",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "undefined"
+ },
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
+ "line": 30,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "asr-inputs": {
+ "version": "2.1.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
+ "integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "undefined",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "undefined"
+ },
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
+ "line": 30,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "asr-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
+ "integrity": null,
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "undefined",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "undefined"
+ },
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "2.1.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
+ "capabilities": {
+ "context": "function",
+ "worklet": "function",
+ "capture": "function",
+ "mozCapture": "undefined"
+ },
+ "forcedException": false,
+ "reason": "Native duplicate binding rejection",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "asr-fallback-output": {
+ "playing": {
+ "external": 0.08759580548385439,
+ "asr": [
+ 0.087899306149661
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4260,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4248,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ },
+ "muted": {
+ "external": 0,
+ "asr": [
+ 0.08888106836226659
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4173,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4280,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4307,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ }
+ },
+ "asr-fallback-stop": {
+ "external": 0.08800560294657865,
+ "asr": [
+ 0.08881805520302591
+ ],
+ "contexts": [
+ "closed"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4173,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4280,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4307,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ },
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
+ "capabilities": {
+ "context": "function",
+ "worklet": "function",
+ "capture": "function",
+ "mozCapture": "undefined"
+ },
+ "forcedException": false,
+ "reason": "Native duplicate binding rejection",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "asr-fallback-output": {
+ "playing": {
+ "external": 0.08774684209113336,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4260,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4190,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ },
+ "muted": {
+ "external": 0,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4272,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4280,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4264,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ }
+ },
+ "asr-fallback-stop": {
+ "external": 0.08774527208819846,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "closed"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4272,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4280,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4264,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ },
+ "asr-fallback-restart": {
+ "external": 0.08869046588295236,
+ "asr": [
+ 0,
+ 0,
+ 0
+ ],
+ "contexts": [
+ "closed",
+ "closed",
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ],
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ],
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4192,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ },
+ {
+ "max": 4263,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ },
+ {
+ "max": 4250,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ },
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ },
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ },
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ },
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "2.1.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
+ "capabilities": {
+ "context": "function",
+ "worklet": "function",
+ "capture": "function",
+ "mozCapture": "function"
+ },
+ "forcedException": true,
+ "reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "asr-fallback-output": {
+ "playing": {
+ "external": 0.08778351516353888,
+ "asr": [
+ 0.08778351516353888
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4190,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4248,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ },
+ "muted": {
+ "external": 0,
+ "asr": [
+ 0.08879284699356789
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4248,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4272,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4264,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ }
+ },
+ "asr-fallback-stop": {
+ "external": 0.08777358503840857,
+ "asr": [
+ 0.0887048021485559
+ ],
+ "contexts": [
+ "closed"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4248,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4272,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4264,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ },
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
+ "capabilities": {
+ "context": "function",
+ "worklet": "function",
+ "capture": "function",
+ "mozCapture": "function"
+ },
+ "forcedException": true,
+ "reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "asr-fallback-output": {
+ "playing": {
+ "external": 0.08778351516353888,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4260,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4190,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ },
+ "muted": {
+ "external": 0,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4272,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4280,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4264,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ }
+ },
+ "asr-fallback-stop": {
+ "external": 0.08785763309746902,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "closed"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4272,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4280,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4264,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ },
+ "asr-fallback-restart": {
+ "external": 0.08866202715264984,
+ "asr": [
+ 0,
+ 0,
+ 0
+ ],
+ "contexts": [
+ "closed",
+ "closed",
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ],
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ],
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4303,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ },
+ {
+ "max": 4187,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ },
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ },
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ },
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit has no native WebAudio",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
+ "line": 26,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "2.1.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
+ "capabilities": {
+ "context": "undefined",
+ "worklet": "undefined",
+ "capture": "undefined",
+ "mozCapture": "undefined"
+ },
+ "forcedException": false,
+ "reason": "Native duplicate binding rejection",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit has no native WebAudio",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
+ "line": 26,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
+ "capabilities": {
+ "context": "undefined",
+ "worklet": "undefined",
+ "capture": "undefined",
+ "mozCapture": "undefined"
+ },
+ "forcedException": false,
+ "reason": "Native duplicate binding rejection",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native playback volume and mute",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-playback-inputs": {
+ "version": "2.1.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "meter": "Native unity analyser inserted between plugin gain and destination",
+ "physicalAudioOutput": false
+ },
+ "asr-playback-levels": [
+ {
+ "volume": 1,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.08881764562325266,
+ "pcm": [
+ 0.08854556077453393,
+ 0.08918138211352816,
+ 0.08873534933928903
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 0.5,
+ "rms": 0.0219901536157136,
+ "pcm": [
+ 0.08873534933928903,
+ 0.043647279661655436,
+ 0.04382086162955032
+ ]
+ },
+ {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 0.25,
+ "rms": 0.0054889531309362605,
+ "pcm": [
+ 0.02211387667166409,
+ 0.022039641530578833,
+ 0.022042078815232683
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": true,
+ "gain": 0.5,
+ "rms": 0,
+ "pcm": [
+ 0.022042078815232683,
+ 0,
+ 0
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 0.5,
+ "rms": 0.02191927817418262,
+ "pcm": [
+ 0,
+ 0.044221219268294705,
+ 0.04391207156375677
+ ]
+ }
+ ],
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native playback volume and mute",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-playback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "meter": "Native unity analyser inserted between plugin gain and destination",
+ "physicalAudioOutput": false
+ },
+ "asr-playback-levels": [
+ {
+ "volume": 1,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.08775039797229604,
+ "pcm": [
+ 0.0883050442445268,
+ 0.08866511123953921,
+ 0.08770036081168703
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.044496866833520055,
+ "pcm": [
+ 0.04430890862445003,
+ 0.04448419659243059,
+ 0.04456807190430078
+ ]
+ },
+ {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.021973417620766544,
+ "pcm": [
+ 0.021858652213692063,
+ 0.022264040427332873,
+ 0.02183564101232853
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": true,
+ "gain": 1,
+ "rms": 0,
+ "pcm": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.044194221418538814,
+ "pcm": [
+ 0.04396084522213605,
+ 0.044432151516888986,
+ 0.04395881000500656
+ ]
+ }
+ ],
+ "asr-playback-restart": {
+ "stopped": {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.021930222420306306,
+ "pcm": [
+ 0.04396084522213605,
+ 0.044432151516888986,
+ 0.04395881000500656
+ ]
+ },
+ "resumed": {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.02198937129965953,
+ "pcm": [
+ 0.021835771272249227,
+ 0.021951527145485605,
+ 0.0220374083355859
+ ]
+ }
+ },
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native playback volume and mute",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-playback-inputs": {
+ "version": "2.1.0",
+ "core": "published-5.3.0",
+ "pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "meter": "Native unity analyser inserted between plugin gain and destination",
+ "physicalAudioOutput": false
+ },
+ "asr-playback-levels": [
+ {
+ "volume": 1,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.08904967086996865,
+ "pcm": [
+ 0.08855371516543255,
+ 0.08921661917491973,
+ 0.0887490847119168
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 0.5,
+ "rms": 0.02194707375892373,
+ "pcm": [
+ 0.04911424321146587,
+ 0.04358297176566231,
+ 0.04456905132518692
+ ]
+ },
+ {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 0.25,
+ "rms": 0.0054856791510426665,
+ "pcm": [
+ 0.022042319293990177,
+ 0.02202451103888762,
+ 0.021970316086764842
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": true,
+ "gain": 0.5,
+ "rms": 0,
+ "pcm": [
+ 0.021970316086764842,
+ 0,
+ 0
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 0.5,
+ "rms": 0.02180771275588487,
+ "pcm": [
+ 0.04424242432221851,
+ 0.04445195000984118,
+ 0.04375251366720176
+ ]
+ }
+ ],
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native playback volume and mute",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-playback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "meter": "Native unity analyser inserted between plugin gain and destination",
+ "physicalAudioOutput": false
+ },
+ "asr-playback-levels": [
+ {
+ "volume": 1,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.08845187451056867,
+ "pcm": [
+ 0.08764581308134357,
+ 0.08868078531214164,
+ 0.08832207248279998
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.04470364254885018,
+ "pcm": [
+ 0.04473653542507642,
+ 0.044296986412714734,
+ 0.04427968413643314
+ ]
+ },
+ {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.021941455332821807,
+ "pcm": [
+ 0.021898050861181014,
+ 0.021977304642445614,
+ 0.021992905994729868
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": true,
+ "gain": 1,
+ "rms": 0,
+ "pcm": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.04423520425706149,
+ "pcm": [
+ 0.04411792860634942,
+ 0.04414790888442041,
+ 0.04427520692950356
+ ]
+ }
+ ],
+ "asr-playback-restart": {
+ "stopped": {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.02180771275588487,
+ "pcm": [
+ 0.04414790888442041,
+ 0.04427520692950356,
+ 0.04411625608131577
+ ]
+ },
+ "resumed": {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.022096318138962425,
+ "pcm": [
+ 0.022102102897757048,
+ 0.021997384739638595,
+ 0.022145946735187876
+ ]
+ }
+ },
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR 2.1.0 + published-5.3.0: native playback volume and mute",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
+ "line": 24,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native playback volume and mute",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
+ "line": 24,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ }
+ ]
+ },
+ {
+ "mode": "legacy",
+ "file": "refactor/.cache/asr05-core-legacy/report.json",
+ "sha256": "fd92232605d556eee4b138dc3afd9299cae8093d24c77c9abcaf29ffa033f870",
+ "passed": 6,
+ "skipped": 3,
+ "rows": [
+ {
+ "title": "ASR candidate + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
+ "integrity": null,
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "function",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "function"
+ },
+ "asr-native-chunks": [
+ {
+ "samples": 1600,
+ "max": 860,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 837,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 833,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 838,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 854,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 856,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 858,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 838,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 836,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 848,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 855,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 856,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ }
+ ],
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ },
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
+ "integrity": null,
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "function",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "function"
+ },
+ "asr-native-chunks": [
+ {
+ "samples": 1600,
+ "max": 0,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 843,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 849,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 853,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 856,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 854,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 860,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 840,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 847,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 850,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 839,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a"
+ },
+ {
+ "samples": 1600,
+ "max": 860,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 837,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 851,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 836,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 852,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 848,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 835,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 855,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ },
+ {
+ "samples": 1600,
+ "max": 856,
+ "wavBytes": 3244,
+ "sampleRate": 16000,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=second"
+ }
+ ],
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native Worklet supplies local PCM with owned stop and destroy",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
+ "line": 30,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "asr-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
+ "integrity": null,
+ "candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "media": "local mono AAC 440 Hz tone",
+ "networkService": false
+ },
+ "asr-audio-capabilities": {
+ "AudioContext": "undefined",
+ "webkitAudioContext": "undefined",
+ "AudioWorkletNode": "undefined"
+ },
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
+ "capabilities": {
+ "context": "function",
+ "worklet": "function",
+ "capture": "function",
+ "mozCapture": "undefined"
+ },
+ "forcedException": false,
+ "reason": "Native duplicate binding rejection",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "asr-fallback-output": {
+ "playing": {
+ "external": 0.08836286954075324,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4190,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4248,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ },
+ "muted": {
+ "external": 0,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4272,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4280,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4264,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ }
+ },
+ "asr-fallback-stop": {
+ "external": 0.08847688295327304,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "closed"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4280,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4264,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4307,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ },
+ "asr-fallback-restart": {
+ "external": 0.08896275868833134,
+ "asr": [
+ 0,
+ 0,
+ 0
+ ],
+ "contexts": [
+ "closed",
+ "closed",
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ],
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ],
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4187,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ },
+ {
+ "max": 4247,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ },
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ },
+ {
+ "name": "InvalidStateError",
+ "message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
+ }
+ ]
+ },
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ },
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
+ "capabilities": {
+ "context": "function",
+ "worklet": "function",
+ "capture": "function",
+ "mozCapture": "function"
+ },
+ "forcedException": true,
+ "reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "asr-fallback-output": {
+ "playing": {
+ "external": 0.08808533079322367,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4252,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4215,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ },
+ "muted": {
+ "external": 0,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4190,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4248,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ }
+ },
+ "asr-fallback-stop": {
+ "external": 0.08915156994592305,
+ "asr": [
+ 0
+ ],
+ "contexts": [
+ "closed"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4248,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ },
+ {
+ "max": 4253,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ },
+ "asr-fallback-restart": {
+ "external": 0.08854340470395779,
+ "asr": [
+ 0,
+ 0,
+ 0
+ ],
+ "contexts": [
+ "closed",
+ "closed",
+ "running"
+ ],
+ "owner": "running",
+ "streams": [
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ],
+ [
+ {
+ "kind": "audio",
+ "state": "ended"
+ }
+ ],
+ [
+ {
+ "kind": "audio",
+ "state": "live"
+ }
+ ]
+ ],
+ "chunks": [
+ {
+ "max": 4303,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ },
+ {
+ "max": 4187,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ },
+ {
+ "max": 4255,
+ "source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
+ "samples": 1600
+ }
+ ],
+ "failures": [
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ },
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ },
+ {
+ "name": "InvalidStateError",
+ "message": "Controlled duplicate binding rejection for native capture test"
+ }
+ ]
+ },
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native capture fallback does not create a second audible route",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit has no native WebAudio",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
+ "line": 26,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "asr-fallback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
+ "capabilities": {
+ "context": "undefined",
+ "worklet": "undefined",
+ "capture": "undefined",
+ "mozCapture": "undefined"
+ },
+ "forcedException": false,
+ "reason": "Native duplicate binding rejection",
+ "externalContext": "Native media-element source remains owned and running",
+ "physicalOutput": false
+ },
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native playback volume and mute",
+ "project": "chromium",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-playback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "meter": "Native unity analyser inserted between plugin gain and destination",
+ "physicalAudioOutput": false
+ },
+ "asr-playback-levels": [
+ {
+ "volume": 1,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.08898306406531939,
+ "pcm": [
+ 0.0894328088150841,
+ 0.08866579205858138,
+ 0.08853906133305224
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.04392166999635796,
+ "pcm": [
+ 0.0438102006301307,
+ 0.04395067395512343,
+ 0.043990099165068054
+ ]
+ },
+ {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.021916953534556336,
+ "pcm": [
+ 0.021977743831376403,
+ 0.02211544997380876,
+ 0.021961727298633844
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": true,
+ "gain": 1,
+ "rms": 0,
+ "pcm": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.043763810629487906,
+ "pcm": [
+ 0.04433052376797802,
+ 0.04436997564188689,
+ 0.04423426329342776
+ ]
+ }
+ ],
+ "asr-playback-restart": {
+ "stopped": {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.022028915495856324,
+ "pcm": [
+ 0.04433052376797802,
+ 0.04436997564188689,
+ 0.04423426329342776
+ ]
+ },
+ "resumed": {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.02222320599314681,
+ "pcm": [
+ 0.02223829049764877,
+ 0.02223631143255198,
+ 0.021993585963128177
+ ]
+ }
+ },
+ "browser-evidence": {
+ "browser": "153.0.8010.12",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": [
+ {
+ "url": "http://127.0.0.1:8084/test/audio-tone.m4a",
+ "resourceType": "media",
+ "failure": {
+ "errorText": "net::ERR_ABORTED"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native playback volume and mute",
+ "project": "firefox",
+ "status": "passed",
+ "annotations": [],
+ "attachments": {
+ "asr-playback-inputs": {
+ "version": "candidate",
+ "core": "published-5.3.0",
+ "pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
+ "mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "meter": "Native unity analyser inserted between plugin gain and destination",
+ "physicalAudioOutput": false
+ },
+ "asr-playback-levels": [
+ {
+ "volume": 1,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.08871753788516626,
+ "pcm": [
+ 0.08875130490791655,
+ 0.08890701992565436,
+ 0.08920240530317293
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.04409666785652131,
+ "pcm": [
+ 0.04375921454632788,
+ 0.044481406588906966,
+ 0.04379653660867505
+ ]
+ },
+ {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.021918516594794716,
+ "pcm": [
+ 0.02210523778150055,
+ 0.022011146476621064,
+ 0.022056979185988795
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": true,
+ "gain": 1,
+ "rms": 0,
+ "pcm": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "volume": 0.5,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.043957970746232866,
+ "pcm": [
+ 0.040473390588105736,
+ 0.044428100534579455,
+ 0.04394389895311505
+ ]
+ }
+ ],
+ "asr-playback-restart": {
+ "stopped": {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.02212420989215519,
+ "pcm": [
+ 0.040473390588105736,
+ 0.044428100534579455,
+ 0.04394389895311505
+ ]
+ },
+ "resumed": {
+ "volume": 0.25,
+ "muted": false,
+ "gain": 1,
+ "rms": 0.022041241856029566,
+ "pcm": [
+ 0.022084269828554902,
+ 0.022116605584977755,
+ 0.022185660974106063
+ ]
+ }
+ },
+ "browser-evidence": {
+ "browser": "155.0",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ },
+ {
+ "title": "ASR candidate + published-5.3.0: native playback volume and mute",
+ "project": "webkit",
+ "status": "skipped",
+ "annotations": [
+ {
+ "type": "skip",
+ "description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
+ "location": {
+ "file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
+ "line": 24,
+ "column": 14
+ }
+ }
+ ],
+ "attachments": {
+ "browser-evidence": {
+ "browser": "26.6",
+ "platform": "win32",
+ "manifest": {
+ "kind": "artplayer-browser-test",
+ "resources": {
+ "/candidate/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117
+ },
+ "/compiled/artplayer.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/uncompiled/artplayer/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer\\src\\index.ts"
+ },
+ "sha256": "d9aeee649395b78eb30b38dcaefb3c19c731c21b08e356485bac7cda08ead242",
+ "bytes": 378117,
+ "aliasOf": "/candidate/artplayer.js"
+ },
+ "/candidate/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529
+ },
+ "/compiled/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/uncompiled/artplayer-plugin-chapter/index.js": {
+ "source": {
+ "kind": "workspace-build",
+ "entry": "packages\\artplayer-plugin-chapter\\src\\index.ts"
+ },
+ "sha256": "1a8eb891d3690e2526e78a2e53183a25367b1d02a5fd349d821548edb731ee3a",
+ "bytes": 8529,
+ "aliasOf": "/candidate/artplayer-plugin-chapter.js"
+ },
+ "/published/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.4.0",
+ "integrity": "sha512-2B+plbx8N2yNsjK4nJU3+EOG8TULm1LRZk/QPkWRAMEX2Ee/MSnZG/WJYz8kcoZxZuLKcQ3uXifqLuPxZOH29A==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "f1db1fa3406aa6d41baa7c554749429a8e79f99d56a794bde23345eb9c07573f",
+ "bytes": 134037
+ },
+ "/published/artplayer-plugin-chapter.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "1.1.0",
+ "integrity": "sha512-ji66Lr2K2S+OjFMuMby3yq+pefWlOC51Sbpop/DIr2N6w3F0smrF+YZbshN1Dy8/Tx1TYpT7N6WkkZWy5Jix1w==",
+ "member": "package/dist/artplayer-plugin-chapter.js"
+ },
+ "sha256": "c2aaee11bf1db765433b01d9f8dd3978e41fa4d39655db00ebd03fc0be3e35e0",
+ "bytes": 4973
+ },
+ "/test/pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.mp4"
+ },
+ "sha256": "0ad1d7ad286aec6e0fa9e27fc1e487e7277df2e603e30040fb942365763d0233",
+ "bytes": 251538
+ },
+ "/test/pattern.webm": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/pattern.webm"
+ },
+ "sha256": "9d3c2b3dec9581a599de2d6732992ef7846790e0d1368e6e131bd339b39e984f",
+ "bytes": 162073
+ },
+ "/published-4.5.5/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.5",
+ "integrity": "sha512-HeAKbe3od9ZgFQVSBCg5FlixJsefDEBC8txVG19yZgvzlcJuiurxPlasap+GHuex/ftG+jmSXnTRtuNrTki2Kw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "3467e626ca29d2f7884e75eb75b8b90de74a25761ffa2e272576c9b5a98fa0a4",
+ "bytes": 153582
+ },
+ "/published-5.1.7/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.1.7",
+ "integrity": "sha512-N/QdNlTwsIHUsWOHMPj0pq97v3qmgXZHfhy1q7I+8YN3/XakJiJJyVJgGaeBjU+y/fUIrzBhwpBaX+NFwK9/qw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "484ccc3f22446ec6fd0dd8b8a5602c740b601d55097a1ae043262d92aab35357",
+ "bytes": 155940
+ },
+ "/published-4.5.9/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "4.5.9",
+ "integrity": "sha512-x5JzGdXkw4GFdztvPkVnm8TOWrGDcvGKKMPb9wuP6UfyftlLM3UQctmmalfAMnQSxugJwq2Kb9ix9OG2SgbJJA==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "09a9f09e3a64a02ca7c27af710d7254f886f0bfb09fd54bf3a728ce863e5a497",
+ "bytes": 156408
+ },
+ "/published-5.3.0/artplayer.js": {
+ "source": {
+ "kind": "npm-release",
+ "version": "5.3.0",
+ "integrity": "sha512-yExO39MpEg4P+bxgChxx1eJfiUPE4q1QQRLCmqGhlsj+ANuaoEkR8hF93LdI5ZyrAcIbJkuEndxEiUoKobifDw==",
+ "member": "package/dist/artplayer.js"
+ },
+ "sha256": "54ffaf7598b910d5a88d2d2eec1aa6faa806583915b99b892dd32129c53e421a",
+ "bytes": 159238
+ },
+ "/test/audio-tone.m4a": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/audio-tone.m4a"
+ },
+ "sha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
+ "bytes": 132436
+ },
+ "/test/thumbnail-pattern.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/thumbnail-pattern.mp4"
+ },
+ "sha256": "4c977be04d97f6ac1342ac4959b8e61678f390d88a088430e4d0200137a03d1c",
+ "bytes": 752916
+ },
+ "/test/auto-thumbnail-timeline.mp4": {
+ "source": {
+ "kind": "generated-media",
+ "file": "test/browser/media/auto-thumbnail-timeline.mp4"
+ },
+ "sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994",
+ "bytes": 8602
+ },
+ "/test/declaration-cues.vtt": {
+ "source": {
+ "kind": "test-subtitles",
+ "file": "test/browser/media/declaration-cues.vtt"
+ },
+ "sha256": "5d149d4e641ce41cbb83376835c03daf1fb89f3b9f568fa59e064d51e2b57704",
+ "bytes": 54
+ },
+ "/test/thumbnail-grid.svg": {
+ "source": {
+ "kind": "test-thumbnail-grid",
+ "file": "test/browser/media/thumbnail-grid.svg"
+ },
+ "sha256": "bb3f1ec9895d37def77ca4b192d3cd73577a2668558cc99de1588f511d65d3e6",
+ "bytes": 14969
+ },
+ "/test/legacy-safe-area.js": {
+ "source": {
+ "kind": "frozen-own-source",
+ "file": "test/helpers/legacy-safe-area.js",
+ "commit": "ccf77c4e"
+ },
+ "sha256": "ce0368618ef6363b78271b8bcc7973abd0478e797cc464ddd912929e6dfa501a",
+ "bytes": 795
+ },
+ "/test/iframe-boundary-child.html": {
+ "source": {
+ "kind": "iframe-fixture",
+ "file": "test/browser/iframe-boundary-child.html"
+ },
+ "sha256": "4721de185f606de7d576e71395127257e476765455e2a947ded79df4ebed901a",
+ "bytes": 1451
+ },
+ "/assets/sample/video.mp4": {
+ "source": {
+ "kind": "docs-media",
+ "file": "docs/assets/sample/video.mp4"
+ },
+ "sha256": "30a2de667ba267b6bc605edcee1c4bd728c048ed76f500ea0e73d1f1a6f8f980",
+ "bytes": 5818706
+ },
+ "/test/performance.js": {
+ "source": {
+ "kind": "adapted-baseline-fixture",
+ "file": "refactor/fixtures/performance.js"
+ },
+ "sha256": "2318f39bdb5f3a3348d755cb4335907ae4adc944be3a435839c1bba201e81500",
+ "bytes": 8994
+ }
+ }
+ },
+ "state": {
+ "url": "http://127.0.0.1:8084/test/player.html?core=published-5.3.0",
+ "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15",
+ "media": null
+ },
+ "errors": [],
+ "consoleErrors": [],
+ "failedRequests": []
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "editor": {
+ "file": "refactor/.cache/asr05-editor/run-ftkiCx/report.json",
+ "sha256": "ee79bf286c9adb787a31c6158803ea1eb017d32efbda285ac69fcc2f4b7e3d9f",
+ "startedAt": "2026-09-13T07:47:56.998Z",
+ "finishedAt": "2026-09-13T07:48:44.086Z",
+ "node": "v24.21.0",
+ "platform": "win32",
+ "sourceAndBuildLfSha256": {
+ "packages/artplayer-plugin-asr/src/audio-graph.ts": "80e0becb48d8856b4067fd2d76e3c01235504a3948a8758f37470e9e1eddadbc",
+ "packages/artplayer-plugin-asr/src/capture.ts": "15580482978be74c933a4e9b1ce447b7b317bb1bfd14171def91882e375e239a",
+ "packages/artplayer-plugin-asr/src/encoding.ts": "a1dbc731d5d47a6ae313728cf45e96250e7bf8c6e00a9e071781acc366235944",
+ "packages/artplayer-plugin-asr/src/index.ts": "e8c14622919878f472b4168cf5719fe457673eb11d0eb15f4a5703d38fca3df0",
+ "packages/artplayer-plugin-asr/src/sample-queue.ts": "8b634ac5536bfed7938f0c63a0325371e6f9754489d43305e93240d304cca9d3",
+ "packages/artplayer-plugin-asr/src/subtitles.ts": "204e6899c80fe07ec67a2b010a62cd1fbc861f60df77638537006de9f96fe566",
+ "packages/artplayer-plugin-asr/src/types.ts": "9c919e1e0df597831c8c88471fbcdb726c7c762aca27670bd09aed8c8549307e",
+ "packages/artplayer-plugin-asr/src/worklet.ts": "d957bed81652862a46bd7ad21d4c5600a465e51f85d03c4e6c511910a7e556c6",
+ "scripts/dev.js": "a611ebdea8bd3ffe811ecb3fa47796a038cf708bb72d30aee2bb12bc61c33c08",
+ "scripts/utils.js": "7b8a4b881284ad0df9d1a9a525025fd5713f6788d71271f08d7f420ae21cc1de",
+ "scripts/projects.js": "a88d5da78a0d50c4ac92a37ea5594a833b169a51d45b5442d3af4d97ffa16965",
+ "scripts/rebuild.js": "56b90edf29597550476c9d2c9ce3d79720d3bf421c4ee9e6a6890b77cca9615a",
+ "package.json": "a32a6bacb5760257df12a6e1e5735cda79c2436691067e07213cea42f91f9ec2",
+ "yarn.lock": "6dfb6c5b0154bcd3adc279e12c4393db66a6ec52274002adf2d5ab93caa05d4b",
+ "packages/artplayer-plugin-asr/package.json": "781b1eebefdff5fdc234b793ff9d6d8263275115ccff4c4d90c55eca942f2444"
+ },
+ "coreProd": {
+ "file": "docs/compiled/artplayer.js",
+ "sha256": "6dc8ca6d6eb34aa8a056cbc31328efd634530b3c5c60f0014cb7ce719fabc335",
+ "lfSha256": "6dc8ca6d6eb34aa8a056cbc31328efd634530b3c5c60f0014cb7ce719fabc335"
+ },
+ "scriptSha256": "51d4008cbb774408611ceac51f3af500f994de9ca1a9b180c7ecf16c42247390",
+ "mediaSha256": "3fead8b75f830eeb4832ffac5c3911ab323823ad1312c2a94f51bd03b0ba92f3",
+ "serverCommand": [
+ "D:\\github\\ArtPlayer\\refactor\\.cache\\toolchains\\node-v24.21.0-win-x64\\node.exe",
+ "D:\\github\\ArtPlayer\\refactor\\.cache\\toolchains\\yarn-1.22.22\\package\\bin\\yarn.js",
+ "dev",
+ "artplayer-plugin-asr",
+ "--no-open"
+ ],
+ "serverCleanupExitCode": 0,
+ "port8082Released": true,
+ "docsChanges": [
+ {
+ "at": "2026-09-13T07:47:58.132Z",
+ "event": "change",
+ "filename": "uncompiled"
+ },
+ {
+ "at": "2026-09-13T07:47:58.393Z",
+ "event": "rename",
+ "filename": "uncompiled\\artplayer-plugin-asr\\index.js"
+ },
+ {
+ "at": "2026-09-13T07:47:58.409Z",
+ "event": "change",
+ "filename": "uncompiled\\artplayer-plugin-asr"
+ },
+ {
+ "at": "2026-09-13T07:47:58.410Z",
+ "event": "rename",
+ "filename": "uncompiled\\artplayer-plugin-asr\\index.js"
+ },
+ {
+ "at": "2026-09-13T07:47:58.410Z",
+ "event": "change",
+ "filename": "uncompiled\\artplayer-plugin-asr"
+ },
+ {
+ "at": "2026-09-13T07:47:58.410Z",
+ "event": "change",
+ "filename": "uncompiled\\artplayer-plugin-asr\\index.js"
+ }
+ ],
+ "browsers": [
+ {
+ "engine": "chromium",
+ "version": "153.0.8010.12",
+ "status": "passed",
+ "checks": [
+ "Actual Monaco example and native playback produce nonzero PCM and simulated subtitle",
+ "Stop ASR settles while native playback advances and capture statistics remain stopped",
+ "Pause/play resumes after stop and ordinary pause preserves one native context",
+ "Actual Run Code destroys old player/context, installs one new player, and native sampling resumes",
+ "Final destroy closes every observed native AudioContext and empties instance registry"
+ ],
+ "responses": [
+ {
+ "url": "http://localhost:8082/compiled/artplayer.js",
+ "status": 200,
+ "sha256": "6dc8ca6d6eb34aa8a056cbc31328efd634530b3c5c60f0014cb7ce719fabc335",
+ "diskSha256": "6dc8ca6d6eb34aa8a056cbc31328efd634530b3c5c60f0014cb7ce719fabc335",
+ "bytes": 208598
+ },
+ {
+ "url": "http://localhost:8082/uncompiled/artplayer-plugin-asr/index.js",
+ "status": 200,
+ "sha256": "d2a542abc5ba421ed189206e38e7540eb135b31a2560b07cfad9c405def35a62",
+ "diskSha256": "d2a542abc5ba421ed189206e38e7540eb135b31a2560b07cfad9c405def35a62",
+ "bytes": 13748
+ },
+ {
+ "url": "http://localhost:8082/assets/example/asr.local.js",
+ "status": 200,
+ "sha256": "32371e51ac5f55edaa146002e7e4594ec056bf198db8b1e62e6d68ec2ea48f30",
+ "diskSha256": "32371e51ac5f55edaa146002e7e4594ec056bf198db8b1e62e6d68ec2ea48f30",
+ "bytes": 2252
+ }
+ ],
+ "firstStatistics": "Local capture only - simulated subtitles, no speech recognition\nChunks: 22 | 16000 Hz mono PCM16 | 5.50 seconds captured\nPCM: 176000 bytes | WAV: 176968 bytes | Current peak: 26",
+ "blockedAdvertising": [
+ "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662"
+ ],
+ "expectedMediaCancellations": [
+ {
+ "url": "http://localhost:8082/assets/sample/steve-jobs.mp4",
+ "error": "net::ERR_ABORTED",
+ "phase": "run-cleanup"
+ },
+ {
+ "url": "http://localhost:8082/assets/sample/steve-jobs.mp4",
+ "error": "net::ERR_ABORTED",
+ "phase": "destroy-cleanup"
+ }
+ ],
+ "navigationPhases": [
+ "initial-load",
+ "run-cleanup"
+ ],
+ "artifacts": [
+ {
+ "file": "refactor/.cache/asr05-editor/run-ftkiCx/chromium-playing.png",
+ "sha256": "7fd5994bffc789c3f08e9d4990b3626f9e68e0872c967a595816dceba9f0a90d"
+ },
+ {
+ "file": "refactor/.cache/asr05-editor/run-ftkiCx/chromium-rerun.png",
+ "sha256": "04534789cd9ffc142b5d1c3eef2e69571a99eb69ff31b02fcc9803321fbaa0cc"
+ },
+ {
+ "file": "refactor/.cache/asr05-editor/run-ftkiCx/chromium-trace.zip",
+ "sha256": "d2740839f2640ab34760c8cf01e24dbb0de3b1e363c2efc98127108089e06cdc"
+ }
+ ]
+ },
+ {
+ "engine": "firefox",
+ "version": "155.0",
+ "status": "passed",
+ "checks": [
+ "Actual Monaco example and native playback produce nonzero PCM and simulated subtitle",
+ "Stop ASR settles while native playback advances and capture statistics remain stopped",
+ "Pause/play resumes after stop and ordinary pause preserves one native context",
+ "Actual Run Code destroys old player/context, installs one new player, and native sampling resumes",
+ "Final destroy closes every observed native AudioContext and empties instance registry"
+ ],
+ "responses": [
+ {
+ "url": "http://localhost:8082/compiled/artplayer.js",
+ "status": 200,
+ "sha256": "6dc8ca6d6eb34aa8a056cbc31328efd634530b3c5c60f0014cb7ce719fabc335",
+ "diskSha256": "6dc8ca6d6eb34aa8a056cbc31328efd634530b3c5c60f0014cb7ce719fabc335",
+ "bytes": 208598
+ },
+ {
+ "url": "http://localhost:8082/uncompiled/artplayer-plugin-asr/index.js",
+ "status": 200,
+ "sha256": "d2a542abc5ba421ed189206e38e7540eb135b31a2560b07cfad9c405def35a62",
+ "diskSha256": "d2a542abc5ba421ed189206e38e7540eb135b31a2560b07cfad9c405def35a62",
+ "bytes": 13748
+ },
+ {
+ "url": "http://localhost:8082/assets/example/asr.local.js",
+ "status": 200,
+ "sha256": "32371e51ac5f55edaa146002e7e4594ec056bf198db8b1e62e6d68ec2ea48f30",
+ "diskSha256": "32371e51ac5f55edaa146002e7e4594ec056bf198db8b1e62e6d68ec2ea48f30",
+ "bytes": 2252
+ }
+ ],
+ "firstStatistics": "Local capture only - simulated subtitles, no speech recognition\nChunks: 26 | 16000 Hz mono PCM16 | 6.50 seconds captured\nPCM: 208000 bytes | WAV: 209144 bytes | Current peak: 9787",
+ "blockedAdvertising": [
+ "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662"
+ ],
+ "expectedMediaCancellations": [],
+ "navigationPhases": [
+ "initial-load",
+ "run-cleanup"
+ ],
+ "artifacts": [
+ {
+ "file": "refactor/.cache/asr05-editor/run-ftkiCx/firefox-playing.png",
+ "sha256": "e1b16c8bcb77da068d6cb09a0bbd4e615ae9629b8ba7dbe3335ddbab32ec961d"
+ },
+ {
+ "file": "refactor/.cache/asr05-editor/run-ftkiCx/firefox-rerun.png",
+ "sha256": "a6c738378ec98dae6ee6f63d5498530112ccaec1b63536eacaa501da6099d3cf"
+ },
+ {
+ "file": "refactor/.cache/asr05-editor/run-ftkiCx/firefox-trace.zip",
+ "sha256": "d4246f35d5b2af0ed4cca06ecf8f17f66dd5c376bd125b8f8735f0a210fc0356"
+ }
+ ]
+ }
+ ]
+ },
+ "unit": {
+ "tests": 216,
+ "failed": 0,
+ "newExampleTests": 3,
+ "file": "refactor/.cache/asr05-unit.log",
+ "sha256": "f0a990a73657246e2b2c69a4223128eaf05266f0c59b9e35c34d9deff118f9ce"
+ },
+ "limitations": [
+ "Windows WebKit lacks native WebAudio; 10 cases explicitly skipped.",
+ "Firefox fallback forces binding rejection; natural external ownership remains ASR-FOREIGN-01.",
+ "CORS, audio-track combinations, Safari and physical devices remain unfinished.",
+ "Local PCM and simulated captions do not validate an external recognition service; SDK-11 remains open."
+ ],
+ "releaseReady": false
+}
diff --git a/refactor/changes/2026-09-13-PKG-ASR-05-local-core-checkpoint.md b/refactor/changes/2026-09-13-PKG-ASR-05-local-core-checkpoint.md
new file mode 100644
index 000000000..dba292fe1
--- /dev/null
+++ b/refactor/changes/2026-09-13-PKG-ASR-05-local-core-checkpoint.md
@@ -0,0 +1,49 @@
+# PKG-ASR-05 检查点:相邻稳定核心与本地编辑器
+
+本记录是 ASR-05 的局部进展,任务保持 doing。ASR-07/08 已独立修复原生音量和
+捕获回退漏声;本检查点扩大核心对照并建立无需识别服务的真实演示页验证。
+
+## 核心来源与实测范围
+
+ASR 来源提交的核心 manifest 写作 5.3.1,但 npm 精确版本接口和 tarball 均 404,
+完整版本目录也没有 5.3.1。`asr-core.json` 记录准确请求、UTC 时间与响应摘要;
+来源提交关联不能被当成正式发布,也不能把缺失的版本列为测试通过。
+
+选择真实、相邻稳定发布 5.3.0 作为额外对照,冻结 registry integrity、SHA256、
+41 个成员、入口和来源说明。它不是最低支持承诺,也不是那个未发布的 5.3.1。
+浏览器服务器核验实际 tarball 后新增 `/published-5.3.0/artplayer.js`,三个 ASR
+原生测试组均纳入此核心。
+
+正式 main 产物下的 5.3.0 组合:14 通过/7 能力跳过,含 2.0/2.1 历史观察及候选。
+正式 legacy 候选另 6 通过/3 能力跳过。覆盖 PCM/WAV、字幕、暂停/切源/stop恢复、
+最终清理、线性音量及回退静音输出。Firefox 回退仍明确使用受控绑定拒绝,不能
+视为自然解决 ASR-FOREIGN-01。全部候选产物哈希对应 ASR-08。
+
+## 无服务演示与真实 Run
+
+新增 `docs/assets/example/asr.local.js`,沿用已有同源 steve-jobs.mp4。每个 PCM/WAV
+分块显示计数、字节、采样率、时长和峰值,字幕明确标注 Simulated,不冒充语音识别。
+Stop ASR 等待公开 stop;播放继续,pause/play 恢复采集;销毁后的晚回调不再写 UI。
+原 asr 示例保留其 URL 与外部服务逻辑,未在本项改写。
+
+三个受控示例测试执行实际示例文本,禁用 fetch/WS/XHR/EventSource/sendBeacon
+识别路径,并检查统计、异步 stop 及销毁期间返回。与既有 ASR 组合为 216 项通过。
+
+`yarn test:asr-demo` 自启真实 repo dev 服务,访问 localhost:8082 的 docs/Monaco,
+不替换插件脚本。在 Chromium/Firefox 用真实播放控件和 Run Code 验证非零 PCM、
+模拟字幕、stop 时视频时间继续前进、暂停/恢复、重复 Run 销毁旧实例/context,以及
+最终所有 context 关闭。实际响应与磁盘脚本哈希比较,并保存源代码/构建配置指纹、
+请求、trace 和截图。只隔离准确的 AdSense 请求,不允许外部识别请求。
+
+此脚本针对当前 Windows 环境验收,8082 被占用时退出;只停止自己启动的进程树,
+检查释放端口。子代理独立实现和运行,主代理复核脚本、报告与相关输入后整合。
+具体核心/编辑器报告摘要见 [检查点证据](../baselines/asr-local-core-validation.json)。
+
+## 未完成范围
+
+ASR-05 继续保留跨源/CORS、audio-track 组合、Firefox 外部双 owner、macOS/iOS及
+物理设备门槛;SDK-11 仍不宣称真实识别服务已验证。新增本地示例不等于服务验收。
+ASR-06 的完整发行文档/导出及后续主版本准备仍独立执行。本项没有生产源码改动,
+正式 dist/compiled 沿用 ASR-08;真实 dev 命令正常生成并更新 uncompiled 演示产物。
+没有整仓 CI、推送或发布。台账与第三方记录区分已有证据
+和这些未完成项,不因单个演示通过而把整包标 done。
diff --git a/refactor/plan.md b/refactor/plan.md
index 23a4a6a89..639767167 100644
--- a/refactor/plan.md
+++ b/refactor/plan.md
@@ -532,7 +532,7 @@
- PKG-ASR-02: [记录](changes/2026-09-13-PKG-ASR-02-audio-baseline.md) [记录](baselines/asr-audio-validation.json)
- PKG-ASR-03: [记录](changes/2026-09-13-PKG-ASR-03-audio-ownership.md) [记录](baselines/asr-ownership-validation.json)
- PKG-ASR-04: [记录](changes/2026-09-13-PKG-ASR-04-public-types.md) [记录](baselines/asr-types-validation.json) [记录](baselines/asr-type-diagnostics.json)
-- PKG-ASR-05: [记录](baselines/asr-volume-validation.json) [记录](baselines/asr-fallback-validation.json)
+- PKG-ASR-05: [记录](baselines/asr-volume-validation.json) [记录](baselines/asr-fallback-validation.json) [记录](baselines/asr-core.json) [记录](baselines/asr-local-core-validation.json) [记录](changes/2026-09-13-PKG-ASR-05-local-core-checkpoint.md)
- PKG-ADS-01: [记录](baselines/ads-release.json) [记录](baselines/ads-contract.md) [记录](baselines/ads-contract-validation.json) [记录](changes/2026-09-12-PKG-ADS-01-contract.md) [记录](scripts/ads-contract.test.mjs)
- PKG-ADS-02: [记录](changes/2026-09-12-PKG-ADS-02-tests.md) [记录](ads-validation.md) [记录](baselines/ads-validation.json)
- PKG-ADS-03: [记录](changes/2026-09-12-PKG-ADS-03-lifecycle.md) [记录](ads-validation.md) [记录](baselines/ads-lifecycle-validation.json)
diff --git a/refactor/progress.md b/refactor/progress.md
index e06c99846..5af62b3ea 100644
--- a/refactor/progress.md
+++ b/refactor/progress.md
@@ -1,5 +1,18 @@
# 进度与证据
+## PKG-ASR-05 本地编辑器与相邻核心检查点
+
+真实 npm 5.3.0 核心扩大对照:main 14过/7能力跳过,legacy 6过/3能力跳过。
+实际 localhost:8082 docs/Monaco 在 Chromium、Firefox 均通过非零 PCM、stop保留
+播放、暂停恢复、Run销毁旧实例并重采集、最终清理;216项ASR测试通过。新增可
+重放的 yarn test:asr-demo,保存真实响应哈希、trace、截图及自有进程清理证据。
+见[检查点](changes/2026-09-13-PKG-ASR-05-local-core-checkpoint.md)与
+[证据](baselines/asr-local-core-validation.json)。源关联5.3.1未发布,5.3.0不作最低
+支持承诺。ASR-05保持doing,CORS、audio-track、Firefox外部归属和设备范围待完成。
+227项:129 done、17 doing、81 todo;208风险。子代理成果经主代理复核整合,
+本检查点单独提交;没有推送或发布。
+
+
## PKG-ASR-08 回退漏声修复完成,ASR-05 继续
独立审查指出 captureStream 回退额外接扬声器;Chromium 原生两个候选核心确实在
diff --git a/refactor/scripts/asr-local-demo.mjs b/refactor/scripts/asr-local-demo.mjs
new file mode 100644
index 000000000..1e7a93c01
--- /dev/null
+++ b/refactor/scripts/asr-local-demo.mjs
@@ -0,0 +1,265 @@
+import assert from 'node:assert/strict'
+import { execFileSync, spawn } from 'node:child_process'
+import { createHash } from 'node:crypto'
+import fs from 'node:fs'
+import net from 'node:net'
+import path from 'node:path'
+import process from 'node:process'
+import { fileURLToPath } from 'node:url'
+import { chromium, expect, firefox } from '@playwright/test'
+
+// Windows verification only: owns its Yarn process tree and a separate report directory.
+assert.equal(process.platform, 'win32', 'This replay uses Windows taskkill process-tree cleanup')
+const root = fileURLToPath(new URL('../../', import.meta.url))
+const evidenceRoot = path.join(root, 'refactor/.cache/asr05-editor')
+fs.mkdirSync(evidenceRoot, { recursive: true })
+const output = fs.mkdtempSync(path.join(evidenceRoot, 'run-'))
+const report = { startedAt: new Date().toISOString(), node: process.version, platform: process.platform, output, browsers: [] }
+const sha256 = bytes => createHash('sha256').update(bytes).digest('hex')
+const lfHash = file => sha256(fs.readFileSync(path.join(root, file), 'utf8').replace(/\r\n/gu, '\n'))
+function sourceSnapshot() {
+ const directory = path.join(root, 'packages/artplayer-plugin-asr/src')
+ const files = fs.readdirSync(directory).sort().filter(name => name.endsWith('.ts')).map(name => `packages/artplayer-plugin-asr/src/${name}`)
+ files.push('scripts/dev.js', 'scripts/utils.js', 'scripts/projects.js', 'scripts/rebuild.js', 'package.json', 'yarn.lock', 'packages/artplayer-plugin-asr/package.json')
+ return Object.fromEntries(files.map(file => [file, lfHash(file)]))
+}
+report.head = execFileSync('git', ['rev-parse', 'HEAD'], { cwd: root, encoding: 'utf8', windowsHide: true }).trim()
+report.sourceAndBuildLfSha256 = sourceSnapshot()
+report.coreProd = { file: 'docs/compiled/artplayer.js', sha256: sha256(fs.readFileSync(path.join(root, 'docs/compiled/artplayer.js'))), lfSha256: lfHash('docs/compiled/artplayer.js') }
+report.scriptSha256 = sha256(fs.readFileSync(fileURLToPath(import.meta.url)))
+report.mediaSha256 = sha256(fs.readFileSync(path.join(root, 'docs/assets/sample/steve-jobs.mp4')))
+const pageUrl = 'http://localhost:8082/?libs=./uncompiled/artplayer-plugin-asr/index.js&example=asr.local'
+const scriptFiles = {
+ '/compiled/artplayer.js': 'docs/compiled/artplayer.js',
+ '/uncompiled/artplayer-plugin-asr/index.js': 'docs/uncompiled/artplayer-plugin-asr/index.js',
+ '/assets/example/asr.local.js': 'docs/assets/example/asr.local.js',
+}
+
+async function verifyFreePort() {
+ const probe = net.createServer()
+ await new Promise((resolve, reject) => {
+ probe.once('error', reject)
+ probe.listen(8082, resolve)
+ })
+ await new Promise((resolve, reject) => probe.close(error => error ? reject(error) : resolve()))
+}
+
+async function validate(browserType) {
+ const result = { engine: browserType.name(), navigations: [], requests: [], requestFailures: [], errors: [], consoleErrors: [], blockedAdvertising: [], responses: [], checks: [] }
+ report.browsers.push(result)
+ const browser = await browserType.launch({ headless: true })
+ result.version = browser.version()
+ const context = await browser.newContext({ viewport: { width: 1440, height: 1000 } })
+ await context.tracing.start({ screenshots: true, snapshots: true, sources: true })
+ const page = await context.newPage()
+ let phase = 'initial-load'
+ page.on('framenavigated', (frame) => {
+ if (frame === page.mainFrame())
+ result.navigations.push({ url: frame.url(), phase })
+ })
+ const responseReads = []
+ page.on('pageerror', error => result.errors.push(error.message))
+ page.on('console', (message) => {
+ if (message.type() === 'error')
+ result.consoleErrors.push({ text: message.text(), location: message.location() })
+ })
+ page.on('request', request => result.requests.push({ url: request.url(), method: request.method(), type: request.resourceType() }))
+ page.on('requestfailed', request => result.requestFailures.push({ url: request.url(), error: request.failure()?.errorText, phase }))
+ page.on('websocket', socket => result.requests.push({ url: socket.url(), type: 'websocket' }))
+ page.on('response', (response) => {
+ const pathname = new URL(response.url()).pathname
+ if (!scriptFiles[pathname])
+ return
+ responseReads.push((async () => {
+ const bytes = await response.body()
+ const disk = fs.readFileSync(path.join(root, scriptFiles[pathname]))
+ const captured = { url: response.url(), status: response.status(), sha256: sha256(bytes), diskSha256: sha256(disk), bytes: bytes.length }
+ result.responses.push(captured)
+ fs.writeFileSync(path.join(output, `${result.engine}-${path.basename(scriptFiles[pathname])}`), bytes)
+ assert.equal(captured.sha256, captured.diskSha256, `Served file drift: ${pathname}`)
+ assert.equal(captured.status, 200)
+ })())
+ })
+ await page.route('https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js*', async (route) => {
+ result.blockedAdvertising.push(route.request().url())
+ await route.abort('blockedbyclient')
+ })
+ await context.addInitScript(() => {
+ localStorage.setItem('prod', 'true')
+ window.asrContexts = []
+ const NativeContext = window.AudioContext || window.webkitAudioContext
+ window.AudioContext = class extends NativeContext {
+ constructor(options) {
+ super(options)
+ window.asrContexts.push(this)
+ }
+ }
+ })
+ const statistics = page.locator('.art-layer-asr-local-statistics')
+ const playControl = page.locator('.art-control-playAndPause')
+ const chunks = () => statistics.textContent().then(text => Number(/Chunks: (\d+)/u.exec(text)?.[1] || 0))
+ const nonzero = async () => {
+ await expect.poll(async () => Number(/Current peak: (\d+)/u.exec(await statistics.textContent())?.[1] || 0), { timeout: 30000 }).toBeGreaterThan(0)
+ await expect(page.locator('.art-layer-asr')).toContainText('Simulated local subtitle: audio chunk')
+ }
+ try {
+ await page.goto(pageUrl)
+ await expect.poll(() => page.evaluate(() => Boolean(window.art?.isReady && window.art?.plugins.artplayerPluginAsr)), { timeout: 30000 }).toBe(true)
+ const editor = await page.evaluate(() => ({
+ models: window.monaco.editor.getModels().filter(model => model.getLanguageId() === 'javascript').map(model => model.getValue()),
+ coreVersion: window.Artplayer.version,
+ pluginVersion: window.artplayerPluginAsr.version,
+ source: window.art.video.currentSrc,
+ userAgent: navigator.userAgent,
+ }))
+ result.editor = editor
+ assert(editor.models.includes(fs.readFileSync(path.join(root, scriptFiles['/assets/example/asr.local.js']), 'utf8')))
+ assert.equal(editor.source, 'http://localhost:8082/assets/sample/steve-jobs.mp4')
+ await playControl.press('Enter')
+ await nonzero()
+ phase = 'capture'
+ result.firstStatistics = await statistics.textContent()
+ result.checks.push('Actual Monaco example and native playback produce nonzero PCM and simulated subtitle')
+ await page.screenshot({ path: path.join(output, `${result.engine}-playing.png`), fullPage: true })
+
+ await page.locator('.art-video-player').hover()
+ await page.locator('.art-control-asr-local-stop').click()
+ await expect(statistics).toContainText('Local capture stopped.')
+ const stoppedAt = await page.evaluate(() => window.art.currentTime)
+ await expect.poll(() => page.evaluate(() => window.art.currentTime), { timeout: 10000 }).toBeGreaterThan(stoppedAt + 0.8)
+ await expect(statistics).toContainText('Local capture stopped.')
+ assert.equal(await page.evaluate(() => window.art.playing), true)
+ assert.deepEqual(await page.evaluate(() => window.asrContexts.map(context => context.state)), ['running'])
+ result.checks.push('Stop ASR settles while native playback advances and capture statistics remain stopped')
+
+ await playControl.press('Enter')
+ await expect.poll(() => page.evaluate(() => window.art.playing)).toBe(false)
+ await playControl.press('Enter')
+ await nonzero()
+ const beforePause = await chunks()
+ await playControl.press('Enter')
+ await expect.poll(() => page.evaluate(() => window.art.playing)).toBe(false)
+ await page.waitForTimeout(600)
+ assert.equal(await chunks(), beforePause)
+ await playControl.press('Enter')
+ await expect.poll(chunks).toBeGreaterThan(beforePause)
+ assert.equal(await page.evaluate(() => window.asrContexts.length), 1)
+ result.checks.push('Pause/play resumes after stop and ordinary pause preserves one native context')
+
+ await page.evaluate(() => {
+ window.asrOldArt = window.art
+ })
+ phase = 'run-cleanup'
+ await page.locator('.run').click()
+ await expect.poll(() => page.evaluate(() => Boolean(window.art !== window.asrOldArt && window.art?.isReady)), { timeout: 30000 }).toBe(true)
+ await expect.poll(() => page.evaluate(() => window.asrContexts[0].state)).toBe('closed')
+ assert.equal(await page.evaluate(() => window.asrOldArt.isDestroy), true)
+ assert.equal(await page.evaluate(() => window.Artplayer.instances.length), 1)
+ await expect(page.locator('.art-video-player')).toHaveCount(1)
+ await playControl.press('Enter')
+ await nonzero()
+ phase = 'rerun-capture'
+ assert.deepEqual(await page.evaluate(() => window.asrContexts.map(context => context.state)), ['closed', 'running'])
+ result.checks.push('Actual Run Code destroys old player/context, installs one new player, and native sampling resumes')
+ await page.screenshot({ path: path.join(output, `${result.engine}-rerun.png`), fullPage: true })
+ phase = 'destroy-cleanup'
+ await page.evaluate(() => window.art.destroy(true))
+ await expect.poll(() => page.evaluate(() => window.asrContexts.every(context => context.state === 'closed'))).toBe(true)
+ assert.equal(await page.evaluate(() => window.Artplayer.instances.length), 0)
+ result.checks.push('Final destroy closes every observed native AudioContext and empties instance registry')
+ await Promise.all(responseReads)
+ for (const pathname of Object.keys(scriptFiles))
+ assert(result.responses.some(response => new URL(response.url).pathname === pathname), `Missing actual served script: ${pathname}`)
+ const unexpectedNetwork = result.requests.filter(({ url }) => {
+ const parsed = new URL(url)
+ return !['localhost', '127.0.0.1'].includes(parsed.hostname) && !['blob:', 'data:'].includes(parsed.protocol) && !result.blockedAdvertising.includes(url)
+ })
+ assert.deepEqual(unexpectedNetwork, [], 'Only local media/code and the explicitly aborted advertising request are permitted')
+ const mediaUrl = 'http://localhost:8082/assets/sample/steve-jobs.mp4'
+ result.expectedMediaCancellations = result.requestFailures.filter(({ url, error, phase }) => url === mediaUrl && ['net::ERR_ABORTED', 'NS_BINDING_ABORTED'].includes(error) && ['run-cleanup', 'destroy-cleanup'].includes(phase))
+ assert.deepEqual(result.requestFailures.filter(failure => !result.blockedAdvertising.includes(failure.url) && !result.expectedMediaCancellations.includes(failure)), [], 'Unexpected failed local requests')
+ assert.deepEqual(result.consoleErrors.filter(({ text, location }) => {
+ const chromiumAdvertising = /^Failed to load resource: net::ERR_BLOCKED_BY_CLIENT(?:\.Inspector)?$/u.test(text) && result.blockedAdvertising.includes(location.url)
+ const firefoxAdvertising = text.includes('Cross-Origin Request Blocked:') && result.blockedAdvertising.some(url => text.includes(url))
+ return !chromiumAdvertising && !firefoxAdvertising
+ }), [], 'Console errors must be attributable to the explicitly blocked advertising URL')
+ assert.deepEqual(result.errors, [])
+ assert.equal(result.navigations.filter(({ phase }) => phase === 'capture' || phase === 'rerun-capture').length, 0, 'The dev server reloaded the page during sampling')
+ result.status = 'passed'
+ }
+ catch (error) {
+ result.status = 'failed'
+ result.error = error.stack
+ await page.screenshot({ path: path.join(output, `${result.engine}-failure.png`), fullPage: true }).catch(() => {})
+ throw error
+ }
+ finally {
+ await Promise.allSettled(responseReads)
+ await context.tracing.stop({ path: path.join(output, `${result.engine}-trace.zip`) })
+ await browser.close()
+ }
+}
+
+let server
+let serverLog = ''
+let docsWatcher
+report.docsChanges = []
+try {
+ await verifyFreePort()
+ docsWatcher = fs.watch(path.join(root, 'docs'), { recursive: true }, (event, filename) => report.docsChanges.push({ at: new Date().toISOString(), event, filename }))
+ const yarn = path.join(root, 'refactor/.cache/toolchains/yarn-1.22.22/package/bin/yarn.js')
+ server = spawn(process.execPath, [yarn, 'dev', 'artplayer-plugin-asr', '--no-open'], {
+ cwd: root,
+ windowsHide: true,
+ env: { ...process.env, PATH: `${path.dirname(process.execPath)}${path.delimiter}${process.env.PATH}` },
+ stdio: ['ignore', 'pipe', 'pipe'],
+ })
+ report.serverPid = server.pid
+ report.serverCommand = [process.execPath, yarn, 'dev', 'artplayer-plugin-asr', '--no-open']
+ server.stdout.on('data', (data) => {
+ serverLog += data
+ })
+ server.stderr.on('data', (data) => {
+ serverLog += data
+ })
+ await expect.poll(() => {
+ assert.equal(server.exitCode, null, serverLog)
+ return serverLog.includes('Watching') && serverLog.includes('Built in')
+ }, { timeout: 30000 }).toBe(true)
+ for (const browserType of [chromium, firefox]) {
+ try {
+ await validate(browserType)
+ }
+ catch (error) {
+ process.exitCode = 1
+ console.error(`${browserType.name()}: ${error.message}`)
+ }
+ }
+ assert.deepEqual(sourceSnapshot(), report.sourceAndBuildLfSha256, 'ASR source/build configuration changed during validation; rerun for a stable candidate')
+}
+catch (error) {
+ report.error = error.stack
+ process.exitCode = 1
+}
+finally {
+ docsWatcher?.close()
+ if (server?.pid && server.exitCode === null) {
+ report.serverCleanupExitCode = await new Promise((resolve) => {
+ const kill = spawn('taskkill', ['/PID', String(server.pid), '/T', '/F'], { windowsHide: true, stdio: 'ignore' })
+ kill.once('exit', resolve)
+ })
+ try {
+ assert.equal(report.serverCleanupExitCode, 0, 'Owned Yarn process tree cleanup failed')
+ await verifyFreePort()
+ report.port8082Released = true
+ }
+ catch (error) {
+ report.cleanupError = error.stack
+ process.exitCode = 1
+ }
+ }
+ report.finishedAt = new Date().toISOString()
+ fs.writeFileSync(path.join(output, 'server.log'), serverLog)
+ fs.writeFileSync(path.join(output, 'report.json'), `${JSON.stringify(report, null, 2)}\n`)
+ console.log(JSON.stringify({ output, browsers: report.browsers.map(({ engine, status }) => ({ engine, status })), error: report.error }, null, 2))
+}
diff --git a/refactor/tasks.json b/refactor/tasks.json
index 207abb253..50e5dab26 100644
--- a/refactor/tasks.json
+++ b/refactor/tasks.json
@@ -2711,7 +2711,10 @@
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
"evidence": [
"baselines/asr-volume-validation.json",
- "baselines/asr-fallback-validation.json"
+ "baselines/asr-fallback-validation.json",
+ "baselines/asr-core.json",
+ "baselines/asr-local-core-validation.json",
+ "changes/2026-09-13-PKG-ASR-05-local-core-checkpoint.md"
]
},
{
diff --git a/refactor/third-party.json b/refactor/third-party.json
index f6c1eaede..036156225 100644
--- a/refactor/third-party.json
+++ b/refactor/third-party.json
@@ -1241,10 +1241,11 @@
],
"sourceFiles": [
"packages/artplayer-plugin-asr/src/index.ts",
- "docs/assets/example/asr.js"
+ "docs/assets/example/asr.js",
+ "docs/assets/example/asr.local.js"
],
"contract": "Core plugin supplies PCM to caller onAudioChunk. Example fetches an external ASR endpoint and opens its returned WebSocket; not an embedded ASR SDK or a verified service.",
- "validationStatus": "Source integration observed; complete real SDK/service/device matrix not yet verified.",
+ "validationStatus": "Native PCM/Worklet, volume and lifecycle verified on Chromium/Firefox with candidate, 5.4.0 and adjacent stable 5.3.0 cores; fallback Firefox selection is explicitly controlled, with foreign ownership still open. Offline docs example verifies local audio only. Windows WebKit, physical devices and actual external recognition service remain unverified.",
"demoPathsSource": "refactor/baselines/demo-inventory.json"
},
{
diff --git a/test/asr-local-example.test.js b/test/asr-local-example.test.js
new file mode 100644
index 000000000..24b06662d
--- /dev/null
+++ b/test/asr-local-example.test.js
@@ -0,0 +1,92 @@
+import assert from 'node:assert/strict'
+import fs from 'node:fs'
+// eslint-disable-next-line test/no-import-node-test -- Demo lifecycle uses the repository runner.
+import test from 'node:test'
+import vm from 'node:vm'
+import { deferredAudio } from './helpers/asr-audio.js'
+
+const code = fs.readFileSync(new URL('../docs/assets/example/asr.local.js', import.meta.url), 'utf8')
+
+function example() {
+ const requests = []
+ const statistics = { textContent: '' }
+ let instance
+ let option
+ let asrOption
+ const stop = deferredAudio()
+ function forbidden(...args) {
+ requests.push(args)
+ throw new Error('The local ASR example must not open a recognition connection')
+ }
+ const context = vm.createContext({
+ document: { createElement: () => statistics },
+ Artplayer: class {
+ isDestroy = false
+ plugins = { artplayerPluginAsr: { stop: () => stop.promise } }
+ constructor(value) {
+ option = value
+ instance = this
+ }
+ },
+ artplayerPluginAsr(value) {
+ asrOption = value
+ return () => ({ name: 'artplayerPluginAsr' })
+ },
+ fetch: forbidden,
+ WebSocket: forbidden,
+ XMLHttpRequest: forbidden,
+ EventSource: forbidden,
+ navigator: { sendBeacon: forbidden },
+ })
+ vm.runInContext(code, context, { timeout: 1000 })
+ return { statistics, instance, option, asrOption, requests, stop }
+}
+
+function chunk() {
+ const pcm = new ArrayBuffer(8000)
+ const wav = new ArrayBuffer(8044)
+ const samples = new DataView(pcm)
+ samples.setInt16(0, -32768, true)
+ samples.setInt16(2, 32767, true)
+ new DataView(wav).setUint32(24, 16000, true)
+ return { pcm, wav }
+}
+
+test('ASR local example uses a real same-site sample and reports PCM/WAV without a recognition connection', () => {
+ const environment = example()
+ assert.equal(environment.option.url, '/assets/sample/steve-jobs.mp4')
+ assert.ok(fs.statSync(new URL(`../docs${environment.option.url}`, import.meta.url)).size > 0)
+ assert.equal(environment.option.layers[0].html, environment.statistics)
+ assert.equal(environment.asrOption.interval, 250)
+ assert.equal(environment.asrOption.onAudioChunk(chunk()), 'Simulated local subtitle: audio chunk 1 received.')
+ assert.match(environment.statistics.textContent, /Chunks: 1 \| 16000 Hz mono PCM16 \| 0\.25 seconds captured/u)
+ assert.match(environment.statistics.textContent, /PCM: 8000 bytes \| WAV: 8044 bytes \| Current peak: 32768/u)
+ environment.asrOption.onAudioChunk(chunk())
+ assert.match(environment.statistics.textContent, /Chunks: 2.*0\.50 seconds captured/u)
+ assert.match(environment.statistics.textContent, /simulated subtitles, no speech recognition/u)
+ assert.deepEqual(environment.requests, [])
+})
+
+test('ASR local example waits for stop and reports how to resume capture', async () => {
+ const environment = example()
+ environment.asrOption.onAudioChunk(chunk())
+ const before = environment.statistics.textContent
+ const stopping = environment.option.controls[0].click()
+ assert.equal(environment.statistics.textContent, before)
+ environment.stop.resolve()
+ await stopping
+ assert.equal(environment.statistics.textContent, 'Local capture stopped. Pause and play to restart. Nothing was uploaded.')
+ assert.deepEqual(environment.requests, [])
+})
+
+test('ASR local example ignores late audio and stop completion after player destruction', async () => {
+ const environment = example()
+ const stopping = environment.option.controls[0].click()
+ const before = environment.statistics.textContent
+ environment.instance.isDestroy = true
+ assert.equal(environment.asrOption.onAudioChunk(chunk()), undefined)
+ environment.stop.resolve()
+ await stopping
+ assert.equal(environment.statistics.textContent, before)
+ assert.deepEqual(environment.requests, [])
+})
diff --git a/test/browser/asr-audio.spec.js b/test/browser/asr-audio.spec.js
index 829aa37b9..407675da4 100644
--- a/test/browser/asr-audio.spec.js
+++ b/test/browser/asr-audio.spec.js
@@ -13,7 +13,7 @@ test.beforeAll(async () => {
})
for (const version of ['2.0.0', '2.1.0', 'candidate']) {
- for (const core of ['published', 'candidate']) {
+ for (const core of ['published-5.3.0', 'published', 'candidate']) {
test(`ASR ${version} + ${core}: native Worklet supplies local PCM with owned stop and destroy`, async ({ page }, testInfo) => {
const release = [contract.baseline.release, ...contract.baseline.previous].find(release => release.version === version)
const code = version === 'candidate' ? candidateCode : readMember(contract.archives.get(version), 'package/dist/artplayer-plugin-asr.js')
diff --git a/test/browser/asr-fallback.spec.js b/test/browser/asr-fallback.spec.js
index 47fdbad1c..f18a8a13a 100644
--- a/test/browser/asr-fallback.spec.js
+++ b/test/browser/asr-fallback.spec.js
@@ -13,7 +13,7 @@ test.beforeAll(async () => {
})
for (const version of ['2.1.0', 'candidate']) {
- for (const core of ['published', 'candidate']) {
+ for (const core of ['published-5.3.0', 'published', 'candidate']) {
test(`ASR ${version} + ${core}: native capture fallback does not create a second audible route`, async ({ page }, testInfo) => {
const code = version === 'candidate' ? candidateCode : readMember(contract.archives.get(version), 'package/dist/artplayer-plugin-asr.js')
await page.goto(`/test/player.html?core=${core}`)
diff --git a/test/browser/asr-playback.spec.js b/test/browser/asr-playback.spec.js
index e94fa4280..93be9e59f 100644
--- a/test/browser/asr-playback.spec.js
+++ b/test/browser/asr-playback.spec.js
@@ -13,7 +13,7 @@ test.beforeAll(async () => {
})
for (const version of ['2.1.0', 'candidate']) {
- for (const core of ['published', 'candidate']) {
+ for (const core of ['published-5.3.0', 'published', 'candidate']) {
test(`ASR ${version} + ${core}: native playback volume and mute`, async ({ page }, testInfo) => {
const code = version === 'candidate' ? candidateCode : readMember(contract.archives.get(version), 'package/dist/artplayer-plugin-asr.js')
await page.goto(`/test/player.html?core=${core}`)
diff --git a/test/browser/server.mjs b/test/browser/server.mjs
index 61f2f6885..332e90e62 100644
--- a/test/browser/server.mjs
+++ b/test/browser/server.mjs
@@ -74,6 +74,11 @@ const iframeCoreMember = `package/${iframeCore.manifest.main}`
const iframeCoreBytes = readMember(await ensureArchive(iframeCore), iframeCoreMember)
assert.equal(hash(iframeCoreBytes), iframeCore.files[iframeCoreMember], 'Historical Iframe core differs from frozen release')
add('/published-4.5.9/artplayer.js', iframeCoreBytes, { kind: 'npm-release', version: iframeCore.version, integrity: iframeCore.integrity, member: iframeCoreMember })
+const asrCore = JSON.parse(fs.readFileSync(path.join(workspace, 'refactor/baselines/asr-core.json'), 'utf8')).release
+const asrCoreMember = `package/${asrCore.manifest.main.replace(/^\.\//, '')}`
+const asrCoreBytes = readMember(await ensureArchive(asrCore), asrCoreMember)
+assert.equal(hash(asrCoreBytes), asrCore.files[asrCoreMember], 'Adjacent stable ASR core differs from frozen release')
+add('/published-5.3.0/artplayer.js', asrCoreBytes, { kind: 'npm-release', version: asrCore.version, integrity: asrCore.integrity, member: asrCoreMember })
add('/test/audio-tone.m4a', fs.readFileSync(path.join(workspace, 'test/browser/media/audio-tone.m4a')), { kind: 'generated-media', file: 'test/browser/media/audio-tone.m4a' })
add('/test/thumbnail-pattern.mp4', fs.readFileSync(path.join(workspace, 'test/browser/media/thumbnail-pattern.mp4')), { kind: 'generated-media', file: 'test/browser/media/thumbnail-pattern.mp4' })
add('/test/auto-thumbnail-timeline.mp4', fs.readFileSync(path.join(workspace, 'test/browser/media/auto-thumbnail-timeline.mp4')), { kind: 'generated-media', file: 'test/browser/media/auto-thumbnail-timeline.mp4' })
@@ -145,7 +150,7 @@ const server = http.createServer((req, res) => {
if (url.pathname === '/test/player.html') {
const core = url.searchParams.get('core') || 'candidate'
const chapter = url.searchParams.get('chapter') || 'candidate'
- assert(['candidate', 'published', 'published-4.5.5', 'published-4.5.9', 'published-5.1.7'].includes(core) && ['candidate', 'published'].includes(chapter), 'Invalid test combination')
+ assert(['candidate', 'published', 'published-4.5.5', 'published-4.5.9', 'published-5.1.7', 'published-5.3.0'].includes(core) && ['candidate', 'published'].includes(chapter), 'Invalid test combination')
const html = fs.readFileSync(path.join(workspace, 'test/browser/player.html'), 'utf8')
.replace('__CORE__', core)
.replace('__CHAPTER__', chapter)