46 lines
4.6 KiB
Markdown
46 lines
4.6 KiB
Markdown
# Firefox browser acceptance
|
|
|
|
## Werkdock startup diagnosis
|
|
|
|
On 2026-09-10 the CI Firefox suite stalled at `BrowserContext.newPage`, before
|
|
the application received its first request. A standalone Playwright 1.62.0
|
|
probe in the actual CI image (`werkator-buildenv-ac87f8617d92`) reproduced the
|
|
failure using only a local HTML heading. Firefox reported repeated
|
|
`Sandbox: writing /proc/self/uid_map: EPERM` failures and content-process crashes.
|
|
The probe was terminated by its 45-second timeout.
|
|
|
|
Repeating the same probe with `MOZ_ASSUME_USER_NS=0` reached `LAUNCHED`,
|
|
`CONTEXT`, `PAGE`, rendered `Werkjournal probe`, and exited normally.
|
|
This tells Firefox that additional user namespaces are unavailable, leaving
|
|
the other sandbox mechanisms enabled. The interpretation follows Mozilla's
|
|
[SandboxInfo.cpp](https://github.com/mozilla/gecko-dev/blob/master/security/sandbox/linux/SandboxInfo.cpp)
|
|
and [SandboxLaunch.cpp](https://github.com/mozilla/gecko-dev/blob/master/security/sandbox/linux/launch/SandboxLaunch.cpp).
|
|
|
|
Werkator sets the application-specific test flag
|
|
`WERKJOURNAL_FIREFOX_NO_USER_NS=1`; only the `firefoxAcceptance` task translates
|
|
it to the Firefox environment setting. Local runs retain their normal behavior
|
|
unless the flag is explicitly set. Production application configuration is
|
|
unaffected. The Firefox task also has a 15-minute timeout so a stalled page
|
|
creation fails the build instead of indefinitely blocking deployment.
|
|
The targeted WJ-061 Firefox acceptance scenario passed locally with this flag
|
|
enabled. Full CI verification then passed for commit `b81e9c4` (0.1.77-SNAPSHOT),
|
|
build `main_jvm-5c494a9689b3-2026-09-10T05_03_26.959491317Z-947e9bc133c5`:
|
|
all 20 Firefox scenarios / 134 steps passed in 2m 59.726s, followed by the
|
|
production acceptance scenario / five steps. The preceding JVM suite also
|
|
passed. The pipeline completed successfully in 486 seconds and deployed that
|
|
exact commit with a PASS result. The public info endpoint independently
|
|
reported 0.1.77-SNAPSHOT. The Werkbaum repair node is complete; the bookkeeping
|
|
commit increments the version to 0.1.78-SNAPSHOT.
|
|
|
|
The `firefoxAcceptance` Gradle task executes every browser-tagged scenario in the work, habits, identity and UX feature files using the real Firefox engine supplied by Playwright. The same browser steps and assertions are used for Chromium and Firefox. Each scenario owns its application, database, captured mail and browser contexts. Failure screenshots are separated by browser engine.
|
|
|
|
Firefox uses desktop contexts at both 1280px and 360px width. Playwright does not support mobile Firefox emulation; narrow desktop windows establish responsive-layout behavior, not physical Android acceptance. Android PWA installation and actual background notification delivery remain separate open checks.
|
|
|
|
`tools/ci-jvm` runs this suite after the JVM/Chromium and frontend checks and before the production smoke and release packaging. Undefined or failed Firefox scenarios fail the pipeline. The pinned Werkdock image already installs both browser engines and their system dependencies. Its report is `build/reports/cucumber/firefox.json`.
|
|
|
|
The first full Firefox run passed 17 of 19 examples and exposed two differences. Calendar selection now explicitly opens the picker before confirming the grid date. Firefox's offline Flow fallback uses a same-origin iframe: Spring Security now permits SAMEORIGIN framing only for the public offline documents, retaining DENY elsewhere. HTML entities preserve the punctuation through Vaadin's generated offline stub. The regression verifies both the offline stub header and the unchanged login framing restriction. A targeted rerun of both failing scenarios passed.
|
|
|
|
The final run exposed a redundant JVM test execution in the second Gradle invocation. The pipeline now excludes `test` only from that second invocation, after the mandatory first full JVM test command has succeeded. Standalone acceptance tasks retain their dependency on `test`.
|
|
|
|
Final verification on 0.1.68-SNAPSHOT: all 19 Firefox examples (127 steps), all 19 Chromium examples, 193 executed JVM tests (41 filtered reports), 68 operations tests, 17 frontend tests and the production/admin-recovery smoke passed. The shell wrapper was edited during this local run and consequently failed when resuming after Gradle; the unchanged packaging tail was then executed successfully against the passing smoke report. Shell syntax, operations tests and a Gradle dry run verified the final exclusion of the duplicate test task. The final optimized wrapper still requires its CI execution; no claim of a green CI run for this change is made. Completion version: 0.1.69-SNAPSHOT.
|