From 5dc86a8bbcad3eb23cd3a14cf4b2bacbe1f6bc61 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 13:15:35 -0800 Subject: [PATCH 1/2] test(interop): quarantine intermittent Firefox replacement audio Co-Authored-By: GPT-6.1 Sol --- test/interop/README.md | 6 ++++++ test/interop/clients/js/media.ts | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/test/interop/README.md b/test/interop/README.md index 1939304a3b6..0428b177a7b 100644 --- a/test/interop/README.md +++ b/test/interop/README.md @@ -528,6 +528,12 @@ at QUIC's 1 ms timer granularity, the 500 ms GOP, one frame to decode, the 50 ms playback delay, and one page sample plus one driver poll. Publisher preparation is not part of it. +Firefox's replacement case is quarantined from the default run after intermittent +audio-tone failures. Investigate the missing tone samples alongside +[the audio playout work](https://github.com/moq-dev/moq/pull/8058), then restore it. +Run it explicitly with `just test media --media-engines firefox --media-cases replacement`; +its content, sync, switch, and fallback assertions remain active. + The CLI integration suite's `instances` cases exercise the real QUIC relay with lite-07, lite-06, and IETF draft 22. Held catalog snapshots and media subscriptions keep A while fresh catalog handles resolve B with fresh sibling diff --git a/test/interop/clients/js/media.ts b/test/interop/clients/js/media.ts index 30dcc878e34..19adbce3b43 100644 --- a/test/interop/clients/js/media.ts +++ b/test/interop/clients/js/media.ts @@ -133,7 +133,7 @@ const selected = new Set( values.cases === undefined ? native ? NATIVE_CASES - : CASES + : CASES.filter((name) => requestedPlayer !== "firefox" || name !== "replacement") : values.cases === "none" ? [] : values.cases.split(","), @@ -161,6 +161,11 @@ if ( const publisherEngine = requestedPublisher as Engine; const playerEngine = requestedPlayer as Engine; const wants = (name: Case) => selected.has(name); +if (!native && values.cases === undefined && playerEngine === "firefox") { + console.error( + "SKIP Firefox replacement: intermittent audio tone; investigate with https://github.com/moq-dev/moq/pull/8058", + ); +} // process.exit narrows `url` above, but not inside the function declarations below. const relay: string = url; From 1093113d0fb76b249d8438ccadfc16da021d5bd5 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Fri, 6 Nov 2026 13:23:22 -0800 Subject: [PATCH 2/2] test(interop): expose quarantined cases in media reports Co-Authored-By: GPT-6.1 Sol --- test/interop/clients/js/media.ts | 2 +- test/interop/interop.sh | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/test/interop/clients/js/media.ts b/test/interop/clients/js/media.ts index 19adbce3b43..6109c1d73ac 100644 --- a/test/interop/clients/js/media.ts +++ b/test/interop/clients/js/media.ts @@ -163,7 +163,7 @@ const playerEngine = requestedPlayer as Engine; const wants = (name: Case) => selected.has(name); if (!native && values.cases === undefined && playerEngine === "firefox") { console.error( - "SKIP Firefox replacement: intermittent audio tone; investigate with https://github.com/moq-dev/moq/pull/8058", + "QUARANTINE\treplacement\tintermittent audio tone; investigate with https://github.com/moq-dev/moq/pull/8058", ); } diff --git a/test/interop/interop.sh b/test/interop/interop.sh index a2e22c223c5..7aba8db51a4 100755 --- a/test/interop/interop.sh +++ b/test/interop/interop.sh @@ -2202,6 +2202,11 @@ run_media() { # The measurements are the point even when nothing fails: a skew or frame rate creeping # toward its bound is worth seeing before it crosses. grep -E '^( |=== )' "$log" || true + local marker quarantined detail + while IFS=$'\t' read -r marker quarantined detail; do + echo " SKIP $name: $quarantined: $detail" + record skip case="$name: $quarantined" publisher="$(media_publisher "$@")" subscriber=js detail="$detail" log="$log" + done < <(grep $'^QUARANTINE\t' "$log" || true) else echo " FAIL $name ($((SECONDS - started))s)" record fail "${cell[@]}" detail="media.ts exited $status"