whynot-design/tests/visual/ui-kit.spec.mjs

53 lines
2.1 KiB
JavaScript
Raw Normal View History

2026-05-23 16:34:14 +02:00
import { test, expect } from "@playwright/test";
2026-05-25 19:32:22 +02:00
// Visual-regression baselines for @whynot/design.
//
// Two example pages are covered:
// 1. examples/showcase/index.html — every component, one page
// 2. examples/whynot-control/index.html — full app composition
2026-05-23 16:34:14 +02:00
//
// To update intentionally: pnpm test:visual:update
2026-05-25 19:32:22 +02:00
test.describe("showcase — every component", () => {
test("renders", async ({ page }) => {
await page.goto("/examples/showcase/index.html");
// Wait for custom elements to register + Lit to render.
await page.waitForFunction(() => !!customElements.get("wn-button"));
await page.waitForTimeout(800);
await expect(page).toHaveScreenshot("showcase.png", { fullPage: true });
});
});
2026-05-23 16:34:14 +02:00
test.describe("whynot-control UI kit", () => {
test("prototypes index", async ({ page }) => {
2026-05-25 19:32:22 +02:00
await page.goto("/examples/whynot-control/index.html");
2026-05-23 16:34:14 +02:00
await page.waitForFunction(() => !!document.querySelector("aside"));
2026-05-25 19:32:22 +02:00
await page.waitForTimeout(800);
2026-05-23 16:34:14 +02:00
await expect(page).toHaveScreenshot("01-prototypes.png", { fullPage: true });
});
test("inbox", async ({ page }) => {
2026-05-25 19:32:22 +02:00
await page.goto("/examples/whynot-control/index.html");
2026-05-23 16:34:14 +02:00
await page.waitForFunction(() => !!document.querySelector("aside a"));
await page.click("aside a:has-text('Inbox')");
2026-05-25 19:32:22 +02:00
await page.waitForTimeout(500);
2026-05-23 16:34:14 +02:00
await expect(page).toHaveScreenshot("02-inbox.png", { fullPage: true });
});
test("signals", async ({ page }) => {
2026-05-25 19:32:22 +02:00
await page.goto("/examples/whynot-control/index.html");
2026-05-23 16:34:14 +02:00
await page.waitForFunction(() => !!document.querySelector("aside a"));
await page.click("aside a:has-text('Signals')");
2026-05-25 19:32:22 +02:00
await page.waitForTimeout(500);
2026-05-23 16:34:14 +02:00
await expect(page).toHaveScreenshot("03-signals.png", { fullPage: true });
});
test("control doc — INTENT.md", async ({ page }) => {
2026-05-25 19:32:22 +02:00
await page.goto("/examples/whynot-control/index.html");
2026-05-23 16:34:14 +02:00
await page.waitForFunction(() => !!document.querySelector("aside a"));
await page.click("aside a:has-text('INTENT.md')");
2026-05-25 19:32:22 +02:00
await page.waitForTimeout(500);
await expect(page).toHaveScreenshot("04-doc-intent.png", { fullPage: true });
2026-05-23 16:34:14 +02:00
});
});