Skip to content

fix(ci): use Node 24 LTS for corepack e2e test#8915

Merged
jdx merged 1 commit intomainfrom
fix/e2e-node-corepack
Apr 4, 2026
Merged

fix(ci): use Node 24 LTS for corepack e2e test#8915
jdx merged 1 commit intomainfrom
fix/e2e-node-corepack

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented Apr 4, 2026

Summary

  • Node 25 removed corepack, causing test_node_slow to fail when mise latest node returns 25.x
  • Pin to Node 24 (LTS) which still ships corepack for the corepack/yarn assertions

Test plan

  • Verified on bamboo: Node 24 installs with corepack shims, which yarn works
  • Verified Node 25 does not have corepack (confirmed the root cause)

🤖 Generated with Claude Code


Note

Low Risk
Low risk: only adjusts an e2e test script to avoid upstream Node version behavior changes; no production logic is affected.

Overview
Pins the e2e/core/test_node_slow corepack/yarn assertions to Node 24 by writing the latest node@24 version into .node-version instead of using mise latest node.

Updates the version assertion to match the pinned corepack_version, preventing failures when newer Node releases (25+) omit corepack.

Reviewed by Cursor Bugbot for commit 72b39bc. Bugbot is set up for automated code reviews on this repo. Configure here.

Node 25 removed corepack, causing test_node_slow to fail when
`mise latest node` returns 25.x. Pin to Node 24 (LTS) which
still ships corepack.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jdx jdx merged commit 1a32edf into main Apr 4, 2026
28 checks passed
@jdx jdx deleted the fix/e2e-node-corepack branch April 4, 2026 22:02
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 4, 2026

Greptile Summary

This PR fixes a flaky CI test by pinning the test_node_slow e2e test to Node 24 LTS instead of using mise latest node, which could resolve to Node 25+ (which removed corepack).

Changes:

  • Replaces mise latest node with mise latest node@24 to ensure corepack is available during the test
  • Renames the variable from latest to corepack_version to clearly communicate its purpose
  • Updates the corresponding assert on line 18 to use the renamed variable

The fix is minimal, well-targeted, and correctly addresses the root cause. Node 24 is the current LTS and still ships with corepack, so pinning to @24 keeps the test stable without locking to a specific patch version.

Confidence Score: 5/5

Safe to merge — minimal, targeted fix with clear root-cause justification.

Single-file change to an e2e test. The fix correctly pins to Node 24 LTS which still ships corepack, preventing test failures when mise latest node resolves to 25+. No logic changes, no risk of regressions.

No files require special attention.

Important Files Changed

Filename Overview
e2e/core/test_node_slow Pins corepack test to Node 24 LTS (mise latest node@24) since Node 25+ removed corepack; renames variable from latest to corepack_version for clarity

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[test_node_slow starts] --> B["corepack_version=$(mise latest node@24)"]
    B --> C[Write .node-version with v24.x]
    C --> D[Set default npm package: zx]
    D --> E[Enable idiomatic_version_file for node]
    E --> F[Install node@lts/hydrogen]
    F --> G[Install node from .node-version]
    G --> H[Assert node@lts/hydrogen == v18.x]
    H --> I[Assert active node == v24.x]
    I --> J[Assert 'which yarn' contains yarn]
    J --> K[Assert 'which zx' contains zx]
    K --> L[Use nodejs@20.1.0]
    L --> M[Assert node == v20.1.0]
    M --> N[Remove node pin]
    N --> O[Test complete ✓]
Loading

Reviews (1): Last reviewed commit: "fix(ci): use Node 24 LTS for corepack e2..." | Re-trigger Greptile

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the end-to-end test script for Node to explicitly use version 24, as corepack was removed in later versions. I have reviewed the suggestion regarding hardcoding the version; while it is a valid point for long-term maintenance, the current implementation is acceptable for the immediate requirement of fixing the test environment. I have no further feedback to provide.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 4, 2026

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.3 x -- echo 23.3 ± 0.7 21.9 27.6 1.01 ± 0.04
mise x -- echo 23.0 ± 0.5 21.8 26.0 1.00

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.3 env 22.5 ± 0.9 21.2 27.6 1.00 ± 0.04
mise env 22.4 ± 0.5 21.5 24.0 1.00

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.3 hook-env 23.2 ± 0.7 21.9 29.7 1.01 ± 0.04
mise hook-env 23.1 ± 0.5 22.1 24.7 1.00

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.3 ls 20.4 ± 0.7 19.2 26.0 1.00
mise ls 20.8 ± 0.6 19.6 25.0 1.02 ± 0.05

xtasks/test/perf

Command mise-2026.4.3 mise Variance
install (cached) 152ms 150ms +1%
ls (cached) 79ms 79ms +0%
bin-paths (cached) 84ms 84ms +0%
task-ls (cached) 810ms 800ms +1%

jdx pushed a commit that referenced this pull request Apr 5, 2026
### 🚀 Features

