Skip to content

smoke:web:firefox cannot launch Playwright's Firefox on macOS 27 #2625

Closed

Description

@cliffhall

Problem

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.)

Activity

  1. added this to the v2.11.0 milestone on Oct 7, 2026
  2. added
    bugSomething isn't working
    v2Issues and PRs for v2
    on Oct 7, 2026
  3. self-assigned this
    on Oct 7, 2026
  4. modified the milestones: v2.11.0, v2.10.0 on Oct 7, 2026
  5. cliffhall commented on Oct 7, 2026

    @cliffhall
    MemberAuthor

    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.

  6. modified the milestones: v2.10.0, v2.11.0 on Oct 7, 2026
  7. cliffhall commented on Oct 7, 2026

    @cliffhall
    MemberAuthor

    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.

  8. cliffhall commented on Oct 7, 2026

    @cliffhall
    MemberAuthor

    Plan (agreed 2026-10-07):

    1. 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.
    2. 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.
    3. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingv2Issues and PRs for v2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions