fix(e2e): set login fields via the DOM - Playwright fill() no-ops on the CI runner (BUNYIP-168) #194

Merged
nrupard merged 1 commit from fix/BUNYIP-168-dom-set-login-fields into main 2026-06-22 22:12:44 +02:00
Owner

The BUNYIP-168 probe proved it: on the CI runners headless chromium, Playwright fill() is a no-op on the login inputs (the field kept the probes 10-char value), while a direct el.value= DOM set works and persists. Page is clean (no SSE/reload), fill() works locally -> runner-specific chromium quirk.\n\nReplace fillVerified with setInputValue: set .value via evaluate + dispatch input/change. bunyip-web submits the native form (serializes .value), so DOM-set is submitted correctly. Applied to email/password + the 2FA code. Removes the temp probe.\n\ntsc clean.\n\n#BUNYIP-168

The BUNYIP-168 probe proved it: on the CI runners headless chromium, Playwright `fill()` is a no-op on the login inputs (the field kept the probes 10-char value), while a direct `el.value=` DOM set works and persists. Page is clean (no SSE/reload), fill() works locally -> runner-specific chromium quirk.\n\nReplace fillVerified with setInputValue: set `.value` via evaluate + dispatch input/change. bunyip-web submits the native form (serializes .value), so DOM-set is submitted correctly. Applied to email/password + the 2FA code. Removes the temp probe.\n\ntsc clean.\n\n#BUNYIP-168
fix(e2e): set login fields via the DOM (Playwright fill() no-ops on the CI runner)
Some checks failed
E2E / Playwright against deployment (pull_request) Failing after 1m1s
Check / fmt + clippy + build + tests (pull_request) Successful in 4m45s
Create release / Create release from merged PR (pull_request) Has been skipped
5266cd2d2d
The BUNYIP-168 probe proved it: on the CI runner's headless chromium, Playwright `fill()` is a no-op on the login inputs (the field kept the probe's 10-char value; `fill(env.email)` never overwrote it), while a direct `el.value = ...` DOM assignment works and persists. The public login page is clean (no SSE/reload/htmx-boost) and `fill()` works locally - so this is a runner-specific chromium quirk, not the page.

Replace fillVerified's `loc.fill()` with `setInputValue`: set `.value` via `loc.evaluate` and dispatch input/change. bunyip-web submits the native form, which serializes each input's `.value`, so a DOM-set value is submitted correctly. Apply to the email + password fields and the 2FA code field; retries + verifies, throwing loudly if a value cannot be made to stick. Removes the temporary BUNYIP-168 page-identity probe.

tsc --noEmit clean.

#BUNYIP-168

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
nrupard deleted branch fix/BUNYIP-168-dom-set-login-fields 2026-06-22 22:12:44 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/bunyip!194
No description provided.