scripts/run-tests.cjs gains `--suite <name>` filtering using a filename
suffix convention (`*.security.test.cjs`, `*.integration.test.cjs`, …).
Files with no marker are `unit` (the default fast lane); files with a
marker land in the matching suite. No `--suite` flag preserves the prior
behavior of running every test (backcompat for `npm test` and
`npm run test:coverage`).
New package scripts wire the suites to stable entrypoints:
test:unit, test:integration, test:install, test:security, test:slow,
test:coverage:unit, test:coverage:all. Unknown suite → exit 2 with the
list of valid suites; empty suite → exit 0 with a stderr notice so empty
lanes (e.g. `security` before adversarial tests land) don't gate CI.
CI matrix grows from `ubuntu × {22,24}` + a single macOS lane to
`{ubuntu, macos, windows} × {22, 24, 26}`. `fail-fast: false` so one
lane failure doesn't cancel siblings. Node 26 is `continue-on-error`
until actions/setup-node stabilises that image. PR CI runs unit +
integration + security on every cell; `install` and `slow` only on
`main` push. A dedicated `coverage` job runs `test:coverage:unit` on
ubuntu/Node 24 and uploads the report.
Grouping policy lives in docs/TESTING-SUITES.md with a pointer from
CONTRIBUTING.md. New harness test covers arg parsing, filter selection,
empty-suite behavior, and failure propagation.
Closes #3597.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.0 KiB
type, pr
| type | pr |
|---|---|
| Changed | 3597 |
Test suites split into named lanes and CI matrix expanded to OS×Node — scripts/run-tests.cjs now accepts --suite <unit|integration|install|security|slow|all> and filters by filename suffix (*.security.test.cjs, *.integration.test.cjs, etc.). New package scripts test:unit, test:integration, test:install, test:security, test:slow, test:coverage:unit, and test:coverage:all give callers stable entrypoints; npm test and npm run test:coverage keep their original behavior (full sweep). CI matrix grew from ubuntu × {22, 24} + a single macOS lane to {ubuntu, macos, windows} × {22, 24, 26} with Node 26 in continue-on-error until actions/setup-node stabilises it. fail-fast: false so a single lane failure no longer cancels the rest. Install and slow suites only run on main push to keep PR CI fast; a dedicated coverage job runs test:coverage:unit on ubuntu/Node 24 and uploads the report. New grouping policy documented in docs/TESTING-SUITES.md. Closes #3597.