Files
HexaHost-GameCloud/apps/e2e/tests/smoke.spec.ts

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