Skip to content

test-firefox-library-upstream: PW test runner hangs at Juggler handshake on musl FF #60

Description

@jclaveau

Symptom

test-firefox-library-upstream job (PR #57) hits its 45min timeout-minutes cap with zero tests passing. Each test:

  1. PW launches our musl FF binary (<launching> /opt/playwright/firefox/firefox ... -juggler-pipe -silent)
  2. FF process starts, prints *** You are running in headless mode.
  3. Sits idle for exactly 3 minutes (PW's default testTimeout)
  4. SIGKILL, next test launches, same pattern

No --reporter=dot output is ever emitted (no ·, no , no ). Tests never get past first protocol message.

Evidence

Run 27004002735, job test-firefox-library-upstream (databaseId 79694074273). Step "Run upstream library subset (curated, ~15-25min)" ran 08:43:25 → 09:27:42 = 44m before GHA cancelled at the job timeout. ~14 tests cycled in that window, all timed out identically.

Why we know the binary is fine

smoke-firefox-library on the SAME run passes in 22s — it exercises 8 Juggler RPC surfaces (Browser.getInfo, Network.setCookies, Page.frameAttached, evaluate, dialogs, screenshot, etc.) using firefox.launch() from the same PW version (1.60.0) and same binary path. So:

  • FF binary boots ✓
  • Juggler protocol negotiable ✓
  • firefox.launch() via PW SDK works ✓

What differs between PW's test runner and our smoke is the fixture layer in tests/library/playwright.config.ts (likely globalSetup, the _browserType fixture, or a baseTest setup that opens a channel our build doesn't respond to).

Workaround

Job left in repo as if: false (disabled). Re-enable after diagnosing.

Next steps to investigate

  • Read tests/library/playwright.config.ts + the base fixture used by browsertype-basic.spec.ts (the first spec we ran) to find what runs before/around the first `page.` call.
  • Try running just one spec interactively in the runner image (docker run -it ...) with DEBUG=pw:* to see exactly where the handshake stalls.
  • Possible culprits: PWTEST_UNDER_TEST=1 enabling a fixture path that expects something specific in the build, missing Firefox preference, or a Juggler channel our patched build doesn't bind.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions