chore(node): drop Node 20, add Node 26; refactor puppeteer image#293
Open
vladfrangu wants to merge 7 commits into
Open
chore(node): drop Node 20, add Node 26; refactor puppeteer image#293vladfrangu wants to merge 7 commits into
vladfrangu wants to merge 7 commits into
Conversation
…er install Puppeteer 25 renamed PUPPETEER_SKIP_CHROMIUM_DOWNLOAD to PUPPETEER_SKIP_DOWNLOAD and its installer now requires unzip to extract chrome-headless-shell. Since we already provide system Chrome, skip the download entirely.
Mirrors the playwright image setup: declare PUPPETEER_CACHE_DIR, pre-install
chrome + chrome-headless-shell during the system-deps RUN, then set
PUPPETEER_SKIP_DOWNLOAD so the user-stage npm install doesn't re-download.
The install command is pinned via `npx puppeteer@${PUPPETEER_VERSION}` so the
Chrome revision baked into the image matches the runtime puppeteer's
expected revision. The workflow now passes PUPPETEER_VERSION as a build-arg.
Verified locally against all 5 matrix versions (24.41.0..25.0.2).
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the Node/Puppeteer image matrix and refactors the Puppeteer Chrome Docker image to preinstall Puppeteer-managed browser revisions during image build.
Changes:
- Updates supported Node versions from 20/22/24 to 22/24/26.
- Adds
PUPPETEER_VERSIONas a Docker build argument in the Puppeteer workflow. - Refactors
node-puppeteer-chromebrowser installation and related environment variables.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
node-puppeteer-chrome/Dockerfile |
Adds Puppeteer browser preinstallation and moves related environment configuration earlier in the image build. |
.github/workflows/release-node-puppeteer.yaml |
Passes the Puppeteer version into Docker builds as a build argument. |
.github/actions/version-matrix/src/shared/constants.ts |
Replaces Node 20 with Node 26 in the supported Node matrix. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Older puppeteer versions (24.x) bundle @puppeteer/browsers 2.13.0, which
silently fails to extract Chrome on node 26 — the extraction reports success
but the actual chrome binary is missing from the cache, so the runtime
puppeteer can't find its expected revision.
Read the pinned Chrome revisions from puppeteer-core@${PUPPETEER_VERSION}'s
revisions.js (parsed as text to support both CJS in 24.x and ESM in 25.x),
then invoke @puppeteer/browsers@3.0.2 directly to perform the actual install.
B4nan
approved these changes
May 16, 2026
Member
B4nan
left a comment
There was a problem hiding this comment.
Lets merge on monday and announce it on slack.
Member
Author
|
Still fixing some things on node 26, but after that works and alpha tag builds, we can do the monday release |
Read PUPPETEER_REVISIONS through puppeteer-core's public ESM export instead of find+grep+sed on internal revisions.js. Collapse the two node invocations into one (parsed with bash `read`). Drop the @puppeteer/browsers@3.0.2 pin so the install picks up the latest CLI. Pass PUPPETEER_VERSION as a build arg in the Makefile puppeteer targets, matching the new Dockerfile contract.
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
supportedNodeVersionschromeandchrome-headless-shellintoPUPPETEER_CACHE_DIR=/puppeteer-browsersduring the system-deps stepPUPPETEER_SKIP_DOWNLOAD/PUPPETEER_SKIP_CHROMIUM_DOWNLOADso the user-stagenpm installdoesn't re-downloadnpx puppeteer@${PUPPETEER_VERSION}so each image's Chrome revision matches the runtime puppeteer's expected revision (workflow passesPUPPETEER_VERSIONas a build-arg)unzipis purged after browser extraction (it was being purged before, which broke puppeteer 25'schrome-headless-shellinstall)Test plan
test PASSED