test(harness): Firefox runs the standalone deployment, and only that

improvise-bck's criterion (1) reads "Chrome and Firefox" and the standalone
deployment was the evidence offered for it -- but shell.spec.js ran on
Chromium alone (improvise-zkkw).

The recorded reason is that routeWebSocket is slower and flakier across three
engines. That argument is about the four mocked-peer tests and was never made
about the two beside them: the standalone block mocks nothing, and the
engine's OPFS is already exercised by opfs.spec.js.

So the mocked-peer describe is tagged and the firefox project widens its
testMatch with grepInvert: /@mocked-peer/ -- a tag, not a third copy of the
file. Measured: 2.0s for the pair, 10/10 green under --repeat-each=5. Nothing
was quieted; had it flaked, the answer would have been to leave it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH
This commit is contained in:
Edward Langley
2026-09-20 16:34:31 -07:00
parent b748bb680c
commit ab96f3651f
2 changed files with 16 additions and 3 deletions
+7 -2
View File
@@ -20,13 +20,18 @@ export default defineConfig({
trace: "retain-on-failure",
},
// Chromium + Firefox run the OPFS battery; WebKit has no OPFS at all and is
// kept for the day it does. Every other spec is Chromium-only: clients.md.
// kept for the day it does. Firefox ALSO runs the standalone half of the
// shell spec — the deployment improvise-bck's criterion (1) names, which
// mocks nothing; the `@mocked-peer` block it excludes is the one the
// routeWebSocket argument was actually made about (improvise-zkkw). Every
// other spec is Chromium-only: clients.md.
projects: [
{ name: "chromium", use: { ...devices["Desktop Chrome"] } },
{
name: "firefox",
use: { ...devices["Desktop Firefox"] },
testMatch: /opfs\.spec\.js/,
testMatch: /(opfs|shell)\.spec\.js/,
grepInvert: /@mocked-peer/,
},
{
name: "webkit",
+9 -1
View File
@@ -53,7 +53,11 @@ async function outlastTheWatchdog(page) {
).toBeGreaterThanOrEqual(jump);
}
test.describe("the shell reports what its peer is doing", () => {
// Tagged, and the tag is what the config's `grepInvert` reads: these four
// mock their peer with `routeWebSocket`, which is slower and flakier across
// three engines. That argument is about THESE, and was never made about the
// standalone block below (improvise-zkkw).
test.describe("the shell reports what its peer is doing", { tag: "@mocked-peer" }, () => {
// improvise-hwpi. The fault is injected at the *peer*, not in the page, so
// this exercises the real `on_frame` and the real catch.
test("a frame the client cannot fold says so on screen", async ({ page }) => {
@@ -122,6 +126,10 @@ test.describe("the shell reports what its peer is doing", () => {
});
});
// Chromium AND Firefox: this is the deployment improvise-bck's criterion (1)
// is about, it mocks nothing, and the engine's OPFS is already exercised by
// `opfs.spec.js` — so the one recorded reason for Chromium-only does not
// reach it (improvise-zkkw).
test.describe("the standalone deployment", () => {
// No `?ws=`, so the page spawns the in-page worker over OPFS. If this draws
// a grid, worker.js, bindings.rs, OpfsFs and the seed fetch all ran.