From 5915f93cdf0d45051d971e478a92f3f88acfd4c2 Mon Sep 17 00:00:00 2001 From: Conduction Release Bot Date: Sat, 29 Aug 2026 07:36:06 +0200 Subject: [PATCH] test(e2e): the walkthrough preference probe is lock-screen chrome, not a leak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- tests/e2e/workflows/vault-unlock.spec.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/e2e/workflows/vault-unlock.spec.ts b/tests/e2e/workflows/vault-unlock.spec.ts index b1efdf9f..2ce8808b 100644 --- a/tests/e2e/workflows/vault-unlock.spec.ts +++ b/tests/e2e/workflows/vault-unlock.spec.ts @@ -164,6 +164,22 @@ test.describe('Workflow: vault unlock — encryption-suites/spec.md', () => { // `:support-dialog="false"` would silence it by removing a feature // rather than by judging the traffic. /\/api\/preferences\/support-dialog-seen\b/, + // Same shell layer, same controller and the same judgement as the + // support-dialog entry above. CnAppRoot's + // resolveWalkthroughSeenVersion() runs whenever the manifest declares + // an enabled `walkthrough` block with a `completionConfigKey` + // (ADR-043), before any route resolves and therefore regardless of + // lock state. It reads one `pref_`-namespaced UI flag for the SESSION + // user — the last app version whose tour they have seen — and carries + // no vault material, so it is chrome, not a leak. + // + // The tour itself does NOT paint over the lock screen: the a11y + // snapshot captured when this endpoint first reached the wire shows + // the bare unlock form, with no walkthrough card in the tree. Only + // the preference probe is in scope here, which is what this entry + // covers — a tour that ever did open over the lock screen would be a + // rendering bug, and this entry does not hide it. + /\/api\/preferences\/walkthrough_completed_version\b/, ] page.on('request', (req) => {