/** * Login helpers using dev endpoints. * * Implementation note: hits the dev endpoints via the APIRequestContext * (no page navigation). The Set-Cookie response writes auth-token to the * BrowserContext's cookie jar, so any subsequent page.goto() is authed. * Avoids the Nuxt-dev networkidle race that made page.goto-based login flaky. */ export async function loginAsAdmin(page) { const res = await page.context().request.get('/api/dev/test-login', { maxRedirects: 0 }) if (res.status() !== 302) { throw new Error(`/api/dev/test-login returned ${res.status()}; expected 302`) } const cookies = await page.context().cookies() if (!cookies.find((c) => c.name === 'auth-token')) { throw new Error('/api/dev/test-login did not set auth-token cookie') } } export async function loginAsMember(page, email) { const res = await page.context().request.get( `/api/dev/member-login?email=${encodeURIComponent(email)}`, { maxRedirects: 0 } ) if (res.status() !== 302) { throw new Error(`/api/dev/member-login returned ${res.status()}; expected 302`) } const cookies = await page.context().cookies() if (!cookies.find((c) => c.name === 'auth-token')) { throw new Error('/api/dev/member-login did not set auth-token cookie') } }