53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
test("home page loads", async ({ page }) => {
|
|
const response = await page.goto("/");
|
|
expect(response?.ok()).toBeTruthy();
|
|
await expect(page.locator("h1")).toBeVisible();
|
|
});
|
|
|
|
test("login page loads", async ({ page }) => {
|
|
const response = await page.goto("/login");
|
|
expect(response?.ok()).toBeTruthy();
|
|
await expect(page.getByRole("heading", { name: /Anmelden|Sign in|Log in/i })).toBeVisible();
|
|
await expect(page.getByLabel(/E-Mail|Email/i)).toBeVisible();
|
|
await expect(page.getByLabel(/^Passwort$|^Password$/i)).toBeVisible();
|
|
});
|
|
|
|
test("register page loads", async ({ page }) => {
|
|
const response = await page.goto("/register");
|
|
expect(response?.ok()).toBeTruthy();
|
|
await expect(
|
|
page.getByRole("heading", { name: /Konto erstellen|Create account/i }),
|
|
).toBeVisible();
|
|
await expect(page.getByLabel(/E-Mail|Email/i)).toBeVisible();
|
|
await expect(page.getByLabel(/^Passwort$|^Password$/i)).toBeVisible();
|
|
});
|
|
|
|
test("docs page loads", async ({ page }) => {
|
|
const response = await page.goto("/docs");
|
|
expect(response?.ok()).toBeTruthy();
|
|
await expect(
|
|
page.getByRole("heading", { name: /Dokumentation|Documentation/i }),
|
|
).toBeVisible();
|
|
});
|
|
|
|
test("API health if reachable", async ({ request }) => {
|
|
const apiUrl = process.env.API_URL ?? "http://localhost:3001";
|
|
|
|
let response;
|
|
try {
|
|
response = await request.get(`${apiUrl}/api/v1/health/live`, { timeout: 3000 });
|
|
} catch {
|
|
test.info().annotations.push({
|
|
type: "skip-reason",
|
|
description: "API not reachable",
|
|
});
|
|
return;
|
|
}
|
|
|
|
expect(response.ok()).toBeTruthy();
|
|
const body = (await response.json()) as { status?: string };
|
|
expect(body.status).toBe("ok");
|
|
});
|