fix(ci): bump Playwright to ^1.60.0 to fix install hang on Node 24.16+#153
Conversation
Node 24.16.0 shipped a zlib regression (nodejs/node#63487) that breaks the extract-zip/yauzl library stack used by Playwright < 1.60.0. The symptom: browser download completes to 100% but extraction hangs indefinitely, hitting the 5-minute timeout on every CI run since ~June 15. Playwright 1.60.0 replaced the extraction codepath, fixing the incompatibility. This is the proper fix vs the previous workarounds (splitting install steps, adding timeouts) which didn't address the root cause. Also reverts the split install-deps/install steps back to the simpler single 'install --with-deps' command since that workaround is no longer needed. Refs: microsoft/playwright#41000, microsoft/playwright#40998
| - name: Install Playwright browsers | ||
| run: npx playwright install chromium | ||
| timeout-minutes: 5 | ||
| run: npx playwright install --with-deps chromium |
There was a problem hiding this comment.
Bug: The playwright install command is missing environment variables (DEBIAN_FRONTEND, NEEDRESTART_MODE) needed to prevent interactive prompts, which can cause CI jobs to hang.
Severity: HIGH
Suggested Fix
Prepend the npx playwright install command with the necessary environment variables to prevent interactive prompts. For example: env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a npx playwright install --with-deps chromium.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: .github/workflows/daily-tests.yml#L103
Potential issue: The consolidated `npx playwright install --with-deps chromium` command
removes the `DEBIAN_FRONTEND: noninteractive` and `NEEDRESTART_MODE: a` environment
variables. These variables were previously set to prevent interactive prompts from
`apt-get` and `needrestart` on Ubuntu runners, which can cause CI jobs to hang
indefinitely. While the PR fixes a separate hang issue related to file extraction in
Playwright, removing these environment variables re-introduces a risk of hangs during
the dependency installation step. This pattern is repeated in multiple workflow files.
Also affects:
.github/workflows/pr-tests.yml:96~96.github/workflows/pr-tests.yml:197~197
Did we get this right? 👍 / 👎 to inform future reviews.
🟡 AI SDK Integration Test ResultsStatus: 562 tests failing (no regressions) Summary
Test MatrixAgent Tests
Embedding Tests
LLM Tests
MCP Tests
Legend: ✅ Pass | ❌ Fail | ✅🔧 Fixed | ❌📉 Regressed | ✅🆕 New (pass) | ❌🆕 New (fail) | 🗑️ Removed | str=streaming blk=blocking a=async s=sync io=stdio sse=sse hi=highlevel lo=lowlevel Generated by AI SDK Integration Tests |
Problem
Every daily CI run has been failing since ~June 15 because
npx playwright install chromiumhangs after the browser download reaches 100%.Root Cause
Node 24.16.0 (now the default on
ubuntu-latestrunners) shipped a zlib regression (nodejs/node#63487) that breaks theextract-zip/yauzllibrary stack used by Playwright < 1.60.0. The download completes but extraction hangs indefinitely.Tracked upstream: microsoft/playwright#41000, #40998, #41133
Fix
playwrightfrom^1.49.1→^1.60.0— Playwright 1.60.0 replaced the extraction codepath, sidestepping the Node buginstall --with-depsinto two steps with timeouts, which didn't address the root cause. Reverted back to the simpler single commandWhy previous fixes didn't hold
~/.cache/ms-playwright: only masks the issue on cache hits; any cache miss → hang returnsCloses TET-2575