Quality Gates
PWA quality is evidence, not a badge.
Required Gates
| Gate | Evidence |
|---|---|
| Secure context | Production URL is HTTPS; localhost-only exception is documented |
| Manifest | DevTools shows no blocking manifest errors; icons and display mode render correctly |
| Install | App installs on each target browser/device, or the product explicitly does not promise install on that target |
| App shell offline | App opens and reloads after first successful load with network disabled |
| IndexedDB data | User data survives reload, close/reopen, and offline use |
| Storage pressure | App has export, cleanup, or recovery plan for quota/eviction |
| Service worker updates | New build activates without stale assets, broken chunks, or reload loops |
| Push | Permission denial, subscription, send, display, click, and unsubscribe are tested |
| Background sync | Feature-detected path and foreground fallback both work |
| Performance | Core route meets product-specific load and interaction targets |
| Accessibility | Keyboard, focus, color contrast, and screen-reader smoke checks pass |
Automation Gates
- Playwright online load smoke.
- Playwright offline reload smoke.
- Playwright IndexedDB persistence smoke.
- Playwright notification permission path where supported.
- Unit tests for queue serialization, replay, idempotency, and conflict handling.
Manual Gates
- Chrome DevTools Application panel review.
- Real Android Chrome install and launch.
- Real desktop Chrome or Edge install and launch.
- Real Safari/iOS Add to Home Screen check if iOS matters.
- Store wrapper smoke on signed package if a store target matters.
Lighthouse
Use Lighthouse for performance, accessibility, best-practices, and SEO signals. Do not treat the old PWA badge as the primary gate. Chrome documentation now points PWA testing toward DevTools and targeted checks.