chore(14-01): update spec headers + README for desktop profile, cosmetic CI step rename

- 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
This commit is contained in:
Lucas Berger
2026-06-12 08:23:10 -04:00
parent 29035999ea
commit bfc49d199d
4 changed files with 13 additions and 10 deletions
+2 -2
View File
@@ -252,7 +252,7 @@ jobs:
# CI=true makes Playwright start Vite :5173 itself (reuseExistingServer=false), use # CI=true makes Playwright start Vite :5173 itself (reuseExistingServer=false), use
# retries:2/workers:1, and apply reporter:'github' — which --reporter=list,html overrides # retries:2/workers:1, and apply reporter:'github' — which --reporter=list,html overrides
# because Gitea does not render github annotations (Pitfall 5 / D-06). Both projects run. # because Gitea does not render github annotations (Pitfall 5 / D-06). Both projects run.
- name: Run harness (start API + Playwright iphone + pixel) - name: Run harness (start API + Playwright iphone + pixel + desktop)
env: env:
CI: 'true' CI: 'true'
# Use 127.0.0.1 (not localhost): the runner image resolves `localhost` to ::1 first, # Use 127.0.0.1 (not localhost): the runner image resolves `localhost` to ::1 first,
@@ -284,7 +284,7 @@ jobs:
done done
echo "API ready at :3000" echo "API ready at :3000"
# Run the Phase 7 harness across both profiles; preserve its exit code, always kill the API. # Run the Phase 7/14 harness across all three profiles (iphone, pixel, desktop); preserve its exit code, always kill the API.
# Call the pwa test:e2e script DIRECTLY (single pnpm layer) and append --reporter without a # Call the pwa test:e2e script DIRECTLY (single pnpm layer) and append --reporter without a
# `--` separator: `pnpm <root> test:e2e -- <args>` double-forwards the `--` into # `--` separator: `pnpm <root> test:e2e -- <args>` double-forwards the `--` into
# `playwright test -- <args>`, where playwright treats --reporter as a test-file filter → # `playwright test -- <args>`, where playwright treats --reporter as a test-file filter →
+3 -2
View File
@@ -1,6 +1,6 @@
# E2E Test Harness # E2E Test Harness
Playwright test harness for the FamilySync PWA — mobile-emulated (iPhone 14/WebKit + Pixel 7/Chromium), authenticated via `DEV_AUTH_BYPASS`, deterministically seeded, runs headlessly in CI. Playwright test harness for the FamilySync PWA — mobile-emulated (iPhone 14/WebKit + Pixel 7/Chromium) and Desktop Chrome (1280×720), authenticated via `DEV_AUTH_BYPASS`, deterministically seeded, runs headlessly in CI.
--- ---
@@ -34,11 +34,12 @@ environment (not only the API's). Source the DB credentials from the repo-root `
set -a; source .env; set +a set -a; source .env; set +a
export DEV_AUTH_BYPASS=true DB_HOST=127.0.0.1 DB_PORT=3306 export DEV_AUTH_BYPASS=true DB_HOST=127.0.0.1 DB_PORT=3306
# Full suite — both iPhone (WebKit) and Pixel (Chromium) profiles # Full suite — iPhone (WebKit), Pixel (Chromium), Desktop Chrome profiles
pnpm --filter @familysync/pwa test:e2e pnpm --filter @familysync/pwa test:e2e
# Single profile (faster local iteration) # Single profile (faster local iteration)
pnpm --filter @familysync/pwa exec playwright test --project=pixel pnpm --filter @familysync/pwa exec playwright test --project=pixel
pnpm --filter @familysync/pwa exec playwright test --project=desktop
# Headed (local debug — shows the browser) # Headed (local debug — shows the browser)
pnpm --filter @familysync/pwa exec playwright test --headed pnpm --filter @familysync/pwa exec playwright test --headed
+2 -1
View File
@@ -10,9 +10,10 @@
* Requires the dev stack running with DEV_AUTH_BYPASS=true (see e2e/README.md). * Requires the dev stack running with DEV_AUTH_BYPASS=true (see e2e/README.md).
* global-setup seeds 'Seeded Test Event' on calendar_id=10 for user_id=1. * global-setup seeds 'Seeded Test Event' on calendar_id=10 for user_id=1.
* *
* Runs on both device profiles automatically (playwright.config.ts matrix): * Runs on all three device profiles automatically (playwright.config.ts matrix):
* iphone: iPhone 14 / WebKit / 390×844 * iphone: iPhone 14 / WebKit / 390×844
* pixel: Pixel 7 / Chromium / 412×915 * pixel: Pixel 7 / Chromium / 412×915
* desktop: Desktop Chrome / Chromium / 1280×720 (all tests pass unchanged)
* *
* Run: * Run:
* pnpm --filter @familysync/pwa test:e2e * pnpm --filter @familysync/pwa test:e2e
+2 -1
View File
@@ -13,9 +13,10 @@
* The empty state is simulated by routing /api/lists to return [] BEFORE navigation — * The empty state is simulated by routing /api/lists to return [] BEFORE navigation —
* this keeps the seeded DB intact (T-07-11 / D-06 deterministic seed). * this keeps the seeded DB intact (T-07-11 / D-06 deterministic seed).
* *
* Runs on both device profiles automatically (playwright.config.ts matrix): * Runs on all three device profiles automatically (playwright.config.ts matrix):
* iphone: iPhone 14 / WebKit / 390×844 * iphone: iPhone 14 / WebKit / 390×844
* pixel: Pixel 7 / Chromium / 412×915 * pixel: Pixel 7 / Chromium / 412×915
* desktop: Desktop Chrome / Chromium / 1280×720 (all tests pass unchanged)
* *
* Run: * Run:
* pnpm --filter @familysync/pwa test:e2e * pnpm --filter @familysync/pwa test:e2e