import { readdirSync, readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; // E28 S3d4 (B9). The header + fade edge is one recipe, the `fade-below` / `fade-below-panel` / // `fade-above-panel` utilities in index.css: a crisp band and a 1rem gradient of the colour under // it. The table header carried its own arbitrary-value copy of it, which a change to the recipe (its // height, its colour on a panel) would have left behind. function sources(): Array<[string, string]> { const walk = (u: URL, prefix: string): Array<[string, string]> => readdirSync(u, { withFileTypes: true }).flatMap((e) => { if (e.isDirectory()) return walk(new URL(`${e.name}/`, u), `${prefix}${e.name}/`); if (!/\.tsx?$/.test(e.name) || e.name.includes(".test.")) return []; return [ [`${prefix}${e.name}`, readFileSync(new URL(e.name, u), "utf-8")] as [string, string], ]; }); return walk(new URL("../", import.meta.url), ""); } describe("the fade edge", () => { it("is the utility, never an arbitrary gradient of a surface colour", () => { const copies = sources() .filter(([, src]) => /linear-gradient\(to_(?:bottom|top),var\(--(?:bg|surface|card)\)/.test(src), ) .map(([name]) => name); expect(copies).toEqual([]); }); });