import { Page } from "@playwright/test"; /** * Auth helpers for e2e tests. */ const API_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000"; export { API_URL }; export function getRequiredEnv(name: string): string { const value = process.env[name]; if (!value) { throw new Error(`Required environment variable ${name} is not set.`); } return value; } export const REGULAR_USER = { email: getRequiredEnv("DEV_USER_EMAIL"), password: getRequiredEnv("DEV_USER_PASSWORD"), }; export const ADMIN_USER = { email: getRequiredEnv("DEV_ADMIN_EMAIL"), password: getRequiredEnv("DEV_ADMIN_PASSWORD"), }; export async function clearAuth(page: Page) { await page.context().clearCookies(); } export async function setEnglishLanguage(page: Page) { // Set English language in localStorage await page.evaluate(() => { window.localStorage.setItem("arbret-locale", "en"); }); } export async function loginUser(page: Page, email: string, password: string) { await page.goto("/login"); // Set language after navigation to ensure localStorage is available await setEnglishLanguage(page); // Reload to apply language setting await page.reload(); await page.fill('input[type="email"]', email); await page.fill('input[type="password"]', password); await page.click('button[type="submit"]'); await page.waitForURL((url) => !url.pathname.includes("/login"), { timeout: 10000 }); // Set language again after navigation to new page await setEnglishLanguage(page); }