diff --git a/frontend/tests/cox.spec.ts b/frontend/tests/cox.spec.ts index 9969e8a..dea3eb8 100644 --- a/frontend/tests/cox.spec.ts +++ b/frontend/tests/cox.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from "@playwright/test"; -import { resetDatabase } from "./helpers"; +import { resetDatabase, login } from "./helpers"; test.beforeEach(async () => { await resetDatabase(); @@ -117,24 +117,14 @@ test.describe("cox can edit trips", () => { // Someone registers... await page.goto("/auth/logout"); - await page.goto("/auth"); - await page.getByPlaceholder("Name").click(); - await page.getByPlaceholder("Name").fill("rower"); - await page.getByPlaceholder("Name").press("Tab"); - await page.getByPlaceholder("Passwort").fill("rower"); - await page.getByPlaceholder("Passwort").press("Enter"); + await login(page, "rower", "rower"); await page.goto("/planned"); await page.getByRole('link', { name: 'Mitrudern' }).nth(1).click(); // Login as cox again await page.goto("/auth/logout"); - await page.goto("/auth"); - await page.getByPlaceholder("Name").click(); - await page.getByPlaceholder("Name").fill("cox"); - await page.getByPlaceholder("Name").press("Tab"); - await page.getByPlaceholder("Passwort").fill("cox"); - await page.getByPlaceholder("Passwort").press("Enter"); + await login(page, "cox", "cox"); await page.goto("/planned"); diff --git a/frontend/tests/helpers.ts b/frontend/tests/helpers.ts index 1c581ed..2bd18f1 100644 --- a/frontend/tests/helpers.ts +++ b/frontend/tests/helpers.ts @@ -1,8 +1,26 @@ import { exec } from 'child_process'; import { promisify } from 'util'; +import { Page } from '@playwright/test'; const execAsync = promisify(exec); export async function resetDatabase(): Promise { await execAsync('cd .. && ./reset_test_data.sh'); } + +export async function login(page: Page, username: string, password: string): Promise { + // Clear cookies to ensure clean state + await page.context().clearCookies(); + + await page.goto("/auth"); + await page.getByPlaceholder("Name").click(); + await page.getByPlaceholder("Name").fill(username); + await page.getByPlaceholder("Passwort").click(); + await page.getByPlaceholder("Passwort").fill(password); + + // Wait for navigation after form submission + await Promise.all([ + page.waitForURL(/\/(planned|log|$)/, { timeout: 10000 }), + page.getByPlaceholder("Passwort").press("Enter") + ]); +}