Skip to content

bug(tests): installer-posix-bootstrap and voice-session fail on Node 22, which engines still supports; CI only runs Node 24 #3229

Open

Description

@danielgap

Before submitting

  • I searched open and closed issues and did not find a report of this problem.
  • I reviewed this report and removed credentials, tokens, private paths, hostnames, and other sensitive data.

Problem

package.json declares engines.node: "^22.19.0 || >=23.6.0", but every CI job pins node-version: "24". On Node 22 two unit test files fail deterministically, so local pnpm test exits 1 for contributors on a supported Node while CI stays green:

  • tests/installer-posix-bootstrap.test.ts — valid canonical ranges, including safe integer floors, still start the wizard fails for the range ^1.0.0 || >=23.6.0 with Node requirement rejected, although the test asserts nodeRequirementSatisfied(range, "24.21.0") and installs a fake Node. The bootstrap appears to validate the real host Node (22.x) instead of the fixture's.
  • tests/voice-session.test.ts — all 8 tests (plus one subtest) are cancelled with Promise resolution is still pending but the event loop has already resolved.

Both files pass on Node 24.22.0 in the same checkout and environment. This is the same class as #1436 and #2438 (Node 22-only test failures hidden by a Node 24-only CI). Fixing these tests and adding Node 22 to the CI matrix would stop the class from recurring; alternatively engines should stop advertising Node 22.

Steps to reproduce

  1. Check out main (b1af8a493) on Linux with Node 22.22.2.
  2. Run, with an isolated home so host state does not interfere:
    HOME=$(mktemp -d) node --experimental-strip-types --test tests/installer-posix-bootstrap.test.ts tests/voice-session.test.ts
  3. Observe 1 failure and 9 cancellations.
  4. Repeat step 2 with Node 24.22.0: everything passes.

Expected and actual behavior

Expected: the unit suite passes on every Node version engines declares, and CI exercises the lowest supported major.
Actual: on Node 22.22.2, installer-posix-bootstrap has 1 failure and voice-session has 9 cancelled tests; CI only runs Node 24, so this is not caught.

gentle-pi version

main @ b1af8a4

Pi version

1.5.2

Operating system

Linux

Relevant logs or error output (optional)

not ok - valid canonical ranges, including safe integer floors, still start the wizard
  "^1.0.0 || >=23.6.0": Node requirement rejected
  Bootstrap: Prerequisite acquisition or wizard child failed
  1 !== 0

not ok - cancel discards the transcript, ignores late results and leaves no worker
  failureType: 'cancelledByParent'
  error: 'Promise resolution is still pending but the event loop has already resolved'
(same cancellation for the remaining voice-session tests)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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