57 lines
2.2 KiB
JavaScript
57 lines
2.2 KiB
JavaScript
import assert from "node:assert/strict"
|
|
import { test } from "node:test"
|
|
import { areaOf, buildMatrix, laneOf, renderMarkdown } from "./spec-coverage-matrix.mjs"
|
|
|
|
test("laneOf classifies spec lanes", () => {
|
|
assert.equal(laneOf("a.test.ts"), "pr")
|
|
assert.equal(laneOf("a.e2e.test.ts"), "e2e")
|
|
assert.equal(laneOf("a.live.test.ts"), "live")
|
|
assert.equal(laneOf("contracts.snapshot.json"), null)
|
|
})
|
|
|
|
test("areaOf groups by slug prefix", () => {
|
|
assert.equal(areaOf("automation-revision-revert.e2e.test.ts"), "automation")
|
|
assert.equal(areaOf("workflows.e2e.test.ts"), "workflows")
|
|
})
|
|
|
|
test("buildMatrix counts lanes per contract and finds unmapped specs", () => {
|
|
const specNames = [
|
|
"automation-a.e2e.test.ts",
|
|
"automation-b.test.ts",
|
|
"workflow-x.e2e.test.ts",
|
|
"orphan-thing.test.ts",
|
|
"orphan-thing-two.e2e.test.ts",
|
|
]
|
|
const contracts = [
|
|
{
|
|
id: "desktop.automations",
|
|
description: "automations",
|
|
specs: ["evals/specs/automation-a.e2e.test.ts", "evals/specs/automation-b.test.ts"],
|
|
},
|
|
{ id: "den.workflows", description: "workflows", specs: ["evals/specs/workflow-x.e2e.test.ts"] },
|
|
]
|
|
const matrix = buildMatrix(specNames, contracts)
|
|
assert.equal(matrix.totalSpecs, 5)
|
|
assert.equal(matrix.mappedSpecs, 3)
|
|
assert.equal(matrix.unmappedSpecs, 2)
|
|
|
|
const automations = matrix.contracts.find((row) => row.id === "desktop.automations")
|
|
assert.deepEqual(automations.counts, { pr: 1, e2e: 1, live: 0 })
|
|
assert.deepEqual(automations.missingLanes, [])
|
|
|
|
const workflows = matrix.contracts.find((row) => row.id === "den.workflows")
|
|
assert.deepEqual(workflows.missingLanes, ["pr"])
|
|
|
|
assert.deepEqual(matrix.unmappedAreas, [{ area: "orphan", pr: 1, e2e: 1, live: 0 }])
|
|
})
|
|
|
|
test("renderMarkdown includes contract rows and unmapped areas", () => {
|
|
const matrix = buildMatrix(
|
|
["automation-a.e2e.test.ts", "orphan-thing.test.ts"],
|
|
[{ id: "desktop.automations", description: "automations", specs: ["evals/specs/automation-a.e2e.test.ts"] }],
|
|
)
|
|
const markdown = renderMarkdown(matrix)
|
|
assert.match(markdown, /\| desktop\.automations \| 0 \| 1 \| 0 \| pr \|/)
|
|
assert.match(markdown, /\| orphan \| 1 \| 0 \| 0 \|/)
|
|
})
|