- Add `middleware: 'auth'` to member/profile.vue (was missing) - Harden loginAsAdmin helper to wait for networkidle after redirect so auth-init plugin and admin middleware finish before tests navigate - Regenerate visual baselines to reflect updated profile page UI Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
/**
|
|
* Login helpers using dev endpoints.
|
|
* These set real httpOnly JWT cookies so all middleware works naturally.
|
|
*/
|
|
|
|
/**
|
|
* Login as admin via the dev test-login endpoint.
|
|
* Creates a test admin user if none exists and sets the auth cookie.
|
|
* Waits for networkidle so the client-side auth check (admin middleware +
|
|
* auth-init plugin) completes before the test navigates anywhere.
|
|
*/
|
|
export async function loginAsAdmin(page) {
|
|
await page.goto('/api/dev/test-login', { waitUntil: 'domcontentloaded' })
|
|
|
|
// The endpoint sets the cookie and redirects to /admin.
|
|
// waitForURL fires as soon as the URL changes — not when JS finishes.
|
|
// waitForLoadState('networkidle') ensures the auth-init plugin and admin
|
|
// middleware have both completed their checkMemberStatus() calls before
|
|
// the test proceeds.
|
|
try {
|
|
await page.waitForURL(/\/admin/, { timeout: 15000 })
|
|
await page.waitForLoadState('networkidle')
|
|
} catch {
|
|
// Cookie should be set even if redirect failed — navigate manually
|
|
await page.goto('/admin', { waitUntil: 'networkidle' })
|
|
await page.waitForURL(/\/admin/)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Login as a specific member by email via the dev member-login endpoint.
|
|
*/
|
|
export async function loginAsMember(page, email) {
|
|
await page.goto(`/api/dev/member-login?email=${encodeURIComponent(email)}`, { waitUntil: 'domcontentloaded' })
|
|
await page.waitForURL(/\/member\//)
|
|
}
|