ci: restore Node 18 test support and extend matrix to Node 26 - #1411
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
The dependency refresh in #1409 broke the Node 18 cell of the main test matrix. Two caret ranges floated across a Node-version boundary: - vite 7.3.1 -> 8.1.5. Vite 8 is rolldown-based, and rolldown imports `styleText` from `node:util` (added in Node 20.12), so vitest died at startup with a SyntaxError before running a single test. - @rsdoctor/rspack-plugin 1.5.2 -> 1.6.1, which pulls rslog 2.3.0. That hard-throws "Unsupported Node.js version" on Node < 20.19 at import time, taking down the tester-app bundle tests. Hold both back: a `vite: ^7.3.1` override and an exact @RSdoctor pin in the three tester apps. vitest itself stays current at 4.1.10 - it only needed vite held underneath it, not pinning of its own. Also extend the matrix to Node 26 and disable fail-fast. The Node 18 failure had cancelled the 20/22/24 jobs mid-run, so the matrix reported four broken versions when only one was actually broken. Verified locally with `TURBO_FORCE=true pnpm test`, full suite per version: 18.20.8, 20.20.2, 22.22.3, 24.14.1 and 26.5.0 all pass 10/10 tasks. The held versions do not weaken the security posture restored in #1409: `pnpm audit` reports the same 3 advisories as main, and koa, ws, adm-zip and caniuse-lite all resolve to identical versions.
dannyhw
force-pushed
the
dannyhw/ci-tests-misconfiguration-9217de
branch
from
July 26, 2026 19:51
3ee5d4f to
eb20238
Compare
dannyhw
added a commit
that referenced
this pull request
Jul 26, 2026
Conflicts were both in files where main and this branch appended to the same lists: - pnpm-workspace.yaml: kept both override groups - this branch's esbuild and uuid security overrides plus main's vite hold from #1411. - pnpm-lock.yaml: took this branch's tree (which carries the React Native 0.86 resolution) and re-ran `pnpm install` so main's vite override and the exact `@rsdoctor/rspack-plugin` pin are reflected.
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
Test Main Matrixhas been red onmainsince #1409. This restores Node 18 rather than dropping it, and extends the matrix to Node 26.What broke
The dependency refresh in #1409 floated two caret ranges across a Node-version boundary:
viterolldownimportsstyleTextfromnode:util(Node 20.12+)@rsdoctor/rspack-pluginrslog@2.3.0, which hard-throws on Node < 20.19The first killed vitest at startup:
The second throws
Unsupported Node.js version: "18.20.8". Expected Node.js >= 20.at import time, taking down the tester-app bundle tests.The fix
vite: ^7.3.1override, and an exact@rsdoctor/rspack-pluginpin in the three tester apps.^6.0.0 || ^7.0.0 || ^8.0.0-0, so pinning vitest alone did nothing while vite floated to 8. Worth knowing if anyone revisits this.fail-fast: false.The fail-fast change is what made this hard to read: the Node 18 job cancelled 20/22/24 mid-run (
The strategy configuration was canceled because "test_main_matrix._18_ubuntu-latest" failed), so the run reported four broken Node versions when only one was.Verification
Full suite per version, turbo cache bypassed (
TURBO_FORCE=true pnpm test):setup-nodecan resolve Node 26 on runners — the manifest has 7 builds including linux-x64, newest 26.5.0. Note 26 is Current, not LTS (24 "Krypton" is the active LTS), so that cell tracks a fast-moving release line;fail-fast: falsekeeps a break there from masking the rest.Security posture
Holding these versions does not undo #1409:
pnpm auditkoawsadm-zipcaniuse-liteThe #1409 fixes were
koa/ws/adm-zipoverrides, which don't interact with vite or rsdoctor. The 3 remaining advisories are pre-existing on main and unaffected either way.Notes for the reviewer
Two things worth knowing before this gets treated as permanent:
^7.0.0. A future vitest major will require vite 8+, and the choice comes back.enginesis^20.0.0 || ^22.0.0 || >=24.0.0, and was already that at 4.1.0. pnpm only warns on engine mismatches, so Node 18 has been passing on borrowed time rather than declared support. Node 18 has also been EOL since April 2025. If the intent is to keep supporting it, that's a real position — it just isn't one the toolchain is currently backing.No changeset: dev-dependency and CI changes only, nothing published is affected.