Skip to content

chore(dev-env): local Node v26.4.0 diverges from CI's Node 22, causing widespread false-positive local test failures #2521

Description

@carlos-alm

Summary

Running the full npm test suite in a fresh worktree on this dev machine (Node v26.4.0, the only Node version installed) produces 207 failing tests across 46 files — spanning parser tests, native/wasm parity tests, and several issue-NNNN regression tests that have nothing to do with each other. CI (.github/workflows/ci.yml) pins node-version: 22 everywhere, and the last several pushes to main are all green:

success  fix(sweep): replace the reply-reaction shortcut ...   ef206ffb
success  test(docs): cli.md context/audit --quick section ...  23e4c801
success  test(hub-selection): raise windows-flaky ...           d242aa75
success  fix(exports): top-level-call consumer entries ...      742baec2
...

None of the locally-failing test files reference the code touched in PR work done alongside this issue, and codegraph diff-impact confirms zero external callers for those changes — the failures reproduce identically on an untouched origin/main checkout in this same environment. Sample failures observed locally:

  • tests/parsers/{cuda,groovy,julia,objc,r,solidity,verilog}.test.ts — a fresh worktree's npm install leaves several optional WASM grammars unbuilt until npm run build:wasm completes (already tracked behavior, see doctor output), but the build itself is extremely slow (multiple minutes) on this machine.
  • tests/integration/issue-1938-deleted-export-advisory-persistence.test.ts, tests/engines/parity.test.ts, tests/unit/complexity.test.ts, tests/benchmarks/resolution/resolution-benchmark.test.ts, and ~40 other files — fail in ways consistent with native addon / V8 behavioral drift between Node 22 (CI) and Node 26 (local), not with actual logic regressions.

Why this matters

Any agent or engineer running the full suite locally on this machine will see a large, noisy set of failures that look like regressions but aren't — wasting significant time triaging phantom failures, or worse, causing a real regression to be missed in the noise.

Suggested fix

  • Document in CLAUDE.md / README.md that local full-suite runs on this machine should be cross-checked against CI (Node 22) rather than trusted at face value when Node's local version diverges from .github/workflows/ci.yml's pinned version.
  • Consider adding a .nvmrc (or equivalent engines-check at pretest) that warns loudly when the running Node major version doesn't match CI's pinned version, rather than silently producing an unrelated wall of failures.

Not in scope here

Installing/switching a system Node version on this shared dev machine to "fix" this locally is explicitly out of scope — that requires a deliberate, human-approved change to shared global state, not an automated one.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions