Files
ipx/scripts/coverage-node.sh
rays f6ba08d506 Coverage measures the page's Node tests and runs the Rust on Postgres (#407)
page-unit.ts and native-bridge.ts run the page's script outside a
browser, so the page's coverage counted none of what they test, and
native.ts read as mostly untested. In a coverage run they now run the
script from a file of its own, named as the browser names it, under
NODE_V8_COVERAGE (scripts/coverage-node.sh, before the browser suite in
npm run coverage:page and coverage.sh api), and the report's teardown
takes their record in, mapped to web/src by the build's source map: the
page's lines went from 73.3% to 80.0% of 3,043, native.ts to 93 of 120.

The cargo tests in coverage.sh's container run on Postgres, as
production does, when IPX_TEST_DATABASE_URL names the _test database,
from the shell or else /src/.envrc (that variable only); on SQLite
without it. The integration tests' own files are left out of the
totals; a crate's inline mod tests cannot be on stable Rust.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 04:57:32 +00:00

11 lines
504 B
Bash

#!/bin/sh
# The page's Node tests, measured (#407): page-unit.ts and native-bridge.ts run the page's script
# outside a browser, so the browser suite's coverage never saw what they test. Run before the
# browser suite in a coverage run; its teardown (tests/ui/coverage-teardown.ts) takes this in.
set -eu
cd "$(dirname "$0")/.."
rm -rf target/coverage/node-v8
export IPX_COVERAGE=1 NODE_V8_COVERAGE=target/coverage/node-v8
node --test tests/page-unit.ts >/dev/null
node tests/native-bridge.ts >/dev/null