Commit Graph

2 Commits

Author SHA1 Message Date
josh 47b5b8d6b0 test(02-06): playwright e2e assertions for G1+G2 — phase-2 gap closure complete
Threads 3 new assertions into the existing PIPE-07 spec to verify the
G1 + G2 gap fixes hold end-to-end in a real Chromium browser:

- Assertion A (G1, after initial nav): document.body computed
  background-color is rgb(26, 26, 26) — proves src/index.css bundled
  cleanly into the entry chunk and applies before React mounts.
- Assertion B (G2, after Begin click): the FirstRunHint element
  (data-testid="first-run-hint") is visible with non-empty externalized
  text content from ui-strings.yaml.
- Assertion C (G2, after first plant): the FirstRunHint is gone —
  proves the component's tiles subscription dismisses on the first
  plant !== null transition.

The existing 16-step assertion chain continues to pass unchanged. Test
runtime grew from 1.6s → 1.7s (3 cheap evaluations + 1 visibility +
1 negation). All 4 first-impression UX gaps are now structurally closed.

npm run ci exits 0 (333/333 vitest green; ~21 new tests across G1+G2+G3+G4).
npm run test:e2e exits 0 (Playwright PIPE-07 + 3 new gap-closure assertions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 12:17:55 -04:00
josh dd486969a9 test(02-05): playwright e2e for PIPE-07 — full Phase-2 loop
- tests/e2e/season1-loop.spec.ts: PIPE-07 smoke covering load → Begin
  → plant rosemary → fast-forward FakeClock 3min → harvest →
  fragment-reveal modal → close → journal-icon visible → open journal
  → fragment present → reload page → fragment persists. Sidesteps
  Phaser canvas pixel-clicking via window.__tlgStore command dispatch
  (test-only window slot, production-guarded by import.meta.env.PROD).
- playwright.config.ts: bumped webServer timeout 30s → 60s for cold
  Vite startup; pinned port 5273 + --strictPort to avoid collisions
  with other dev servers on the user's machine; reuseExistingServer
  false so the spec always starts a fresh Vite against this project.
- package.json: added test:e2e script (npx playwright test). Not
  added to npm run ci — Playwright is slower than Vitest; manual run
  before /gsd-verify-work + future v1 release pipeline.
- src/content/loader.ts (Rule 3 — Blocking): replaced gray-matter
  with a 15-line parseFrontmatter helper. gray-matter pulls in Node's
  Buffer global which is undefined in Vite's browser bundle; the
  build emits a 'Module "buffer" externalized' warning that masks
  the runtime ReferenceError. Surfaced under Vite dev mode while
  running the e2e — Plan 02-03's Markdown loader path (lura-first-
  letter.md + winter-rose-night.md) was effectively broken in real
  browsers since shipping. parseFrontmatter handles the strict
  '---<yaml>---<body>' shape the .md fragments use; bundle dropped
  from 2.2MB to 1.9MB as a side effect of dropping the unused dep.
- deferred-items.md: tracks the gray-matter package.json cleanup
  (the dep is now unused but kept in package.json for now, scoped
  out of this plan).
- npx playwright test exits 0 (1 spec, 1.5s test runtime); npm run
  ci exits 0; 308/308 vitest still green. PIPE-07 satisfied
  end-to-end.
2026-05-09 11:04:32 -04:00