E2E: run the Playwright suite under WebKit as a Safari/iOS proxy #221

Closed
opened 2026-09-18 21:41:08 -04:00 by jared · 1 comment
Owner

All UI testing so far is Chromium. iOS Safari is the platform with the most open unknowns (composer vs keyboard #175 E4, long-press reliability, PWA install hint, audio unlock) and Playwright ships a WebKit engine. Add a webkit project to playwright.config.ts (desktop Safari + the iPhone 14 device descriptor) and run the boot + composer + thread + gallery specs under it in the CI job. It will not emulate the iOS on-screen keyboard or Home-Screen install, but it catches WebKit-only breakage (CSS, dvh, IndexedDB quirks, media decode) that Chromium emulation hides.

All UI testing so far is Chromium. iOS Safari is the platform with the most open unknowns (composer vs keyboard #175 E4, long-press reliability, PWA install hint, audio unlock) and Playwright ships a WebKit engine. Add a `webkit` project to `playwright.config.ts` (desktop Safari + the `iPhone 14` device descriptor) and run the boot + composer + thread + gallery specs under it in the CI job. It will not emulate the iOS on-screen keyboard or Home-Screen install, but it catches WebKit-only breakage (CSS, `dvh`, IndexedDB quirks, media decode) that Chromium emulation hides.
jared added this to the Features 2026-Q4 milestone 2026-09-18 21:41:08 -04:00
jared added the enhancementpriority: lowarea: build-ciarea: mobile labels 2026-09-18 21:41:08 -04:00
Author
Owner

Done in 52e0cfaa (+ the WebKit console wording in 6aa77552). CI run #2005 is green: playwright install --with-deps chromium webkit works on the runner, and the webkit (Desktop Safari) and iphone (iPhone 14) projects run the tagged subset — boot, login + send/receive, thread panel + member drawer, gallery lightbox — 8/8.

Notes from getting it green: WebKit reports handled fetch failures (the https://localhost/.well-known probe, a wasm fetch cut short by our own navigation) as page errors with its own wording (TypeError: Load failed, Could not connect … Connection refused, … due to access control checks), so the benign allowlist in e2e/helpers.ts now applies to page errors too. No WebKit-only breakage surfaced in the covered flows. Documented in LOTUS_TESTING.md.

Done in 52e0cfaa (+ the WebKit console wording in 6aa77552). CI run #2005 is green: `playwright install --with-deps chromium webkit` works on the runner, and the `webkit` (Desktop Safari) and `iphone` (iPhone 14) projects run the tagged subset — boot, login + send/receive, thread panel + member drawer, gallery lightbox — 8/8. Notes from getting it green: WebKit reports handled fetch failures (the `https://localhost/.well-known` probe, a wasm fetch cut short by our own navigation) as *page errors* with its own wording (`TypeError: Load failed`, `Could not connect … Connection refused`, `… due to access control checks`), so the benign allowlist in `e2e/helpers.ts` now applies to page errors too. No WebKit-only breakage surfaced in the covered flows. Documented in LOTUS_TESTING.md.
jared closed this issue 2026-09-20 14:14:59 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#221