Skip to content

Node 24.17.1 chrome fix#5292

Draft
backspace wants to merge 13 commits into
mainfrom
node-24.17.1-chrome-fix
Draft

Node 24.17.1 chrome fix#5292
backspace wants to merge 13 commits into
mainfrom
node-24.17.1-chrome-fix

Conversation

@backspace

Copy link
Copy Markdown
Contributor

No description provided.

backspace and others added 7 commits June 18, 2026 11:56
puppeteer's postinstall is an unreliable source of the prerender browser:
it only downloads Chrome into ~/.cache/puppeteer when it decides the binary
is absent, and that decision can silently skip the download, leaving the
prerender service to fail at launch with "Could not find Chrome". When that
happens, base-realm indexing never completes, the realm readiness check
never returns 200, and every host-test shard fails at the "Wait for realms
and assert public-read parity" gate before the suite runs.

Install the browser explicitly from the puppeteer resolved in the workspace,
which pins it to the version puppeteer-core launches at runtime, independent
of the postinstall heuristic.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Combine the Node 24.17.0 bump with the explicit prerender Chrome install so
CI exercises the bump with the browser reliably provisioned.
backspace and others added 4 commits June 19, 2026 09:09
A partial browser folder in the puppeteer cache (versioned directory present,
executable missing) makes both puppeteer's postinstall and `browsers install`
treat Chrome as already installed and skip the download, so the install step
errors with "folder exists but executable missing" and the prerender later
can't launch. Remove the cache first so the download actually runs, and
install chrome and chrome-headless-shell as separate invocations since
`install` accepts a single browser.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Cache the puppeteer browser (~/.cache/puppeteer, outside the pnpm store) so
the ~150MB Chrome download happens once and is restored across shards and
runs instead of re-downloading on every job. Skip puppeteer's postinstall
download (PUPPETEER_SKIP_DOWNLOAD) and install the browser explicitly from
the resolved puppeteer, which pins it to the version puppeteer-core launches
and avoids the postinstall leaving a half-written browser folder that makes
later consumers treat Chrome as present and skip it. The cache is saved only
on a miss and only when the install succeeded, so a partial download is never
persisted.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Preview deployments

Host Test Results

    1 files  +    1      1 suites  +1   1h 42m 16s ⏱️ + 1h 42m 16s
3 136 tests +3 136  3 121 ✅ +3 121  15 💤 +15  0 ❌ ±0 
3 155 runs  +3 155  3 140 ✅ +3 140  15 💤 +15  0 ❌ ±0 

Results for commit 83bcb63. ± Comparison against earlier commit 23b4087.

Realm Server Test Results

    1 files  ±0      1 suites  ±0   12m 46s ⏱️ +29s
1 740 tests ±0  1 740 ✅ ±0  0 💤 ±0  0 ❌ ±0 
1 833 runs  ±0  1 833 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 83bcb63. ± Comparison against earlier commit 23b4087.

backspace and others added 2 commits June 19, 2026 11:40
puppeteer 24's @puppeteer/browsers depends on extract-zip@2.0.1, which on
newer Node silently aborts the Chrome unzip mid-stream without throwing —
the install exits 0 with the executable missing, so the prerender can't
launch Chrome and realm indexing never completes. puppeteer 25 replaced
extract-zip with modern-tar, so the download extracts correctly again
(puppeteer/puppeteer#14957).

Revert the init-action workaround that pre-provisioned the browser; with the
extractor fixed, puppeteer's own install handles it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant