Files
familysync/.planning/phases/17-ui-optimization-polish/17-UAT.md
T

83 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
status: complete
phase: 17-ui-optimization-polish
source:
- 17-01-SUMMARY.md
- 17-02-SUMMARY.md
- 17-03-SUMMARY.md
- 17-04-SUMMARY.md
- 17-05-SUMMARY.md
- 17-06-SUMMARY.md
verification_method: playwright-cli (Chromium, host Vite @5173, Docker API/DB)
started: 2026-06-18T18:26:00Z
updated: 2026-06-18T18:31:00Z
---
## Current Test
[testing complete]
## Tests
### 1. Cold Start Smoke Test
expected: App boots and `/calendar` loads with live data — calendar grid, color legend, and primary controls render without console errors.
result: pass
evidence: PWA opened at http://localhost:5173/ → redirected to /calendar (dev-bypass). June 2026 grid rendered, color legend ("Dev User" #4A90D9, "Family" #F25C7A), New Event button + Today/nav present. 0 console errors. Docker API/MariaDB/Redis up.
### 2. Login Page Branding — FamilySync logo (Plan 17-04)
expected: Login page shows the approved family-house logo (BrandSlot), not the old "FS" text placeholder.
result: pass
evidence: /login renders `<img src="/logo.svg" alt="" aria-hidden="true">` at 48px. Old `aria-hidden` "FS" placeholder div is absent. `/logo.svg` serves 200 image/svg+xml.
### 3. Favicon & Theme Color (Plan 17-04)
expected: Browser tab favicon set (SVG + ICO + apple-touch) wired; warm-amber theme color applied.
result: pass
evidence: `<link rel=icon>` for /favicon.svg (image/svg+xml) + /favicon.ico + apple-touch-icon present. All of favicon.svg/favicon.ico/apple-touch-icon.png/icon-maskable-512.png fetch 200 with correct content-types. `<meta name=theme-color>` = #e8915a.
### 4. Phone Layout Overlap Fix (Plan 17-03 / D-01)
expected: At ≤767px, the New Event FAB sits above the fixed BottomTabBar (not occluded) and the color-legend chips remain fully visible.
result: pass
evidence: @390×844 — FAB bottom=764, BottomTabBar top=788 → FAB above bar with 24px gap (= --space-6). Color legend bottom=780 < nav top=788, visible:true, not occluded. Both chips ("Dev User", "Family") present. 0 console errors.
### 5. Sign Out Control (Plan 17-05 / D-07)
expected: Settings sheet exposes a reachable "Sign out" control.
result: pass
evidence: Settings dialog (opened from "Dev User — open settings") contains Account section, "Change password", and a "Sign out" button — all reachable.
### 6. Settings Sheet Centering (Plan 17-05 / D-09)
expected: On desktop, the settings sheet renders as a centered modal (not a bottom sheet).
result: pass
evidence: Settings dialog — position:fixed, width 480px, horizontal & vertical center offset = 0 on 1280×720, aria-modal="true".
### 7. Modal Focus Trap (code-review CR-01 / WR-01 fix)
expected: With a sheet open, Tab/Shift+Tab cycle focus within the dialog and never escape to background controls.
result: pass
evidence: Settings dialog (5 focusables). Tab from last ("Sign out") → wraps to "Close settings" (still inside). Shift+Tab from first → wraps to "Sign out" (still inside). Focus stayed contained both directions. Confirms the jsdom-tolerant visibility filter works correctly in a real (laid-out) browser — resolves the code-review human-verification flag.
### 8. Admin Two-Tab Navigation (Plan 17-06 / D-10 + WR-02)
expected: Admin page shows "Members & Accounts" / "Settings" tabs with full WAI-ARIA keyboard support (arrows wrap, Home/End).
result: pass
evidence: `role=tablist` with two `role=tab`s, "Members & Accounts" selected by default, tabpanels with regions. Keyboard: ArrowRight→Settings, ArrowRight wraps→Members, ArrowLeft→Settings, Home→Members, End→Settings. All transitions update aria-selected.
### 9. Admin Success Toast (Plan 17-06 / D-08)
expected: Creating a member shows a transient success toast announced to assistive tech.
result: pass
evidence: Filled + submitted the Add-member form (throwaway "ZZ Verify Toast"); a `role=status` aria-live="polite" toast read "Member added." Throwaway member removed from the dev DB afterward (verified 0 remaining).
### 10. iOS Standalone PWA — install + home-screen icon + push
expected: Installed-to-home-screen behavior and apple-touch/maskable icon appearance on a real iOS device.
result: skipped
reason: Genuinely device-only — cannot be driven by playwright-cli/Chromium (manifest is production-only and not injected in Vite dev). Icon assets and manifest config are verified at the asset/code level (Tests 23, code review). Real-device behavior remains a human checkpoint, already tracked in 17-VERIFICATION.md.
## Summary
total: 10
passed: 9
issues: 0
skipped: 1
pending: 0
## Gaps
[none — all automated checks passed; 1 device-only item deferred to existing human checkpoints]