- 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.
- vitest.config.ts: happy-dom environment (so Plan 03's IndexedDB tests
can layer fake-indexeddb on top of happy-dom's window per RESEARCH);
passWithNoTests:false enforces RESEARCH CI Pitfall B (a green CI run
must mean tests *ran*, not 'no tests existed'); include glob covers
src/**/*.test.ts(x) and scripts/**/*.test.mjs.
- playwright.config.ts: testDir 'tests/e2e' (not yet created — first spec
lands in Phase 2 PIPE-07); webServer config wires npm run dev so smoke
tests can self-start the dev server; baseURL pinned to vite default.
- src/__sentinel__.test.ts: a single test asserting 1+1===2 AND that
globalThis.window exists, proving the runner is wired and happy-dom is
active. To be deleted once real tests exist (Plan 03 onward).
- npm test → 1 file, 1 test passed in 593ms.
- npx playwright --version → Version 1.59.1 (matches RESEARCH lock).