60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { LoginPage } from "../pages";
|
|
import { isLoggedIn } from "../helpers";
|
|
|
|
/**
|
|
* Tests for authentication that already have auth state from setup.
|
|
*/
|
|
test.describe("Authentication - Pre-authenticated", () => {
|
|
test("should access event_manager when authenticated", async ({ page }) => {
|
|
// Already authenticated via setup project
|
|
await page.goto("/dashboard/");
|
|
await page.waitForLoadState("networkidle");
|
|
|
|
// Should not be redirected to login
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
});
|
|
|
|
test("should verify session via API", async ({ request }) => {
|
|
// Already authenticated via setup project
|
|
const loggedIn = await isLoggedIn(request);
|
|
expect(loggedIn).toBe(true);
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Tests for authentication that need fresh (unauthenticated) state.
|
|
* Uses storageState reset to clear any auth cookies.
|
|
*/
|
|
test.describe("Authentication - Fresh state", () => {
|
|
// Reset storage state to test without authentication
|
|
test.use({ storageState: { cookies: [], origins: [] } });
|
|
|
|
test("should login via UI", async ({ page }) => {
|
|
const loginPage = new LoginPage(page);
|
|
|
|
await loginPage.login(process.env.FRAPPE_USER || "Administrator", process.env.FRAPPE_PASSWORD || "admin");
|
|
|
|
// Should be redirected away from login
|
|
await expect(page).not.toHaveURL(/.*login.*/);
|
|
});
|
|
|
|
test("should show error for invalid credentials", async ({ page }) => {
|
|
const loginPage = new LoginPage(page);
|
|
|
|
await loginPage.goto();
|
|
await loginPage.fillCredentials("invalid@example.com", "wrongpassword");
|
|
await loginPage.submit();
|
|
|
|
// Should stay on login page
|
|
await loginPage.expectToBeOnLoginPage();
|
|
});
|
|
|
|
test("should show login button when not authenticated", async ({ page }) => {
|
|
await page.goto("/dashboard");
|
|
await page.waitForLoadState("networkidle");
|
|
|
|
await expect(page.getByRole("button", { name: "Log In" }).first()).toBeVisible();
|
|
});
|
|
});
|