Login helpers now hit dev endpoints via APIRequestContext instead of page.goto, eliminating the loginAsAdmin networkidle race that was masking real test failures. Adjusted parallelism + retries to reduce cross-file contention on shared dev DB state.
32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
/**
|
|
* 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')
|
|
}
|
|
}
|