Files
stock-manager/tests/e2e/app.smoke.spec.ts
T

73 lines
2.2 KiB
TypeScript

import { expect, type Page, test } from "@playwright/test"
async function setEnglishLocaleCookie(page: Page, baseURL?: string) {
await page.context().addCookies([
{
name: "stock-manager-locale",
value: "en",
url: baseURL ?? "http://127.0.0.1:3100",
},
])
}
async function signInAsAdmin(page: Page, baseURL?: string) {
await setEnglishLocaleCookie(page, baseURL)
await page.goto("/login")
await page.getByLabel("Username").fill("admin")
await page.getByLabel("Password").fill("admin-password")
await page.getByRole("button", { name: "Sign In" }).click()
await expect(page).toHaveURL("/")
}
test.describe("main app smoke", () => {
test("redirects unauthenticated users to login", async ({
baseURL,
page,
}) => {
await setEnglishLocaleCookie(page, baseURL)
await page.goto("/admin/users")
await expect(page).toHaveURL(/\/login/)
await expect(page.getByLabel("Username")).toBeVisible()
await expect(page.getByRole("button", { name: "Sign In" })).toBeVisible()
})
test("signs in as seeded admin and opens the dashboard", async ({
baseURL,
page,
}) => {
await signInAsAdmin(page, baseURL)
await expect(page.getByRole("heading", { name: "Dashboard" })).toBeVisible()
await expect(page.getByText("E2E Admin")).toBeVisible()
await expect(
page.getByRole("link", { name: /Stock Manager/i }),
).toBeVisible()
})
test("admin can open users and inventory pages", async ({
baseURL,
page,
}) => {
await signInAsAdmin(page, baseURL)
await page.getByRole("link", { name: "Users" }).click()
await expect(page).toHaveURL(/\/admin\/users/)
await expect(page.getByRole("heading", { name: "Users" })).toBeVisible()
await expect(
page.getByRole("cell", { name: "admin@example.test" }),
).toBeVisible()
await page.goto("/inventory/items")
await expect(page.getByRole("heading", { name: "Items" })).toBeVisible()
await expect(page.getByText("No items found.")).toBeVisible()
await page.goto("/assignments")
await expect(
page.getByRole("heading", { name: "Assignments" }),
).toBeVisible()
await expect(page.getByText("No assignments found")).toBeVisible()
})
})