Symptom
test-firefox-library-upstream job (PR #57) hits its 45min timeout-minutes cap with zero tests passing. Each test:
- PW launches our musl FF binary (
<launching> /opt/playwright/firefox/firefox ... -juggler-pipe -silent)
- FF process starts, prints
*** You are running in headless mode.
- Sits idle for exactly 3 minutes (PW's default
testTimeout)
- 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.
Symptom
test-firefox-library-upstreamjob (PR #57) hits its 45mintimeout-minutescap with zero tests passing. Each test:<launching> /opt/playwright/firefox/firefox ... -juggler-pipe -silent)*** You are running in headless mode.testTimeout)No
--reporter=dotoutput 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-libraryon the SAME run passes in 22s — it exercises 8 Juggler RPC surfaces (Browser.getInfo, Network.setCookies, Page.frameAttached, evaluate, dialogs, screenshot, etc.) usingfirefox.launch()from the same PW version (1.60.0) and same binary path. So: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(likelyglobalSetup, the_browserTypefixture, 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
tests/library/playwright.config.ts+ the base fixture used bybrowsertype-basic.spec.ts(the first spec we ran) to find what runs before/around the first `page.` call.docker run -it ...) withDEBUG=pw:*to see exactly where the handshake stalls.PWTEST_UNDER_TEST=1enabling a fixture path that expects something specific in the build, missing Firefox preference, or a Juggler channel our patched build doesn't bind.