From b54dd351fcef96537570ac3cdae64b67e8afd791 Mon Sep 17 00:00:00 2001 From: Shaun Campbell Date: Sun, 22 Feb 2026 17:27:22 -0500 Subject: [PATCH] test) fixing tests --- e2e/admin-auth-source.test.ts | 20 +++++++++++++++++++- e2e/admin-local-user-flow.test.ts | 13 ++----------- e2e/auth-callback.test.ts | 4 ++-- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/e2e/admin-auth-source.test.ts b/e2e/admin-auth-source.test.ts index af37ffd..cf9ed95 100644 --- a/e2e/admin-auth-source.test.ts +++ b/e2e/admin-auth-source.test.ts @@ -21,6 +21,12 @@ test.beforeEach(async ({ context }) => { }); test('admin sees auth source and can set local password', async ({ page }) => { + const suffix = Date.now(); + const username = `e2e_auth_source_${suffix}`; + const fullName = `E2E Auth Source ${suffix}`; + const email = `e2e_auth_source_${suffix}@test.local`; + const password = `InitPass-${suffix}-123`; + await loginAsLocalUser(page, TEST_USERS.admin.username, TEST_USERS.admin.password); await page.goto(ADMIN_USERS_URL); await expect(page.getByRole('heading', { name: 'Users' })).toBeVisible(); @@ -31,7 +37,19 @@ test('admin sees auth source and can set local password', async ({ page }) => { const adminRow = rowForUser(page, TEST_USERS.admin.username); await expect(adminRow.getByText('Local', { exact: true })).toBeVisible(); - await regularRow.getByRole('button', { name: 'Set local password' }).click(); + await page.getByRole('button', { name: 'Add User' }).click(); + const addDialog = page.getByRole('dialog', { name: 'Add user' }); + await expect(addDialog).toBeVisible(); + await addDialog.locator('input[type="text"]').nth(0).fill(username); + await addDialog.locator('input[type="text"]').nth(1).fill(fullName); + await addDialog.locator('input[type="email"]').fill(email); + await addDialog.locator('input[type="password"]').nth(0).fill(password); + await addDialog.locator('input[type="password"]').nth(1).fill(password); + await addDialog.getByRole('button', { name: 'Create user' }).click(); + + const disposableUserRow = rowForUser(page, username); + await expect(disposableUserRow.getByText('Local', { exact: true })).toBeVisible(); + await disposableUserRow.getByRole('button', { name: 'Set local password' }).click(); const dialog = page.getByRole('dialog', { name: 'Set local password' }); await expect(dialog).toBeVisible(); diff --git a/e2e/admin-local-user-flow.test.ts b/e2e/admin-local-user-flow.test.ts index 163ff92..3c7fd8b 100644 --- a/e2e/admin-local-user-flow.test.ts +++ b/e2e/admin-local-user-flow.test.ts @@ -13,15 +13,6 @@ async function loginAsLocalUser(page: Page, username: string, password: string): await page.waitForURL(`**${DASHBOARD_URL}`, { timeout: 15_000 }); } -async function clearSessionState(page: Page): Promise { - await page.context().clearCookies(); - await page.goto('about:blank'); - await page.evaluate(() => { - localStorage.clear(); - sessionStorage.clear(); - }); -} - test.beforeEach(async ({ context }) => { await context.clearCookies(); }); @@ -47,9 +38,9 @@ test('admin can create a local user who can sign in', async ({ page }) => { await addDialog.locator('input[type="password"]').nth(1).fill(password); await addDialog.getByRole('button', { name: 'Create user' }).click(); - await expect(page.getByRole('cell', { name: username })).toBeVisible(); + await expect(page.getByRole('cell', { name: username, exact: true })).toBeVisible(); - await clearSessionState(page); + await page.context().clearCookies(); await loginAsLocalUser(page, username, password); await expect(page).toHaveURL(/\/trips\/dashboard/); diff --git a/e2e/auth-callback.test.ts b/e2e/auth-callback.test.ts index 1be5b81..87302f8 100644 --- a/e2e/auth-callback.test.ts +++ b/e2e/auth-callback.test.ts @@ -2,7 +2,7 @@ import { test, expect, type Page } from '@playwright/test'; import { TEST_USERS } from './setup/test-users.js'; const LOGIN_URL = '/trips/login'; -const UPCOMING_URL = '/trips/upcoming'; +const UPCOMING_URL = '/trips/trips/upcoming'; async function submitLocalLogin(page: Page, username: string, password: string): Promise { await page.fill('input[name="identifier"]', username); @@ -19,7 +19,7 @@ test('redirects back to protected route after local login', async ({ page }) => await expect(page).toHaveURL(/\/trips\/login/); await submitLocalLogin(page, TEST_USERS.regular.username, TEST_USERS.regular.password); - await page.waitForURL(/\/trips\/(upcoming|dashboard)/, { timeout: 15_000 }); + await page.waitForURL(/\/trips\/(trips\/upcoming|dashboard)/, { timeout: 15_000 }); await expect(page).not.toHaveURL(/\/trips\/auth/); await expect(page).not.toHaveURL(/\/trips\/login/); });