test: capture re-baseline inventory + coverage snapshot (phase 0)

This commit is contained in:
SnapOtter
2026-06-19 20:03:34 +08:00
parent 97ba21e5e0
commit 531fb472f5
6 changed files with 28009 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
*-raw.json
+41
View File
@@ -0,0 +1,41 @@
# Quarantine List (Phase 0 Baseline)
Items deferred from this baseline capture. Phase 4 (e2e serial-bucket repair)
empties this file.
## E2E serial bucket (known-red, pre-2.0-UI selectors)
The following `chromium-serial` specs rely on pre-2.0 selectors and are not yet
updated. They are the explicit subject of Phase 4, not repaired here:
- `gui-settings-general.spec.ts`
- `gui-settings-rbac.spec.ts`
- `gui-settings-people.spec.ts`
- `rbac.spec.ts`
- `rbac-full.spec.ts`
- `people.spec.ts`
- `theme.spec.ts`
## Docker suite (`pnpm test:docker`)
The full-container install-smoke gate (`docker-compose.test.yml`) churns tens of
GB of build cache on this machine (see CLAUDE.md ops note). It is run and
elevated in Phase 4. Last-known CI status: see `.github/workflows/test.yml`
(the `docker` job).
## Local doc-binary skips (not quarantine, informational)
The following integration test files skip cleanly via `describe.skipIf`
because `pandoc`, `libreoffice`/`soffice`, `pdfcpu`, and `pdf2docx` are not
installed on this development machine. These pass in CI where the Docker image
provides all binaries:
- `convert-document.test.ts`
- `epub-convert.test.ts`
- `html-to-pdf.test.ts`
- `doc-to-pdf.test.ts`
- `pdf-to-docx.test.ts`
- `compress-pdf.test.ts`
- `pdf-to-image.test.ts`
Total local integration skips: 217 tests across 7 files.
File diff suppressed because it is too large Load Diff
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env node
// Reduces a Vitest/Playwright JSON report to { testIds: string[], passSet: string[] }.
// Used by the parity gate: a later phase must keep testIds >= pre and passSet >= pre.
import { readFileSync, writeFileSync } from "node:fs";
const inPath = process.argv[2];
const outPath = process.argv[3];
if (!inPath || !outPath) {
console.error("usage: extract-inventory.mjs <report.json> <out.json>");
process.exit(1);
}
const report = JSON.parse(readFileSync(inPath, "utf8"));
const testIds = [];
const passSet = [];
// Vitest/Jest shape: { testResults: [{ name, assertionResults: [{ fullName, status }] }] }
for (const file of report.testResults ?? []) {
for (const a of file.assertionResults ?? []) {
const id = `${file.name} > ${a.fullName}`;
testIds.push(id);
if (a.status === "passed") passSet.push(id);
}
}
testIds.sort();
passSet.sort();
writeFileSync(outPath, JSON.stringify({ testIds, passSet, counts: { total: testIds.length, passed: passSet.length } }, null, 2));
console.log(`inventory: ${testIds.length} tests, ${passSet.length} passed -> ${outPath}`);
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff