CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/pwa-install-flow-reference

Pure reference for the PWA install flow as a test surface - the installability gate (manifest required fields per [install-criteria], registered service worker, HTTPS, ~30s user engagement), the `beforeinstallprompt` handshake (preventDefault → stash → prompt() on gesture → userChoice → appinstalled), and the `display-mode` post-install signal, with a how-to-use walkthrough and a worked Chromium install-flow assertion; per-platform paths (Android WebAPK, iOS Share menu, Firefox no-op) live in references/. Use when authoring or triaging install-flow assertions and you need the gate fields, the event contract, and the per-platform expectations in one place instead of re-reading three vendor docs.

74

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

per-platform-install-paths.mdreferences/

Per-platform PWA install paths

Deep reference for pwa-install-flow-reference SKILL.md (Stage 3). Consult when a test must branch across Chromium desktop, Android Chrome, iOS / iPadOS Safari, desktop Safari, or Firefox, or when asserting WebAPK / Share-menu install behavior.

Per-platform install path

The install path itself diverges by platform. Tests must branch:

PlatformPathTriggerTest posture
Chromium desktop (Chrome, Edge, Brave)Install badge in URL bar; "Install" item in overflow menubeforeinstallprompt fires when Stage 1 passesDrive prompt() from a user-gesture click; assert userChoice.outcome and appinstalled
Android ChromeWebAPK minting (a real APK signed by Google Play services and registered with the launcher) per learn-pwabeforeinstallprompt fires; user accepts via mini-infobar or app-driven promptSmoke on a real device farm; Playwright on Android Chrome works for the prompt itself but cannot assert WebAPK minting completion
Android Chrome (alternate)Shortcuts or QuickApp formats per learn-pwaSame as WebAPK pathWebAPK is the canonical path; shortcut path is a fallback
iOS / iPadOS Safari"Open the Share menu... Click Add to Home Screen... Confirm the name of the app... Click Add" per learn-pwaManual user gesture only; no beforeinstallprompt eventTest the metadata (apple-touch-icon, apple-mobile-web-app-capable meta) statically; assert installed runtime via display-mode MQ (Stage 4); the actual install step is manual smoke
Desktop SafariApp-driven install on macOS Sonoma+ via the "Add to Dock" Share menuManual user gesture onlySame posture as iOS - static metadata + post-install MQ
Firefox desktopInstall UI not exposedn/aNo beforeinstallprompt; no install assertion path

Per learn-pwa: iOS install "requires apple-touch-icon tag" - a test that omits this assertion misses a class of icon-missing install regressions that are otherwise invisible until a user files a bug.

Per-platform testing caveats

  • WebAPK minting completion is opaque. Per learn-pwa Android Chrome mints a WebAPK on install, but the test surface ends at appinstalled - the minting is a background-service-worker operation, not a DOM-observable event.
  • iOS Safari has no programmatic install API. Stage 3 iOS cells must be tested with manual smoke or device-farm Appium drivers; no headless path exists.

SKILL.md

tile.json