Crimson Grid, Tangerine Ledger, Slate Band and Teal Swoosh are rebuilt from the reference PDFs with grid and band tables that survive page breaks, full-bleed fixed bands, pennant tabs, gradient corner swooshes with keep-outs, Carbon icon circles, and the user's logo in the measured slot (knockout or white chip on the dark Slate band). Adds static Poppins 500-700 and Inter fonts. Thumbnails regenerated for all eight templates; the item-count sweeps run in their own test file.
22 lines
1.0 KiB
TypeScript
22 lines
1.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { makeItems, prefsFor, PAGE_SIZE_IDS, renderFixture, type FixtureSpec } from "./harness";
|
|
import { checkRendered } from "./harness.check";
|
|
import { TEMPLATES } from "./registry";
|
|
|
|
// Its own file so vitest runs the long item-count sweeps in parallel with the fixture matrix.
|
|
describe("template harness: item-count sweep", () => {
|
|
for (const template of Object.values(TEMPLATES)) {
|
|
for (const size of PAGE_SIZE_IDS) {
|
|
it(`${template.id}: 1..45 items on ${size}`, async () => {
|
|
const prefs = prefsFor(size, { templateId: template.id });
|
|
for (let count = 1; count <= 45; count++) {
|
|
const spec: FixtureSpec = { name: `sweep-${count}`, items: makeItems(count, true), invoice: { notes: count % 3 === 0 ? "Payment due within 30 days.\nThank you." : "" }, signature: count % 2 === 0 };
|
|
const r = await renderFixture(spec, prefs);
|
|
checkRendered(r, `${template.id}/items=${count}/${size} (${r.result.pages} pages)`);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|