From 378265c3cd63c384c9bde1532be5e9e21b7b0b34 Mon Sep 17 00:00:00 2001 From: Constantin Jais <74049135+constantin-jais@users.noreply.github.com> Date: Fri, 9 Oct 2026 05:16:10 +0200 Subject: [PATCH] test(e2e): disable Firefox COOP process swap in starter Firefox projects Playwright's Firefox driver (Juggler) can lose a protocol message when a navigation response carries Cross-Origin-Opener-Policy: same-origin and Firefox replaces the browsing context, so page.goto or the following evaluate hangs intermittently (microsoft/playwright#42731, fixed in Firefox r1551 shipped with Playwright 1.64.0, not yet installable under the 3-day minimumReleaseAge). Temporary workaround in the starter and bun-app Firefox projects: launch Firefox with browser.tabs.remote.useCrossOriginOpenerPolicy=false. The COOP header served by web-platform is unchanged; header assertions still run. Remove once @playwright/test >= 1.64.0. Local evidence (macOS arm64, --repeat-each=30, Firefox project): starter 1/150 failed before (page.goto timeout), 0/150 after; bun-app 1/90 failed before (page.goto timeout), 0/90 after. Claude-Session: https://claude.ai/code/session_01YGo2fqxeSVRfXjQErze6hP Signed-off-by: Constantin Jais <74049135+constantin-jais@users.noreply.github.com> --- packages/starter/bun-app/playwright.config.ts | 8 +++++++- packages/starter/starter/playwright.config.ts | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/starter/bun-app/playwright.config.ts b/packages/starter/bun-app/playwright.config.ts index 5f77db5..ddb54df 100644 --- a/packages/starter/bun-app/playwright.config.ts +++ b/packages/starter/bun-app/playwright.config.ts @@ -12,7 +12,13 @@ export default defineConfig({ { name: "firefox", testMatch: /(reference|hydration-marker)\.e2e\.ts/, - use: { ...devices["Desktop Firefox"] }, + use: { + ...devices["Desktop Firefox"], + // TODO(playwright-1.64): remove once @playwright/test >= 1.64.0 (microsoft/playwright#42731) — Juggler loses a message on COOP-triggered context replacement. + launchOptions: { + firefoxUserPrefs: { "browser.tabs.remote.useCrossOriginOpenerPolicy": false }, + }, + }, }, { name: "webkit", diff --git a/packages/starter/starter/playwright.config.ts b/packages/starter/starter/playwright.config.ts index b521e92..04a4eae 100644 --- a/packages/starter/starter/playwright.config.ts +++ b/packages/starter/starter/playwright.config.ts @@ -22,7 +22,13 @@ export default defineConfig({ { name: "firefox", testMatch: /journal\.e2e\.ts/, - use: { ...devices["Desktop Firefox"] }, + use: { + ...devices["Desktop Firefox"], + // TODO(playwright-1.64): remove once @playwright/test >= 1.64.0 (microsoft/playwright#42731) — Juggler loses a message on COOP-triggered context replacement. + launchOptions: { + firefoxUserPrefs: { "browser.tabs.remote.useCrossOriginOpenerPolicy": false }, + }, + }, }, { name: "webkit",