Skip to content

chore: run on Node 24 everywhere - #109

Merged
HendrikThePendric merged 3 commits into
masterfrom
chore/node-24
Oct 23, 2026
Merged

HendrikThePendric merged 3 commits into
masterfrom
chore/node-24

Conversation

@karolinelien

@karolinelien karolinelien commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Why

What

  • Docker base alpine:3.20 → alpine:3.23 (Node 24.18.1, npm 11.11.0, Chromium 149). chromium is now installed explicitly, since chromium-swiftshader no longer pulls it in.
  • Chromium launched with --enable-unsafe-swiftshader: Chromium 149 no longer falls back to SwiftShader WebGL by default, so the Maps app crashed and every dashboard with a map timed out (504).
  • .nvmrc pinned to 24, e2e service on node:24-alpine, @types/node ^24.
  • All workflow actions bumped to their Node 24 majors; all inputs we pass still exist.
  • e2e failure step no longer fails when e2e/generated-html is missing, so scrape logs still get uploaded.

How verified

  • Locally on Node 24: tsc, eslint, prettier, 22/22 unit tests pass.
  • WebGL in the image: none without the flag, SwiftShader with it (same renderer as Chromium 131).
  • e2e: 9/9 pass locally on core-dev 2.43 and in CI on core 2.41.

AI Assisted

🤖 Generated with Claude Code

GitHub-hosted runners now force JavaScript actions onto Node 24, and
puppeteer 25 and release-it 21 need Node 22+.

- Docker base alpine:3.20 -> 3.23 (Node 24.18.1, npm 11.11.0, Chromium 149)
- Install chromium explicitly: on 3.23 chromium-swiftshader no longer
  pulls it in, so /usr/bin/chromium-browser was missing
- Pin .nvmrc to 24 and the e2e service to node:24-alpine
- @types/node ^22 -> ^24
- Bump every workflow action to its Node 24 major

npm 11 in the image also accepts lockfiles that Dependabot writes with
npm 11, which npm 10 rejected (missing optional peers).

AI Assisted

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@karolinelien karolinelien added the e2e E2E checks will start running when this label is applied label Oct 23, 2026
karolinelien and others added 2 commits October 23, 2026 09:43
Chromium 149 on alpine:3.23 no longer falls back to SwiftShader for
WebGL automatically, so headless Chrome in the image had no WebGL
context. The Maps app then crashed ("Something went wrong"), its
download button never enabled, and every dashboard with a map timed
out with a 504. --enable-unsafe-swiftshader restores the same
SwiftShader renderer Chromium 131 used by default.

AI Assisted

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When every conversion fails, e2e/generated-html is never created and
the cp in the failure step exited 1, so the scrape markdown logs were
never uploaded as an artifact.

AI Assisted

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@karolinelien
karolinelien marked this pull request as ready for review October 23, 2026 07:47
@HendrikThePendric
HendrikThePendric merged commit d897844 into master Oct 23, 2026
8 checks passed
@HendrikThePendric
HendrikThePendric deleted the chore/node-24 branch October 23, 2026 08:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

e2e E2E checks will start running when this label is applied

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants