// @ts-check // Tests: A1–A5 (feature checks) and AX1–AX5 (axe scans) const { test, expect } = require('@playwright/test'); // ── A1: Skip link ────────────────────────────────────────────────────────────── test('A1: skip link targets #main-content and is first focusable element', async ({ page }) => { await page.goto('/'); const skipLink = page.locator('.skip-link'); await expect(skipLink).toBeAttached(); await expect(skipLink).toHaveAttribute('href', '#main-content'); await expect(page.locator('#main-content')).toBeAttached(); }); // ── A2: Color token contrast ─────────────────────────────────────────────────── test('A2: contrast tokens meet WCAG AA 4.5:1 floor', async ({ page }) => { await page.goto('/'); const [muted, accent] = await page.evaluate(() => [ getComputedStyle(document.documentElement).getPropertyValue('--color-ink-muted').trim(), getComputedStyle(document.documentElement).getPropertyValue('--color-accent').trim(), ]); expect(muted.toLowerCase()).toBe('#90887e'); expect(accent.toLowerCase()).toBe('#2e9880'); });