import { describe, expect, it } from "vitest"; import { buildQaCoverageInventory, renderQaCoverageMarkdownReport } from "./coverage-report.js"; import { readQaScenarioPack } from "./scenario-catalog.js"; describe("qa coverage report", () => { it("groups scenario coverage metadata by theme and surface", () => { const inventory = buildQaCoverageInventory(readQaScenarioPack().scenarios); expect(inventory.scenarioCount).toBeGreaterThan(0); expect(inventory.coverageIdCount).toBeGreaterThan(0); expect(inventory.primaryCoverageIdCount).toBeGreaterThan(0); expect(inventory.secondaryCoverageIdCount).toBeGreaterThan(0); expect(inventory.overlappingCoverage.length).toBeGreaterThan(0); expect(inventory.missingCoverage).toEqual([]); expect(inventory.byTheme.memory.some((feature) => feature.id === "memory.recall")).toBe(true); expect(inventory.bySurface.memory.some((feature) => feature.id === "memory.recall")).toBe(true); }); it("renders a compact markdown inventory", () => { const report = renderQaCoverageMarkdownReport( buildQaCoverageInventory(readQaScenarioPack().scenarios), ); expect(report).toContain("# QA Coverage Inventory"); expect(report).toContain("- Missing coverage metadata: 0"); expect(report).toContain("- Overlapping coverage IDs:"); expect(report).toContain("memory.recall"); expect(report).toContain("primary: memory-recall (qa/scenarios/memory/memory-recall.md)"); expect(report).toContain("secondary: active-memory-preprompt-recall"); }); });