import { test, expect } from "@playwright/test"; import { LoginPage } from "../pages/LoginPage"; test.beforeEach(async ({ page }) => { await LoginPage.init(page); const login = new LoginPage(page); await login.initWithLoggedOutUser(); await page.goto("/?screen=auth-login"); }); test("User is redirected to the login page when logged out", async ({ page, }) => { const loginPage = new LoginPage(page); await loginPage.setupLoggedInUser(); await expect(loginPage.page).toHaveURL(/screen=auth-login$/); await expect(loginPage.initialHeading).toBeVisible(); }); test.describe("Login form", () => { test("User navigates to register by clicking the create account link", async ({ page, }) => { await LoginPage.mockConfigFlags(page, ["registration"]); await page.goto("/?screen=auth-login"); await page.getByTestId("register-submit").click(); await expect(page).toHaveURL(/screen=auth-register/); }); test("User logs in by filling the login form", async ({ page }) => { const loginPage = new LoginPage(page); await loginPage.setupLoginSuccess(); await loginPage.setupLoggedInUser(); await loginPage.fillEmailAndPasswordInputs("foo@example.com", "loremipsum"); await loginPage.clickLoginButton(); await page.waitForURL(/screen=dashboard/); await expect(loginPage.page).toHaveURL(/screen=dashboard/); }); test("User gets error message when submitting an bad formatted email ", async ({ page, }) => { const loginPage = new LoginPage(page); await loginPage.setupLoginSuccess(); await loginPage.fillEmailAndPasswordInputs("foo", "lorenIpsum"); await expect(loginPage.invalidEmailError).toBeVisible(); }); test("User gets error message when submitting wrong credentials", async ({ page, }) => { const loginPage = new LoginPage(page); await loginPage.setupLoginError(); await loginPage.fillEmailAndPasswordInputs( "test@example.com", "loremipsum", ); await loginPage.clickLoginButton(); await expect(loginPage.invalidCredentialsError).toBeVisible(); await expect(loginPage.page).toHaveURL(/screen=auth-login$/); }); });