docs(14): capture phase context

This commit is contained in:
Lucas Berger
2026-06-12 07:57:03 -04:00
parent 5ab463ccbb
commit 2daeb49b89
2 changed files with 220 additions and 0 deletions
@@ -0,0 +1,69 @@
# Phase 14: Desktop E2E Coverage - Discussion Log
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
**Date:** 2026-06-12
**Phase:** 14-Desktop E2E Coverage
**Areas discussed:** Spec-compat strategy, Desktop gate severity, Desktop assertion depth, Desktop profile/viewport
---
## Spec-Compat Strategy
| Option | Description | Selected |
|--------|-------------|----------|
| Conditional skips, shared specs | One set of spec files; gate mobile-only tests with `test.skip(project==='desktop')`, assert desktop equivalents on divergence; cross-cutting tests shared. | ✓ |
| Separate desktop spec files | New `desktop.spec.ts`; mobile specs project-filtered. Clear separation, duplicates cross-cutting assertions. | |
| Locator-only, no skips | Viewport-agnostic locators, no skips. Impossible where elements don't exist on desktop (FAB, bottom bar). | |
**User's choice:** Conditional skips, shared specs
**Notes:** One source of truth, least duplication. Mobile profiles stay exactly as authored in Phase 7.
---
## Desktop Gate Severity
| Option | Description | Selected |
|--------|-------------|----------|
| Blocking (same as mobile) | Desktop failures block the merge exactly like iphone/pixel. | ✓ |
| Advisory (non-blocking) | Desktop runs/reports but doesn't block merge (continue-on-error). | |
**User's choice:** Blocking (same as mobile)
**Notes:** Resolves ROADMAP Success Criterion 3 (deferred to planning). Implies specs must be deterministic before merge — fix flakes, don't downgrade the gate.
---
## Desktop Assertion Depth
| Option | Description | Selected |
|--------|-------------|----------|
| Parity-adapted | Assert desktop equivalents (sidebar nav, no overflow, populated/empty/error states, nav tap targets); skip FAB/bottom-bar. | ✓ |
| Render-only smoke | Just no-overflow + states render; no desktop-chrome assertions. | |
| Full divergence assertions | Also assert mobile chrome absent + desktop-only elements present. | |
**User's choice:** Parity-adapted
**Notes:** Full-divergence rejected on code grounds — `New Event` is not mobile-only (desktop toolbar button shares the name, `CalendarShell.tsx:424`); only the 56×56 FAB geometry is mobile-specific.
---
## Desktop Profile / Viewport
| Option | Description | Selected |
|--------|-------------|----------|
| Desktop Chrome default, no WebKit | `devices['Desktop Chrome']` (1280×720), single desktop project. | ✓ |
| Desktop Chrome at wider width | Override to ~1440×900 for more sidebar/grid real estate. | |
| Add Desktop WebKit too | Desktop Chrome + Desktop Safari/WebKit. | |
**User's choice:** Desktop Chrome default, no WebKit
**Notes:** Apple member already covered on mobile Safari (iphone/WebKit). Desktop Chrome sufficient for shared/wall browser.
## Claude's Discretion
- Exact skip-gate mechanism (`test.skip(testInfo.project.name === 'desktop')` vs. `isDesktop` describe split vs. project `grep`/`grepInvert`) — pick the cleanest that avoids duplicating cross-cutting tests.
- Whether the desktop "New Event" toolbar button gets its own ≥44px tap-target assertion as the desktop parity equivalent of the FAB check (recommended, optional).
## Deferred Ideas
- Desktop WebKit profile — declined for this phase; revisit only on a desktop-Safari-specific bug.
- Live desktop event-create round-trip — still blocked by dev user 1 having no CalDAV calendar (carried from Phase 7).