Skip to content

ci: test on macOS and Node 24 - #6096

Merged
NathanWalker merged 1 commit into
mainfrom
ci/macos-and-node-24
Jul 29, 2026
Merged

ci: test on macOS and Node 24#6096
NathanWalker merged 1 commit into
mainfrom
ci/macos-and-node-24

Conversation

@edusperoni

@edusperoni edusperoni commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

PR Checklist

  • The PR title follows our guidelines.
  • There is an issue for the bug/feature this PR is for. (no tracking issue — happy to open one)
  • You have signed the CLA.
  • All existing tests are passing.
  • Tests for the changes are included. (this PR is CI configuration)

What is the current behavior?

ubuntu-latest with Node 20.x and 22.x — four gaps in one line.

No macOS. Seven test files contain darwin-gated paths that have therefore never executed in CI: ios-project-service, ios-device-debug-service, debug-controller, xcode-select-service, ios-simulator-discovery, host-info, devices-service. On a CLI whose primary job is building iOS apps, the iOS-specific logic is the part with no coverage. This is also the source of the count difference between local (1514) and CI (1501) — 13 tests that simply never run.

No Node 24. Node 24 is the active LTS. Node 20 reached end of life in April 2026 and Node 22 is in maintenance — so the matrix tests a dead runtime and the maintenance one, while the release publishes from 22 and most users are on 24.

What is the new behavior?

runner Node
ubuntu-latest 20.x, 22.x, 24.x
macos-latest 24.x

Four jobs rather than a 3×2 cross-product. macOS runners are free on a public repo, but queue time is not, and one darwin leg is enough to cover platform-gated code — a second Node version there would re-run the same suite for very little.

Node 24 is added rather than 20 dropped, since engines still declares >=20.0.0. Worth noting separately that permitting an end-of-life runtime is its own decision; this PR only makes the matrix match what is declared.

harden-runner is now conditional on runner.os == 'Linux' — it only supports the Ubuntu runners.

Verification

Node 24 was validated locally before proposing it, rather than pushing and hoping:

  • full suite on Node 24.18.0: 1514 passing, 38 skipped, 101 files — identical to Node 22
  • npm run build.release succeeds on Node 24, and the built CLI reports its version and renders help

The macOS leg is the one that cannot be pre-validated from a single machine — the point of adding it is to execute code no CI job has run before, so it is possible those 13 tests surface problems. That is the intent, and worth watching on the first run.

Summary by CodeRabbit

  • Tests
    • Expanded automated test coverage across Ubuntu and macOS environments.
    • Added testing for Node.js 24.x alongside existing Node.js 20.x and 22.x configurations.
    • Enabled platform-specific test coverage for iOS-related suites on macOS.

The matrix covered ubuntu with Node 20 and 22, which leaves two gaps.

Node 24 is the active LTS; 20 reached end of life in April 2026 and 22 is in
maintenance. So the versions being tested were a dead one and a maintenance
one, with the release itself published from 22. 24 is added rather than
dropping 20, since engines still allows it.

More significantly, seven test files contain darwin-gated paths that have
never run in CI - ios-project-service, ios-device-debug-service,
debug-controller, xcode-select-service, ios-simulator-discovery, host-info
and devices-service. On a CLI whose main job is building iOS apps, that was
the untested part, and it is the source of the 13-test gap between the local
and CI counts.

One macOS leg on the LTS covers those without a full cross-product; runners
are free on a public repo but the queue time is not. harden-runner only
supports the Ubuntu runners, so it is now conditional.
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f28ca243-2d66-49dc-9ca4-38d93d412ec1

📥 Commits

Reviewing files that changed from the base of the PR and between 4d46547 and f4aac88.

📒 Files selected for processing (1)
  • .github/workflows/tests.yml

📝 Walkthrough

Walkthrough

The GitHub Actions test matrix now covers Ubuntu with Node.js 20.x, 22.x, and 24.x, plus macOS with Node.js 24.x. Job names include the operating system, and runner hardening remains Linux-only.

Changes

CI test matrix

Layer / File(s) Summary
Test matrix coverage
.github/workflows/tests.yml
The test job adds Ubuntu Node.js 24.x and macOS Node.js 24.x configurations, updates job naming to include matrix.os, and preserves the Linux-only runner-hardening step.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Poem

A rabbit hops where test runs grow,
On Ubuntu and macOS they go.
Node versions join the cheerful race,
Linux hardening stays in place.
CI carrots bloom in every row!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main CI change: adding macOS coverage and Node 24 testing.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@NathanWalker
NathanWalker merged commit 695de03 into main Jul 29, 2026
9 checks passed
@NathanWalker
NathanWalker deleted the ci/macos-and-node-24 branch July 29, 2026 16:11
@coderabbitai coderabbitai Bot mentioned this pull request Jul 29, 2026
5 tasks
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.

2 participants