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>
This commit is contained in:
@@ -9,13 +9,13 @@
|
||||
// a second <script> on a page would, so `run` evaluates an expression there.
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { makeContext, vm } from './dom-stub.ts';
|
||||
import { makeContext, vm, scriptName } from './dom-stub.ts';
|
||||
import { buildPage } from '../web/build.mts';
|
||||
|
||||
const { html, js } = buildPage('index.html');
|
||||
const { ctx } = makeContext(html, js);
|
||||
vm.createContext(ctx);
|
||||
vm.runInContext(js, ctx, { filename: 'index.html<script>', timeout: 5000 });
|
||||
vm.runInContext(js, ctx, { filename: scriptName(js, 'index.html<script>'), timeout: 5000 });
|
||||
// What the page's script answers, from inside the VM: its types are the script's, not this file's.
|
||||
const run = (expr: string): any => vm.runInContext(expr, ctx);
|
||||
// Time as the page sees it, for the helpers that count from now.
|
||||
|
||||
Reference in New Issue
Block a user