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'); });