Skip to content

test(e2e): allow the walkthrough preference probe behind the lock screen - #488

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/walkthrough-preference-lock-allowlist
Aug 29, 2026
Merged

test(e2e): allow the walkthrough preference probe behind the lock screen#488
rubenvdlinde merged 1 commit into
developmentfrom
fix/walkthrough-preference-lock-allowlist

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Fixes the one red spec on development: vault-unlock.spec.ts:114 — "a locked vault issues no Keepiq API request beyond the lock screen's own".

Cause. The first-visit tour merged in #484 makes CnAppRoot.resolveWalkthroughSeenVersion() read walkthrough_completed_version. That runs before any route resolves, so it fires behind the lock screen and the fail-closed allowlist correctly flagged it.

Why an allowlist entry and not a suppression. The endpoint is the same shell layer, the same OpenRegister GenericPreferencesController and the same pref_-namespaced, session-user-only UI flag as the support-dialog-seen entry immediately above it, and it carries no vault material — chrome, not a leak, which is the distinction this allowlist exists to draw.

The tour does not render over the lock screen. The a11y snapshot from the failing run shows the bare unlock form with no walkthrough card, so only the probe reaches the wire. A tour that ever did paint there would still fail this test on its own traffic — this entry does not hide it.

Run analysed: 33230240125 (1 failed, 1 flaky, 68 passed).

…t a leak

The first-visit tour added in #484 made CnAppRoot resolve
`walkthrough_completed_version`, and that fetch runs before any route
resolves — so it fires behind the lock screen and the vault-unlock
invariant failed closed, exactly as designed.

Judged rather than silenced. It is the same shell layer, the same
GenericPreferencesController and the same `pref_`-namespaced session-user
UI flag as the `support-dialog-seen` entry directly above it, and it
carries no vault material. The a11y snapshot from the failing run shows
the bare unlock form with no walkthrough card, so only the probe reaches
the wire; a tour that painted over the lock screen would still fail this
test on its own traffic.

The `\b` anchor keeps the entry from widening onto neighbouring paths.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/keepiq @ fc8858d

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
test-l10n
format
check-l10n-js
check-schema-l10n
composer ✅ 111/111
npm ✅ 550/550
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright 🚨 NO VERDICT — enabled but never ran
Hydra gates

Quality workflow — 2026-08-29 05:41 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 83f3d26 into development Aug 29, 2026
44 checks passed
@rubenvdlinde
rubenvdlinde deleted the fix/walkthrough-preference-lock-allowlist branch August 29, 2026 05:42
rubenvdlinde added a commit that referenced this pull request Aug 29, 2026
… instead (#490)

Two sessions fixed the same failure minutes apart. #486 withheld the
walkthrough from the manifest while the vault is locked, so CnAppRoot never
resolves the completion preference and the probe cannot reach the wire.
#488 then allowlisted that probe — which the file's own note calls pure
masking surface: an entry that cannot fire would silently swallow a real
regression of exactly this shape. #486 is the better fix; the entry goes.

What is NOT fixed by #486 is the order-dependence. The tour's seen state is
per user, not per test, so whichever spec runs first wears it — every spec
here unlocks, and the tour is offered on the first unlocked visit by design.
audit-trail.spec.ts started needing a retry the moment #484 landed, having
never retried in the three preceding development runs. Seeding the marker
in global-setup, as dossiq already does, removes that.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant