chore(repo): drop Node.js 18 and 20 from test matrix - #3053
Merged
Patrycja-dz merged 7 commits intoAug 28, 2026
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the CI workflow to stop running the commit test jobs on Node.js 18 and 20, leaving a newer set of Node.js versions in the test matrix.
Changes:
- Removed Node.js 18.20.8 and 20.20.2 from the
test-nodematrix. - Updated the “Test harness” step gating to run on Node.js 22.23.2 instead of 18.20.8.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
knieczyszczak
previously approved these changes
Aug 28, 2026
kopernic-pl
previously approved these changes
Aug 28, 2026
knieczyszczak
previously approved these changes
Aug 28, 2026
Patrycja-dz
dismissed stale reviews from knieczyszczak and kopernic-pl
via
August 28, 2026 08:32
675a066
…stderr assertions
Patrycja-dz
force-pushed
the
chore/drop-node-18-20-ci-matrix-and-fix-test-harness
branch
from
August 28, 2026 08:37
675a066 to
1b77227
Compare
AnastasiiaSvietlova
approved these changes
Aug 28, 2026
kopernic-pl
approved these changes
Aug 28, 2026
Patrycja-dz
deleted the
chore/drop-node-18-20-ci-matrix-and-fix-test-harness
branch
August 28, 2026 09:52
3 tasks
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.
Drops Node.js 18 and 20 from the CI test matrix. The supported matrix is now 22.23.2, 24.18.1, 26.5.1.
Removing Node 18 turned out to require three follow-on changes, because the test harness had been pinned to run only on Node 18:
if: matrix.node-version == '18.20.8'Repointing that guard to 22.23.2 ran the harness on Node 22 for the first time, which surfaced two latent problems:
stripDeprecationWarningsintest-harness/src/utils.ts, called from both runtimes beforenormalizeLineEndings.The ordering there matters:
normalizeLineEndingsstrips all newlines, so once it runs the warning is fused onto the same line as the real message and can no longer be separated. The helper must run first - noted in a comment above it.Also fixed a dead conditional: test-windows has no
strmatrix.node-version == '18.20.8'guard was never true and the Windows harness had never actually run. The guard is removed and the version passed explicitly.Checklist
Does this PR introduce a breaking change?
@stoplight/spectral-cli raises its engines.node from ^16.20 || ^18.18 || >= 20.17 to ^22.0 || >= 24.0. Installing the CLI on Node 16, 18, or 20 will now produce an engine warning, or fail outright under engine-strict.
The published standalone binaries also now embed a Nodode 18, which may drop support for older glibc and macOS versions.
Additional context
Two things reviewers should weigh in on, both pre-existing inconsistencies this PR brushes up against rather than introduces:
Also included: a yarn.lock dedup merging two duplicate hasown descriptors into one. Both already resolved to the same version, resolution, and checksum, so no dependency moves. Without it, yarn install --immutable failed with YN0028 and all three jobs died atthe Cached dependencies step before any test ran.
Harness locally: 65 passed, 2 failed. Both failures are macOS-only and unrelated — script -qfec uses the GNU-only -f flag, and the other cannot reach unpkg.com through TLS interception.