node-test + tsx adapters — closes the gap that dropped 5 repos' unit halves
Additive to v1.1.0. No breaking changes; existing runners: lines keep working unchanged.
New runner handlers
node-test— parses thenode --test(node:test) summary reporter, both shapes:# pass N(TAP, node 20) andℹ pass N(spec, node 22+). It reads the summary, never theok-lines, so a run with 3ok-lines andfail 1in its summary is correctly counted and flagged red.tsx— parses bespoketsx/node:assertharnesses (the estate's website unit suites). Sums multiple unlabeled summary lines across chained invocations (tsx a && tsx b && tsx c) and ignores interleaved noise.
Both handlers are fail-closed: output with no parseable summary exits non-zero rather than silently emitting a zero.
Why this matters
Five repositories' unit halves were counted as 0 before these handlers existed — the emitter had no adapter for their runner families, and a missing adapter looked exactly like an empty suite. This release makes those halves visible.
Also in this release
- no-silent-zero guard: a GREEN run that parses 0 tests from non-empty output now exits non-zero. A RED run parsing 0 still emits (
red:true) and never dies — a broken suite must not become an invisible suite. - Golden fixture D (goldoni):
total 35 = e2e 20 + unit 15(6 node-test + 9 tsx), regression-locked. - Red fixtures for both new handlers.
Verification
40/40 bats assertions green, shellcheck clean on emit-test-stats.sh + tests/validate-schema.sh, schema validation of golden A/B/C passing, CI green on the release commit.
Consumers
v1 is re-pointed to this release. Consumers pinning @v1 pick the adapters up on their next run; consumers pinning a raw SHA should move to @v1.2.0.