55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
test.describe("Authentication", () => {
|
|
test("login page loads", async ({ page }) => {
|
|
await page.goto("/");
|
|
await expect(page.getByText("SEC cyBERT")).toBeVisible();
|
|
await expect(page.getByPlaceholder("Enter password")).toBeVisible();
|
|
});
|
|
|
|
test("rejects wrong password", async ({ page }) => {
|
|
await page.goto("/");
|
|
|
|
await page.selectOption("#annotator", "joey");
|
|
await page.getByPlaceholder("Enter password").fill("wrongpassword");
|
|
await page.getByRole("button", { name: "Sign In" }).click();
|
|
|
|
await expect(page.getByText("Invalid credentials")).toBeVisible();
|
|
});
|
|
|
|
test("logs in with correct password and redirects to dashboard", async ({
|
|
page,
|
|
}) => {
|
|
await page.goto("/");
|
|
|
|
await page.selectOption("#annotator", "joey");
|
|
await page.getByPlaceholder("Enter password").fill("SEC-cyBERT");
|
|
await page.getByRole("button", { name: "Sign In" }).click();
|
|
|
|
await page.waitForURL("/dashboard");
|
|
await expect(page.getByText("Welcome, Joey")).toBeVisible();
|
|
});
|
|
|
|
test("redirects unauthenticated users from dashboard to login", async ({
|
|
page,
|
|
}) => {
|
|
await page.goto("/dashboard");
|
|
await page.waitForURL("/");
|
|
await expect(page.getByText("SEC cyBERT")).toBeVisible();
|
|
});
|
|
|
|
test("logout clears session", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.selectOption("#annotator", "joey");
|
|
await page.getByPlaceholder("Enter password").fill("SEC-cyBERT");
|
|
await page.getByRole("button", { name: "Sign In" }).click();
|
|
await page.waitForURL("/dashboard");
|
|
|
|
await page.getByRole("button", { name: "Logout" }).click();
|
|
await page.waitForURL("/");
|
|
|
|
await page.goto("/dashboard");
|
|
await page.waitForURL("/");
|
|
});
|
|
});
|