2025SELab2-project-Dwengo/frontend/e2e/basic-homepage.spec.ts
2025-04-21 15:08:07 +00:00

86 lines
4 KiB
TypeScript

import { test, expect } from "@playwright/test";
test("User can pick their language", async ({ page }) => {
await page.goto("/");
await expect(page.getByRole("button", { name: "translate" })).toBeVisible();
await page.getByRole("button", { name: "translate" }).click();
await page.getByText("Nederlands").click();
await expect(page.locator("h1")).toContainText("Onze sterke punten");
await expect(page.getByRole("heading", { name: "Innovatief" })).toBeVisible();
await page.getByRole("heading", { name: "Innovatief" }).click();
await expect(page.getByRole("button", { name: "vertalen" })).toBeVisible();
await page.getByRole("button", { name: "vertalen" }).click();
await page.getByText("English").click();
await expect(page.locator("h1")).toContainText("Our strengths");
await expect(page.getByRole("heading", { name: "Innovative" })).toBeVisible();
});
test("Teacher can sign in", async ({ page }) => {
await page.goto("/");
await expect(page.getByRole("link", { name: "log in" })).toBeVisible();
await page.getByRole("link", { name: "log in" }).click();
await expect(page.getByRole("button", { name: "teacher" })).toBeVisible();
await page.getByRole("button", { name: "teacher" }).click();
await expect(page.getByText("teacher")).toBeVisible();
await expect(page.getByRole("button", { name: "Sign In" })).toBeVisible();
await expect(page).toHaveURL(/\/realms\/teacher\//);
await page.getByRole("textbox", { name: "Username or email" }).fill("testleerkracht1");
await page.getByRole("textbox", { name: "Password" }).fill("password");
await page.getByRole("button", { name: "Sign In" }).click();
await expect(page.getByRole("link", { name: "Dwengo logo teacher" })).toBeVisible();
await expect(page.getByRole("button").nth(1)).toBeVisible();
});
test("Student can sign in", async ({ page }) => {
await page.goto("/");
await expect(page.getByRole("link", { name: "log in" })).toBeVisible();
await page.getByRole("link", { name: "log in" }).click();
await expect(page.getByRole("button", { name: "student" })).toBeVisible();
await page.getByRole("button", { name: "student" }).click();
await expect(page).toHaveURL(/\/realms\/student\//);
await expect(page.getByText("student")).toBeVisible();
await expect(page.getByRole("button", { name: "Sign In" })).toBeVisible();
await page.getByRole("textbox", { name: "Username or email" }).fill("testleerling1");
await page.getByRole("textbox", { name: "Password" }).fill("password");
await page.getByRole("button", { name: "Sign In" }).click();
await expect(page.getByRole("link", { name: "Dwengo logo student" })).toBeVisible();
await expect(page.getByRole("button").nth(1)).toBeVisible();
});
test("Cannot sign in with invalid credentials", async ({ page }) => {
await page.goto("/");
await page.getByRole("link", { name: "log in" }).click();
await page.getByRole("button", { name: "teacher" }).click();
await page.getByRole("textbox", { name: "Username or email" }).fill("doesnotexist");
await page.getByRole("textbox", { name: "Password" }).fill("wrong");
await page.getByRole("button", { name: "Sign In" }).click();
await expect(page.getByText("Invalid username or password.")).toBeVisible();
await page.goto("/");
await page.getByRole("link", { name: "log in" }).click();
await page.getByRole("button", { name: "student" }).click();
await page.getByRole("textbox", { name: "Username or email" }).fill("doesnotexist");
await page.getByRole("textbox", { name: "Password" }).fill("wrong");
await page.getByRole("button", { name: "Sign In" }).click();
await expect(page.getByText("Invalid username or password.")).toBeVisible();
});
test("Cannot skip login", async ({ page }) => {
await page.goto("/user");
// Should redirect to login
await expect(page.getByText("login")).toBeVisible();
await expect(page.getByRole("button", { name: "teacher" })).toBeVisible();
});