committed by
GitHub
3 changed files with 115 additions and 8 deletions
@ -1,8 +0,0 @@ |
|||||
import { test, expect } from '@playwright/test'; |
|
||||
|
|
||||
test('has title', async ({ page }) => { |
|
||||
await page.goto('https://playwright.dev/'); |
|
||||
|
|
||||
// Expect a title "to contain" a substring.
|
|
||||
await expect(page).toHaveTitle(/Playwright/); |
|
||||
}); |
|
@ -0,0 +1,114 @@ |
|||||
|
import { type Page, expect, test } from "@playwright/test" |
||||
|
|
||||
|
test.use({ storageState: { cookies: [], origins: [] } }) |
||||
|
|
||||
|
type OptionsType = { |
||||
|
exact?: boolean |
||||
|
} |
||||
|
|
||||
|
const fillForm = async (page: Page, email: string, password: string) => { |
||||
|
await page.getByPlaceholder("Email").fill(email) |
||||
|
await page.getByPlaceholder("Password", { exact: true }).fill(password) |
||||
|
} |
||||
|
|
||||
|
const verifyInput = async ( |
||||
|
page: Page, |
||||
|
placeholder: string, |
||||
|
options?: OptionsType, |
||||
|
) => { |
||||
|
const input = page.getByPlaceholder(placeholder, options) |
||||
|
await expect(input).toBeVisible() |
||||
|
await expect(input).toHaveText("") |
||||
|
await expect(input).toBeEditable() |
||||
|
} |
||||
|
|
||||
|
test("Inputs are visible, empty and editable", async ({ page }) => { |
||||
|
await page.goto("/login") |
||||
|
|
||||
|
await verifyInput(page, "Email") |
||||
|
await verifyInput(page, "Password", { exact: true }) |
||||
|
}) |
||||
|
|
||||
|
test("Log In button is visible", async ({ page }) => { |
||||
|
await page.goto("/login") |
||||
|
|
||||
|
await expect(page.getByRole("button", { name: "Log In" })).toBeVisible() |
||||
|
}) |
||||
|
|
||||
|
test("Forgot Password link is visible", async ({ page }) => { |
||||
|
await page.goto("/login") |
||||
|
|
||||
|
await expect( |
||||
|
page.getByRole("link", { name: "Forgot password?" }), |
||||
|
).toBeVisible() |
||||
|
}) |
||||
|
|
||||
|
test("Log in with valid email and password ", async ({ page }) => { |
||||
|
await page.goto("/login") |
||||
|
|
||||
|
await fillForm(page, "admin@example.com", "changethis") |
||||
|
await page.getByRole("button", { name: "Log In" }).click() |
||||
|
|
||||
|
await page.waitForURL("/") |
||||
|
|
||||
|
await expect( |
||||
|
page.getByText("Welcome back, nice to see you again!"), |
||||
|
).toBeVisible() |
||||
|
}) |
||||
|
|
||||
|
test("Log in with invalid email", async ({ page }) => { |
||||
|
await page.goto("/login") |
||||
|
|
||||
|
await fillForm(page, "invalidemail", "changethis") |
||||
|
await page.getByRole("button", { name: "Log In" }).click() |
||||
|
|
||||
|
await expect(page.getByText("Invalid email address")).toBeVisible() |
||||
|
}) |
||||
|
|
||||
|
test("Log in with invalid password", async ({ page }) => { |
||||
|
await page.goto("/login") |
||||
|
|
||||
|
await fillForm(page, "admin@example.com", "changethat") |
||||
|
await page.getByRole("button", { name: "Log In" }).click() |
||||
|
|
||||
|
await expect(page.getByText("Incorrect email or password")).toBeVisible() |
||||
|
}) |
||||
|
|
||||
|
// Log out
|
||||
|
|
||||
|
test("Successful log out", async ({ page }) => { |
||||
|
await page.goto("/login") |
||||
|
|
||||
|
await fillForm(page, "admin@example.com", "changethis") |
||||
|
await page.getByRole("button", { name: "Log In" }).click() |
||||
|
|
||||
|
await page.waitForURL("/") |
||||
|
|
||||
|
await expect( |
||||
|
page.getByText("Welcome back, nice to see you again!"), |
||||
|
).toBeVisible() |
||||
|
|
||||
|
await page.getByTestId("user-menu").click() |
||||
|
await page.getByRole("menuitem", { name: "Log out" }).click() |
||||
|
await page.waitForURL("/login") |
||||
|
}) |
||||
|
|
||||
|
test("Logged-out user cannot access protected routes", async ({ page }) => { |
||||
|
await page.goto("/login") |
||||
|
|
||||
|
await fillForm(page, "admin@example.com", "changethis") |
||||
|
await page.getByRole("button", { name: "Log In" }).click() |
||||
|
|
||||
|
await page.waitForURL("/") |
||||
|
|
||||
|
await expect( |
||||
|
page.getByText("Welcome back, nice to see you again!"), |
||||
|
).toBeVisible() |
||||
|
|
||||
|
await page.getByTestId("user-menu").click() |
||||
|
await page.getByRole("menuitem", { name: "Log out" }).click() |
||||
|
await page.waitForURL("/login") |
||||
|
|
||||
|
await page.goto("/settings") |
||||
|
await page.waitForURL("/login") |
||||
|
}) |
Loading…
Reference in new issue