Phase 14: desktop e2e coverage (add blocking Desktop Chrome Playwright gate) #10

Merged
luckberg merged 14 commits from gsd/phase-14-desktop-e2e-coverage into main 2026-06-12 09:32:27 -04:00
Owner

Adds a third desktop Playwright project (Desktop Chrome, 1280×720, no hasTouch) so the existing Phase 7 mobile-authored e2e specs also validate the desktop layout/flows in CI.

Changes (code)

  • playwright.config.ts: new desktop project (...devices['Desktop Chrome'], serviceWorkers: 'block', no baseURL override).
  • e2e/layout.spec.ts: desktop-skip the 3 mobile-only geometry tests (2× BottomTabBar safe-area, 56×56 FAB) + new desktop ≥44px toolbar-button parity assertion (D-04). No mobile assertion weakened/deleted.
  • e2e/calendar.spec.ts, e2e/lists.spec.ts, e2e/README.md: header/doc updates listing all three profiles.
  • ci.yml: cosmetic step-name comment only — the harness job already runs every project via the unchanged test:e2e invocation and installs the chromium engine Desktop Chrome uses.

Gate

Blocking (no continue-on-error). Local: pnpm test:e2e → 85 passed / 5 skipped / 0 failed across iphone + pixel + desktop. lint + typecheck + format:check + PWA unit (191) all green.

This PR opened to run the real CI desktop gate (SC-3).

Adds a third `desktop` Playwright project (Desktop Chrome, 1280×720, no hasTouch) so the existing Phase 7 mobile-authored e2e specs also validate the desktop layout/flows in CI. ## Changes (code) - `playwright.config.ts`: new `desktop` project (`...devices['Desktop Chrome']`, `serviceWorkers: 'block'`, no baseURL override). - `e2e/layout.spec.ts`: desktop-skip the 3 mobile-only geometry tests (2× BottomTabBar safe-area, 56×56 FAB) + new desktop ≥44px toolbar-button parity assertion (D-04). No mobile assertion weakened/deleted. - `e2e/calendar.spec.ts`, `e2e/lists.spec.ts`, `e2e/README.md`: header/doc updates listing all three profiles. - `ci.yml`: cosmetic step-name comment only — the harness job already runs every project via the unchanged `test:e2e` invocation and installs the chromium engine Desktop Chrome uses. ## Gate Blocking (no `continue-on-error`). Local: `pnpm test:e2e` → 85 passed / 5 skipped / 0 failed across iphone + pixel + desktop. lint + typecheck + format:check + PWA unit (191) all green. This PR opened to run the real CI desktop gate (SC-3).
luckberg added 11 commits 2026-06-12 08:55:49 -04:00
- Appended 'desktop' project entry after 'pixel' in playwright.config.ts projects array
- Uses devices['Desktop Chrome'] with serviceWorkers: 'block' (D-02/Pitfall 15)
- No baseURL override — inherited from top-level use block (D-08)
- Updated file header jsdoc: three-profile matrix, added --project=desktop example
- Added test.skip(testInfo.project.name === 'desktop') to the two safe-area-inset
  BottomTabBar in-viewport tests (BottomTabBar returns null at >=768px on desktop)
- Added test.skip(testInfo.project.name === 'desktop') to the 56x56 FAB geometry test
  (on desktop 'New Event' resolves to the toolbar button, not the 56px FAB)
- Added desktop-only D-04 parity test asserting 'New Event' toolbar button height >=44px
  guarded by test.skip(testInfo.project.name !== 'desktop')
- Updated header jsdoc to list all three profiles including desktop
- All mobile assertions preserved (toBeGreaterThanOrEqual(56) and (44) still present)
- Updated calendar.spec.ts header to list all three profiles (iphone/pixel/desktop)
- Updated lists.spec.ts header to list all three profiles (iphone/pixel/desktop)
- Updated e2e/README.md preamble to add 'Desktop Chrome (1280x720)'
- Added --project=desktop example to README run-commands block
- Updated README full-suite command comment to name all three profiles
- Cosmetic: ci.yml step-name and comment updated to mention desktop (no plumbing change)
- Full suite verified: 85 passed, 5 skipped (3 desktop geometry + 2 parity guards), 0 failed
- 85 passed, 5 skipped, 0 failed across iphone + pixel + desktop
- SC-1/SC-2/SC-3 all satisfied
style(14-01): apply prettier formatting to layout.spec.ts for CI format:check gate
CI / fast-checks (pull_request) Successful in 1m22s
CI / api (pull_request) Successful in 59s
CI / harness (pull_request) Successful in 3m58s
f75bc4239f
luckberg added 2 commits 2026-06-12 09:11:08 -04:00
docs(phase-14): complete phase execution
CI / fast-checks (pull_request) Successful in 1m20s
CI / api (pull_request) Successful in 57s
CI / harness (pull_request) Successful in 3m56s
cf48fa8e1b
luckberg added 1 commit 2026-06-12 09:25:51 -04:00
Merge branch 'main' into gsd/phase-14-desktop-e2e-coverage
CI / fast-checks (pull_request) Successful in 1m33s
CI / api (pull_request) Successful in 59s
CI / harness (pull_request) Successful in 3m55s
4607693a71
luckberg scheduled this pull request to auto merge when all checks succeed 2026-06-12 09:26:08 -04:00
luckberg merged commit 2a209080a9 into main 2026-06-12 09:32:27 -04:00
luckberg deleted branch gsd/phase-14-desktop-e2e-coverage 2026-06-12 09:32:28 -04:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: luckberg/familysync#10