ci: bump Node to 26 and consolidate dev dependency updates - #240
Merged
Conversation
jsdom 30 requires node ^22.22.2 || ^24.15.0 || >=26.0.0, so the Node 20 runners fail to start Vitest's fork workers with "webidl.util.markAsUncloneable is not a function" once jsdom is upgraded. Node 26 rather than 24 so the runner matches @types/node ^26, which the repo already depends on, and local development. Note this also changes the toolchain that builds the production artifact: the deploy job uploads what Actions builds, since the Pages project is direct-upload and never builds on Cloudflare's side.
The Pages project is not connected to this repo. Its settings show no git repository and no build configuration, so Cloudflare never runs a build; the deploy job in ci.yml builds and direct-uploads via wrangler on push to main. Describing it as git-connected implies a Cloudflare-side build that would need its own Node version and would install devDependencies. No such build exists.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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.
Consolidates the four open Dependabot PRs (#236, #237, #238, #239) with the Node bump they depend on.
Why these ship together
jsdom30 declaresnode: ^22.22.2 || ^24.15.0 || >=26.0.0, dropping Node 20. CI pinnednode-version: 20, so #237 went red — all 14 test files failed before running:The 0% coverage on that run was a symptom of nothing executing, not a real regression. Neither change is green alone, so they land as one PR.
Changes
.github/workflows/ci.yml—node-version: 20→26in all three jobs (test, security-audit, deploy).Node 26 over LTS 24 because the repo already depends on
@types/node^26, so 20 left types describing APIs the runtime lacked. 26 also matches local development. Tradeoff: Node 26 is Current, not Active LTS until ~October 2026.package.json/package-lock.jsonjsdom@types/nodeglobalssvelte-checkCLAUDE.md— corrects the deployment section. It described Pages as git-connected; the project settings show no git repository and no build configuration, so Cloudflare never builds. Thedeployjob builds and direct-uploads viawrangler pages deploy. That makes the Actionsnode-versionthe toolchain producing the production artifact, which is worth stating plainly.Verification
Run locally on Node 26.5.0:
npx tsc --noEmitnpx eslint . --quietnpm run coveragenpm run checknpm run buildnpm auditNotes
ci:,chore(deps-dev):anddocs:are all non-bumping, so release-please will not cut a version.jsdomis a devDependency and Cloudflare receives only the built output.