codeburn/.github/workflows/tests.yml
Aditya Vikram Singh f718077a9b ci: gate the serial cache-lock suite after #904
Extra High MERGE AFTER FIX on a3beafb. The process tests admitted
completed-by-other as a non-owner outcome, but the workflow still
had continue-on-error and a quarantined step name. The suite now
gates. Still serial (parallelism-sensitive). No tryTakeover rewrite.
2026-08-21 22:09:47 +05:30

45 lines
1.7 KiB
YAML

name: Tests
on:
pull_request:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
# Package floor, and the newest 22.x so paths gated on later node:zlib
# features (zstd, 22.15+) get exercised.
node-version: [22.13.0, 22]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: npm
- run: npm ci
- name: Typecheck
run: npx tsc --noEmit
# The cache-refresh-lock files exercise a cross-process file lock and are
# parallelism-sensitive (they fail under full worker pressure and pass serially -
# reproduced repeatedly on unmodified main), so they run in their own serial step
# below instead of making every PR roll dice.
# Scoping (tests/ only, app/ excluded) lives in the package.json test
# script since #948, so CI and a contributor's `npm test` can never drift.
- name: Test suite (parallel)
run: npm test
# Single forked worker, so lock contention comes only from the child
# processes the tests spawn deliberately. Serial because the suite is
# parallelism-sensitive (fails under full worker pressure, passes
# serially). After #904 the loser of a stale-lock contest may be
# timed-out or completed-by-other; this step gates CI.
# Step-level timeout so a stalled lock suite fails this job instead of
# eating the 15-minute budget and cancelling a green parallel suite.
- name: Cache-lock suite (serial)
timeout-minutes: 5
run: npm run test:locks