You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
smoke:web:firefox cannot launch Playwright's Firefox on macOS 27 #2625
On macOS 27.0 (26A425), npm run smoke:web:firefox — and therefore npm run local:gate — fails at browser launch every run:
smoke:web:browser [firefox] FAILED — firefox failed to launch … (browserType.launch: Timeout 180000ms exceeded.
[err] sandbox_extension_issue_file_to_process failed for …/firefox-1538/firefox/Nightly.app/Contents/MacOS/plugin-container.app: 1 (Operation not permitted)
[out] Crash Annotation GraphicsCriticalError: |[0][GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt
Ruled out, 2026-10-07: concurrency (fails with the machine quiet), the agent sandbox (fails unsandboxed too), a corrupt download (npx playwright install --force firefox from clients/web, pinned Playwright 1.62.1, same failure), and the diff (fails identically on two unrelated branches). Every other gate stage, including every Chromium smoke and Storybook, passes.
Likely an incompatibility between Playwright 1.62.1's Firefox build (revision 1538) and macOS 27. CI does not run the Firefox smoke — it is the local gate's one local-only stage, by design (#2086, docs/quality-gate.md). So on macOS 27 the repo has no Firefox coverage at all: the engine pass that is supposed to exist only on developer machines cannot run on them.
Expected
smoke:web:firefox launches on the current macOS, or the gate reports a known-unsupported host clearly instead of a 180s timeout.
Next step
Check whether a newer Playwright ships a Firefox revision that launches on macOS 27, and bump it. Web declares playwright: ^1.58.2 (a caret range, resolved to 1.62.1 in its lockfile), and 1.63.0 is published, so this may be an in-range lockfile bump.
Priority
High (rubric total 9):
Severity 3 — the only Firefox engine coverage the repo has is gone on macOS 27, not merely the local gate going red.
Urgency 4 — every macOS 27 checkout; the 2.10.0 release smoke is affected now.
+1 bug, +1 milestoned.
(Re-scored from Medium: the first version wrongly said CI covers Firefox.)
Playwright 1.63.0 does not fix it. Tested 2026-10-07 on macOS 27.0 (26A425), launching Firefox directly (DEBUG=pw:browser, outside any sandbox):
Build
Mode
Result
firefox-1538 (Playwright 1.62.1, current lockfile)
headless
hangs to the 180s launch timeout; RenderCompositorSWGL failed mapping default framebuffer, plugin-container … Operation not permitted
firefox-1543 / Firefox 155 (Playwright 1.63.0, in-range for ^1.58.2)
headless
exits code 1 in ~100ms: Could not find profile folder. — same with TMPDIR under /var/folders, /tmp, and $HOME
firefox-1543
headed
hangs to the timeout; Nightly GPU Helper … scheduleApplicationNotification, Connection Invalid error for service com.apple.hiservices-xpcservice
So this is Playwright's Firefox vs. macOS 27 itself — two browser builds, both modes — not our version pin. The bump was reverted, not shipped.
For 2.10.0: the Firefox engine pass runs inside the Linux Playwright container (Docker) against the release tree, and the ledger records it that way. Moving this back to v2.11.0: the remaining options (wait for a Playwright Firefox build that supports macOS 27; or make smoke:web:firefox run through the Linux container on macOS hosts) are not release-day work.
Workaround that works on macOS 27: run the Firefox pass inside the Linux Playwright container, from a clean export (the host node_modules carry macOS native binaries and cannot be reused):
git archive <ref>| tar -x -C <empty-dir>
docker run --rm --ipc=host -v <empty-dir>:/src -w /src mcr.microsoft.com/playwright:v1.62.1-noble \
bash -lc "npm install --no-audit --no-fund && npm run build && npm run smoke:web:firefox"
Against origin/v2/main @ f3b025ec (2026-10-07), all three green: smoke:web:browser, smoke:web:app, smoke:web:elicit [firefox] OK. Keep the image tag matched to the Playwright version in clients/web/package-lock.json. Wiring this into smoke:web:firefox on macOS hosts is one candidate fix.
Run the Firefox pass in the Linux container on macOS hosts. On a macOS host, smoke:web:firefox runs its three smokes (smoke:web:browser, smoke:web:app, smoke:web:elicit) inside mcr.microsoft.com/playwright:v<pinned>-noble. The tag is derived from the Playwright version in clients/web/package-lock.json, never hard-coded. It runs from a clean git archive export, because the host node_modules carry macOS native binaries. This is the workaround already proven on the 2.10.0 release tree (all three green on 8a4bacfc), and it keeps a real Firefox signal rather than dropping it.
Skip loudly when Docker is unavailable, and don't cut off the rest of the gate. With no Docker on a macOS 27 host, skip the Firefox stage with an explicit message naming smoke:web:firefox cannot launch Playwright's Firefox on macOS 27 #2625. Make sure local:storybook (the stage after it) still runs: today a Firefox failure stops the && chain before Storybook.
Retire the workaround when Playwright catches up. When a Playwright release ships a Firefox that launches on macOS 27, bump to it and drop the container path.
Until then, the release flow runs the Firefox pass by hand in the container (see the workaround comment above), and the gate's Firefox stage is expected to fail on macOS 27.
Activity
cliffhall commentedon Oct 7, 2026
Playwright 1.63.0 does not fix it. Tested 2026-10-07 on macOS 27.0 (26A425), launching Firefox directly (
DEBUG=pw:browser, outside any sandbox):RenderCompositorSWGL failed mapping default framebuffer,plugin-container … Operation not permitted^1.58.2)Could not find profile folder.— same withTMPDIRunder/var/folders,/tmp, and$HOMENightly GPU Helper … scheduleApplicationNotification,Connection Invalid error for service com.apple.hiservices-xpcserviceSo this is Playwright's Firefox vs. macOS 27 itself — two browser builds, both modes — not our version pin. The bump was reverted, not shipped.
For 2.10.0: the Firefox engine pass runs inside the Linux Playwright container (Docker) against the release tree, and the ledger records it that way. Moving this back to v2.11.0: the remaining options (wait for a Playwright Firefox build that supports macOS 27; or make
smoke:web:firefoxrun through the Linux container on macOS hosts) are not release-day work.cliffhall commentedon Oct 7, 2026
Workaround that works on macOS 27: run the Firefox pass inside the Linux Playwright container, from a clean export (the host
node_modulescarry macOS native binaries and cannot be reused):Against
origin/v2/main@f3b025ec(2026-10-07), all three green:smoke:web:browser,smoke:web:app,smoke:web:elicit[firefox] OK. Keep the image tag matched to the Playwright version inclients/web/package-lock.json. Wiring this intosmoke:web:firefoxon macOS hosts is one candidate fix.cliffhall commentedon Oct 7, 2026
Plan (agreed 2026-10-07):
smoke:web:firefoxruns its three smokes (smoke:web:browser,smoke:web:app,smoke:web:elicit) insidemcr.microsoft.com/playwright:v<pinned>-noble. The tag is derived from the Playwright version inclients/web/package-lock.json, never hard-coded. It runs from a cleangit archiveexport, because the hostnode_modulescarry macOS native binaries. This is the workaround already proven on the 2.10.0 release tree (all three green on8a4bacfc), and it keeps a real Firefox signal rather than dropping it.local:storybook(the stage after it) still runs: today a Firefox failure stops the&&chain before Storybook.Until then, the release flow runs the Firefox pass by hand in the container (see the workaround comment above), and the gate's Firefox stage is expected to fail on macOS 27.
fix(smoke): chown the container export back to the caller; test runIn…
fix(smoke): reject an unrecognized INSPECTOR_FIREFOX_SMOKE (#2625)
fix(smoke): bound the docker info probe (#2625)
fix(smoke): run the Firefox pass in the Playwright container on macOS…