Gate the installability probe on every condition LAUNCH.md claims (Maestro 2c8f8887, F1-F3)
CI / ci (push) Successful in 10m9s
CI / ci (pull_request) Successful in 10m12s

F1: the probe now gates each page on manifest HTTP 200, name, display,
start_url, 192x192 and 512x512 icons, a maskable icon, and a service
worker that is ready, registered and activated. It prints a PASS/FAIL
line per condition and exits 1 if any condition fails on any page.
LAUNCH.md lists exactly these gates; the unchecked claim that the worker
controls the page is removed.

F2: navigator.serviceWorker.ready is raced against a 10 second timeout;
expiry fails the "service worker ready" condition.

F3: the browser context uses Playwright's Pixel 5 mobile emulation
(viewport, touch, isMobile, user agent), and LAUNCH.md says so.

Re-run against production mealquest:743a155 on 2026-10-11: every
condition PASS on all four pages, exit 0.

Maestro task: 2c8f8887-85e5-4734-b90f-9678f17d3778

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-11 20:28:03 -04:00
co-authored by Claude Opus 5.5
parent b19dad7b40
commit cd4bc8d9bb
2 changed files with 49 additions and 26 deletions
+11 -10
View File
@@ -36,18 +36,19 @@ Performance is recorded for reference but is not gated.
Lighthouse 10 and later removed the PWA category, so installability was checked
directly with a Playwright probe:
[installability-check.mjs](lighthouse/2026-10-11/installability-check.mjs).
It loads each of the four pages above in a signed-in mobile Chrome session
(the cookie comes from the `CK` environment variable, never the file) and
checks:
It loads each of the four pages above in a signed-in Chrome session with
Playwright's Pixel 5 mobile emulation (viewport, touch, `isMobile` and mobile
user agent; the cookie comes from the `CK` environment variable, never the
file) and gates every page on all of:
- **Manifest** — the linked manifest is fetched (HTTP 200) and has
- **Manifest** — the linked manifest is fetched with HTTP 200 and has
`name` "MealQuest", `display` "standalone", a `start_url`, and icons at
192 px, 512 px and a `maskable` purpose.
- **Service worker** — registered and activated, and controlling the page on
the single-page-app routes.
192x192, 512x512 and one with `maskable` purpose.
- **Service worker** — `navigator.serviceWorker.ready` resolves within 10
seconds (expiry is a failure), and a registration exists whose active worker
is `activated`.
The script's pass condition gates the manifest fields and icons and the
service-worker registration; the manifest HTTP status, the worker's activation
state and whether it controls the page are printed per page for review.
It prints a PASS or FAIL line per condition per page and exits 1 if any
condition fails on any page.
**Result: PASS on all four pages.**