Quality Gates

PWA quality is evidence, not a badge.

Required Gates

GateEvidence
Secure contextProduction URL is HTTPS; localhost-only exception is documented
ManifestDevTools shows no blocking manifest errors; icons and display mode render correctly
InstallApp installs on each target browser/device, or the product explicitly does not promise install on that target
App shell offlineApp opens and reloads after first successful load with network disabled
IndexedDB dataUser data survives reload, close/reopen, and offline use
Storage pressureApp has export, cleanup, or recovery plan for quota/eviction
Service worker updatesNew build activates without stale assets, broken chunks, or reload loops
PushPermission denial, subscription, send, display, click, and unsubscribe are tested
Background syncFeature-detected path and foreground fallback both work
PerformanceCore route meets product-specific load and interaction targets
AccessibilityKeyboard, 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.