Visual E2E at five viewports, typecheck e2e-tests in the gate, drop unused icons
CI / full-gate (push) Successful in 3m29s

This commit is contained in:
2026-10-31 08:20:16 +01:00
parent be3553c1e2
commit 520d2c928d
14 changed files with 488 additions and 32 deletions
+6 -1
View File
@@ -32,11 +32,16 @@ test("the commit-hash image is pushed even when the gate no-ops", () => {
test("every E2E suite the gate runs writes its artifacts as the invoking user", () => {
// The documented hand-run commands carry the same flag (src/compose.test.ts).
const runs = gate.split("\n").filter((l) => /docker compose .*\brun\b.*\be2e\b/.test(l));
assert.equal(runs.length, 2, "the suite helper and the devstack run");
assert.equal(runs.length, 3, "the e2e-tests typecheck, the suite helper and the devstack run");
for (const line of runs)
assert.match(line, /--user "\$\(id -u\):\$\(id -g\)"/, `runs as the caller: ${line.trim()}`);
});
test("the gate typechecks e2e-tests in the runner image, where @playwright/test resolves", () => {
assert.match(gate, /docker compose .*\brun\b.*--no-deps\b.*\be2e\b npm run typecheck/);
assert.match(read("e2e-tests/package.json"), /"typecheck": "tsc --noEmit"/);
});
test("only *.md counts as docs; a dirty tree and a rename both count as changed", () => {
assert.ok(gate.includes("\\.md$"), "the non-docs match is a *.md suffix test");
assert.match(gate, /git status --porcelain --no-renames/, "uncommitted code and a staged rename can never be skipped over");
-3
View File
@@ -9,12 +9,9 @@ export const ICON_NAMES: Record<string, string> = {
"i-bell": "bell",
"i-box": "box",
"i-cal": "calendar",
"i-chart": "chart-no-axes-column",
"i-check-circle": "circle-check",
"i-chev": "chevron-right",
"i-cols": "columns-3",
"i-copy": "copy",
"i-download": "download",
"i-edit": "pencil",
"i-globe": "globe",
"i-grid": "layout-grid",