107 lines
5.4 KiB
TypeScript
107 lines
5.4 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
test("Teacher can create a class", async ({ page }) => {
|
|
const className = "DeTijdLoze";
|
|
|
|
await page.goto("/");
|
|
|
|
// Login
|
|
await page.getByRole("link", { name: "log in" }).click();
|
|
await page.getByRole("button", { name: "teacher" }).click();
|
|
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();
|
|
|
|
// Go to class
|
|
await expect(page.getByRole("banner").getByRole("link", { name: "Classes" })).toBeVisible();
|
|
await page.getByRole("banner").getByRole("link", { name: "Classes" }).click();
|
|
|
|
// Check if the class page is visible
|
|
await expect(page.getByRole("heading", { name: "Classes" })).toBeVisible();
|
|
await expect(page.getByRole("textbox", { name: "classname classname" })).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "create" })).toBeVisible();
|
|
|
|
// Create a class
|
|
await page.getByRole("textbox", { name: "classname classname" }).click();
|
|
await page.getByRole("textbox", { name: "classname classname" }).fill(className);
|
|
await page.getByRole("button", { name: "create" }).click();
|
|
|
|
// Check if the class is created
|
|
await expect(page.getByRole("dialog").getByText("code")).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "close" })).toBeVisible();
|
|
});
|
|
|
|
test("Teacher can share a class by code", async ({ page }) => {
|
|
await page.goto("/");
|
|
|
|
// Login
|
|
await page.getByRole("link", { name: "log in" }).click();
|
|
await page.getByRole("button", { name: "teacher" }).click();
|
|
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();
|
|
|
|
// Go to classes
|
|
await expect(page.getByRole("banner").getByRole("link", { name: "Classes" })).toBeVisible();
|
|
await page.getByRole("banner").getByRole("link", { name: "Classes" }).click();
|
|
|
|
await expect(page.getByRole("row", { name: "class01" }).locator("i").nth(1)).toBeVisible();
|
|
await page.getByRole("row", { name: "class01" }).locator("i").nth(1).click();
|
|
await expect(page.getByRole("button").filter({ hasText: /^$/ }).nth(2)).toBeVisible();
|
|
await expect(page.getByRole("button").filter({ hasText: /^$/ }).nth(3)).toBeVisible();
|
|
await page.getByRole("button").filter({ hasText: /^$/ }).nth(3).click();
|
|
await expect(page.getByText("copied!")).toBeVisible();
|
|
await page.getByRole("button", { name: "close" }).click();
|
|
});
|
|
|
|
test("Student can join class by code", async ({ page }) => {
|
|
await page.goto("/");
|
|
|
|
// Login
|
|
await page.getByRole("link", { name: "log in" }).click();
|
|
await page.getByRole("button", { name: "student" }).click();
|
|
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();
|
|
|
|
// Go to class
|
|
await expect(page.getByRole("banner").getByRole("link", { name: "Classes" })).toBeVisible();
|
|
await page.getByRole("banner").getByRole("link", { name: "Classes" }).click();
|
|
|
|
// Check if the class page is visible
|
|
await expect(page.getByRole("heading", { name: "Classes" })).toBeVisible();
|
|
await expect(page.getByRole("heading", { name: "Join class" })).toBeVisible();
|
|
await expect(page.getByRole("textbox", { name: "CODE CODE" })).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "submit" })).toBeVisible();
|
|
|
|
// Join a class
|
|
await page.getByRole("textbox", { name: "CODE CODE" }).click();
|
|
await page.getByRole("textbox", { name: "CODE CODE" }).fill("X2J9QT");
|
|
await page.getByRole("button", { name: "submit" }).click();
|
|
});
|
|
|
|
test("Teacher can remove student from class", async ({ page }) => {
|
|
await page.goto("/");
|
|
|
|
// Login
|
|
await page.getByRole("link", { name: "log in" }).click();
|
|
await page.getByRole("button", { name: "teacher" }).click();
|
|
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("banner").getByRole("link", { name: "Classes" })).toBeVisible();
|
|
await page.getByRole("banner").getByRole("link", { name: "Classes" }).click();
|
|
await expect(page.getByRole("link", { name: "class01" })).toBeVisible();
|
|
await expect(page.locator("#app")).toContainText("8");
|
|
await page.getByRole("link", { name: "class01" }).click();
|
|
await expect(page.getByRole("cell", { name: "Kurt Cobain" })).toBeVisible();
|
|
await expect(page.getByRole("row", { name: "Kurt Cobain remove" }).getByRole("button")).toBeVisible();
|
|
await page.getByRole("row", { name: "Kurt Cobain remove" }).getByRole("button").click();
|
|
await expect(page.getByText("Are you sure?")).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "cancel" })).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "yes" })).toBeVisible();
|
|
await page.getByRole("button", { name: "yes" }).click();
|
|
await page.getByRole("banner").getByRole("link", { name: "Classes" }).click();
|
|
await expect(page.locator("#app")).toContainText("7");
|
|
});
|