56 lines
2.4 KiB
TypeScript
56 lines
2.4 KiB
TypeScript
import { readFile } from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
const sourcePath = path.join(__dirname, "verify-theme-error-state-baseline.mjs");
|
|
|
|
async function readRunnerSource() {
|
|
return readFile(sourcePath, "utf8");
|
|
}
|
|
|
|
describe("Theme Error State baseline runner contract", () => {
|
|
it("writes the baseline health report to the diagnostic artifact path", async () => {
|
|
const source = await readRunnerSource();
|
|
|
|
expect(source).toContain(".tc/baselines/theme-error-state/baseline-health.md");
|
|
});
|
|
|
|
it("declares the required non-E2E baseline gates", async () => {
|
|
const source = await readRunnerSource();
|
|
|
|
expect(source).toContain('id: "typecheck"');
|
|
expect(source).toContain('args: ["run", "typecheck"]');
|
|
expect(source).toContain('id: "lint"');
|
|
expect(source).toContain('args: ["run", "lint"]');
|
|
expect(source).toContain('id: "ci-baseline"');
|
|
expect(source).toContain('args: ["scripts/verify-ci-baseline.mjs"]');
|
|
expect(source).toContain('id: "vitest-health-readiness"');
|
|
expect(source).toContain('"apps/web/app/routes/healthz.test.ts"');
|
|
expect(source).toContain('"apps/web/app/routes/readyz.test.ts"');
|
|
expect(source).toContain('"apps/web/app/routes/healthcheck.test.ts"');
|
|
expect(source).toContain('"apps/web/app/routes/health-readiness.test.ts"');
|
|
expect(source).toContain('id: "theme-error-inventory"');
|
|
expect(source).toContain('type: "baseline-inventory"');
|
|
expect(source).toContain("read-only theme/error surface inventory");
|
|
});
|
|
|
|
it("keeps health/readiness coverage on explicit Vitest file paths", async () => {
|
|
const source = await readRunnerSource();
|
|
|
|
expect(source).toMatch(/"exec",\s*\n\s*"vitest",\s*\n\s*"run",\s*\n\s*"apps\/web\/app\/routes\/healthz\.test\.ts"/);
|
|
expect(source).toContain('"apps/web/app/routes/readyz.test.ts"');
|
|
expect(source).not.toMatch(/args:\s*\[[^\]]*"test"[^\]]*\]/s);
|
|
expect(source).not.toContain("pnpm test");
|
|
});
|
|
|
|
it("renders report result labels used for baseline comparisons", async () => {
|
|
const source = await readRunnerSource();
|
|
|
|
expect(source).toContain("- Exitcode: ${result.exitCode}");
|
|
expect(source).toContain("- Failure Count: ${result.failureCount}");
|
|
expect(source).toContain("- Output Fingerprint: ${result.fingerprint.hash}");
|
|
});
|
|
});
|