Road to 10 — Wave 2 · PR-T3

# Landing page Playwright E2E

8 specs · chromium desktop + mobile · catches what vitest cannot

## Why E2E now

The landing redesign (#1399) ships JSX with custom CSS variables, dark-mode tokens, and responsive layout. vitest validates units; nothing validated that the rendered page works. PR-T3 fills that gap.

## Coverage matrix

Spec | Project | Asserts
--- | --- | ---
hero renders with brand headline + CTAs | desktop | headline split, eyebrow, both CTAs
proof strip shows GitHub stars | desktop | real "Nk stars" or graceful "Star on GitHub"
three primitive cards render with counts | desktop | building-blocks heading + 3 h3s + tabular-nums
all 8 recipe cards + NEW badge | desktop | each cookbook title + /ork:design-ship
three persona value-prop cards | desktop | 01/02/03 eyebrows + titles
hero foreground resolves to a real color | desktop | computed color is rgb/oklch/lab/etc, not transparent
primary button uses emerald token | desktop | computed background is a real color
layout stacks without horizontal overflow | mobile | scrollWidth ≤ clientWidth + CTAs visible

## Local run output

    $ cd docs/site && npx playwright test --project=chromium-desktop

      ✓ 1 Landing — hero › hero renders with brand headline + CTAs
      ✓ 2 Landing — hero › proof strip shows GitHub stars
      ✓ 3 Landing — primitives › three primitive cards render with counts
      ✓ 4 Landing — cookbook recipes › all 8 recipe cards render
      ✓ 5 Landing — value-prop strip › three persona cards
      ✓ 6 Landing — design tokens › hero foreground resolves
      ✓ 7 Landing — design tokens › primary button uses emerald token
      - 8 Landing — mobile viewport (skipped on desktop project)

      7 passed, 1 skipped (8.3s)

## Wired in

- `docs/site/playwright.config.ts` — auto-spawns dev server, 2 projects (desktop + mobile)
- `docs/site/e2e/landing.spec.ts` — 8 specs across 6 describe blocks
- `docs/site/package.json` → `test:e2e` script + `@playwright/test` devDep
- `docs/site/.gitignore` — `test-results/`, `playwright-report/`, `playwright/.cache/`

## Wave 2 progress (3 of 5)

    PR-T1   formatStars unit test                ✓ merged (#1412)
    PR-T2   sync_versions round-trip             ✓ merged (#1414)
    PR-T3   Playwright E2E for landing           ← THIS PR
    PR-T4   handoff bundle schema validator      next
    PR-T5   stub-fallback integration test