- **(ci)** auto-convert external PRs to draft mode by @jdx in
[#8896](#8896)
- **(deps)** add `depends` field for user-specified tool dependencies by
@cprecioso in [#8776](#8776)
- **(dotnet)** support runtime-only installs by @fragon10 in
[#8524](#8524)
- **(npm)** apply install_before to transitive dependencies by @risu729
in [#8851](#8851)
- **(task)** allow passing arguments to task dependencies via
{{usage.*}} templates by @jdx in
[#8893](#8893)
- add options field to BackendListVersionsCtx by @esteve in
[#8875](#8875)

### 🐛 Bug Fixes

- **(backend)** filter PEP 440 .dev versions in fuzzy version matching
by @richardthe3rd in [#8849](#8849)
- **(ci)** update COPR BuildRequires rust version to match MSRV 1.88 by
@jdx in [#8911](#8911)
- **(ci)** add Ruby build dependencies to e2e Docker image by @jdx in
[#8910](#8910)
- **(ci)** add missing build dependencies to e2e Docker image by @jdx in
[#8912](#8912)
- **(ci)** add missing build dependencies to e2e Docker image by @jdx in
[#8914](#8914)
- **(ci)** use Node 24 LTS for corepack e2e test by @jdx in
[#8915](#8915)
- **(ci)** add libxml2 and pkg-config to e2e Docker image by @jdx in
[#8917](#8917)
- **(ci)** add libxml2-dev to e2e image and disable Swift SPM tests by
@jdx in [#8918](#8918)
- **(docs)** use sans-serif font for badges by @jdx in
[#8887](#8887)
- **(env)** parse --env=VALUE and -E=VALUE flag forms correctly by @jdx
in [#8889](#8889)
- **(exec)** use i64::from() for seccomp syscall numbers to survive
autofix by @jdx in [#8882](#8882)
- **(github)** preserve tool options like filter_bins when version
specified via CLI by @jdx in
[#8888](#8888)
- **(github)** use alias-specific options when tool_alias has its own
config by @jdx in [#8892](#8892)
- **(install)** add locked_verify_provenance setting and detect github
attestations at lock time by @jdx in
[#8901](#8901)
- **(lock)** prune stale version entries during filtered `mise lock
<tool>` runs by @altendky in
[#8599](#8599)
- **(python)** use lockfile URL for precompiled installs by @hehaoqian
in [#8750](#8750)
- **(release)** verify all build targets succeed before releasing by
@jdx in [#8886](#8886)
- **(ruby)** support build revisions for precompiled binaries in
mise.lock by @jdx in [#8900](#8900)
- **(swift)** fall back to Ubuntu 24.04 for unsupported Ubuntu versions
by @jdx in [#8916](#8916)
- **(zsh)** avoid duplicate trust warning after cd by @timothysparg in
[#8898](#8898)
- update flake.lock and add fix for rust-bindgen to default.nix by
@esteve in [#8874](#8874)
- when direnv diff is empty, do not try to parse it by @yaleman in
[#8857](#8857)
- skip trust check for plain .tool-versions in task list by @dportalesr
in [#8876](#8876)

### 🚜 Refactor

- **(go)** rename go_* settings to go.* namespace by @jdbruijn in
[#8598](#8598)

### 📚 Documentation

- **(tasks)** clarify task_config.includes behavior by @risu729 in
[#8905](#8905)

### 🧪 Testing

- **(ci)** run e2e tests inside Docker containers by @jdx in
[#8899](#8899)

### 📦️ Dependency Updates

- bump ubi from 0.8 to 0.9 by @jdx in
[#8906](#8906)
- bump zip from 3 to 8 by @jdx in
[#8908](#8908)
- update lockfile deps (hold back rattler) by @jdx in
[#8909](#8909)
- update bun.lock by @jdx in
[#8913](#8913)

### 📦 Registry

- add turso
([github:tursodatabase/turso-cli](https://github.com/tursodatabase/turso-cli))
by @kenn in [#8884](#8884)
- remove carp test by @jdx in
[#8894](#8894)

### Chore

- **(ci)** add workflow to warn PRs modifying vendored aqua-registry by
@jdx in [#8897](#8897)
- **(ci)** use github.token for draft conversion in auto-draft workflow
by @jdx in [#8903](#8903)
- remove deprecated settings older than 12 months by @jdx in
[#8904](#8904)

### New Contributors

- @dportalesr made their first contribution in
[#8876](#8876)
- @timothysparg made their first contribution in
[#8898](#8898)
- @hehaoqian made their first contribution in
[#8750](#8750)
- @jdbruijn made their first contribution in
[#8598](#8598)
- @cprecioso made their first contribution in
[#8776](#8776)
- @yaleman made their first contribution in
[#8857](#8857)
- @kenn made their first contribution in
[#8884](#8884)
- @fragon10 made their first contribution in
[#8524](#8524)

## 📦 Aqua Registry Updates

#### New Packages (6)

- [`ahkohd/oyo`](https://github.com/ahkohd/oyo)
- [`bellicose100xp/jiq`](https://github.com/bellicose100xp/jiq)
- [`kurama/dealve-tui`](https://github.com/kurama/dealve-tui)
- [`micahkepe/jsongrep`](https://github.com/micahkepe/jsongrep)
- [`textfuel/lazyjira`](https://github.com/textfuel/lazyjira)
- [`ubugeeei/vize`](https://github.com/ubugeeei/vize)

#### Updated Packages (1)

- [`sigstore/cosign`](https://github.com/sigstore/cosign)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant