Part of #2671.
Problem
from-doc.spec.ts:50 destructures { page, browser }, and page comes from ./auth.fixture. Requesting it runs the worker-scoped authState fixture — a full login — before the anon-context branch at line 66 is ever reached.
That branch exists specifically so assertions tagged needs_auth: false (the sign-in / sign-up pages) run logged out, since visiting /sign-up with a session redirects into the app and the documented buttons vanish. The fixture dependency defeats it: those assertions can only run if credentials are available, even though they need no session.
Evidence
With CONSOLE_STAGING_USER_EMAIL / CONSOLE_STAGING_USER_PASSWORD unset and only CONSOLE_STAGING_URL present, all 38 UI assertions fail with:
Error: CONSOLE_STAGING_URL, CONSOLE_STAGING_USER_EMAIL and CONSOLE_STAGING_USER_PASSWORD must be set
at auth.fixture.ts:36
Expected: the 2 assertions with needs_auth: false should still run and pass, since the anon path builds its own context from browser + baseURL.
Fix
Don't request page unconditionally. Options: take only { browser } in the test signature and resolve the authenticated page inside the needs_auth branch, or split the two cases into separate test() declarations so Playwright only instantiates the fixture where it's needed.
Impact
Minor and latent — CI always has credentials, so nothing fails there today. It matters for local runs without secrets, where the credential-free subset should still be runnable, and it means the logged-out assertions aren't actually verifying the logged-out state they were written for.
Part of #2671.
Problem
from-doc.spec.ts:50destructures{ page, browser }, andpagecomes from./auth.fixture. Requesting it runs the worker-scopedauthStatefixture — a full login — before the anon-context branch at line 66 is ever reached.That branch exists specifically so assertions tagged
needs_auth: false(the sign-in / sign-up pages) run logged out, since visiting/sign-upwith a session redirects into the app and the documented buttons vanish. The fixture dependency defeats it: those assertions can only run if credentials are available, even though they need no session.Evidence
With
CONSOLE_STAGING_USER_EMAIL/CONSOLE_STAGING_USER_PASSWORDunset and onlyCONSOLE_STAGING_URLpresent, all 38 UI assertions fail with:Expected: the 2 assertions with
needs_auth: falseshould still run and pass, since the anon path builds its own context frombrowser+baseURL.Fix
Don't request
pageunconditionally. Options: take only{ browser }in the test signature and resolve the authenticated page inside theneeds_authbranch, or split the two cases into separatetest()declarations so Playwright only instantiates the fixture where it's needed.Impact
Minor and latent — CI always has credentials, so nothing fails there today. It matters for local runs without secrets, where the credential-free subset should still be runnable, and it means the logged-out assertions aren't actually verifying the logged-out state they were written for.