Files

83 lines
2.5 KiB
TypeScript

import { expect } from "@playwright/test";
import { authFile, navigateTo, test } from "./fixtures";
/**
* Planner Page E2E Tests
*
* Verifies the usage planner form, date inputs, calculate action,
* and results table display.
*/
test.describe("Planner Page", () => {
test.use({ storageState: authFile });
test("should display planner form", async ({ page }) => {
await navigateTo(page, "/planner");
await expect(page.getByTestId("planner-form-card")).toBeVisible();
});
test("should navigate to planner via nav tab", async ({ page }) => {
await navigateTo(page, "/dashboard");
await page
.getByTestId("main-nav")
.getByRole("button", { name: /Planner/i })
.click();
await expect(page).toHaveURL(/\/planner/);
await expect(page.getByTestId("planner-form-card")).toBeVisible();
});
test("should have date inputs", async ({ page }) => {
await navigateTo(page, "/planner");
await expect(page.getByText(/From|Von/i)).toBeVisible();
await expect(page.getByText(/Until|Bis/i)).toBeVisible();
});
test("should have a calculate button", async ({ page }) => {
await navigateTo(page, "/planner");
const calculateBtn = page.getByTestId("planner-form-card").getByRole("button", { name: /Calculate|Calculating/i });
await expect(calculateBtn).toBeVisible();
});
test("should have a reset button", async ({ page }) => {
await navigateTo(page, "/planner");
const resetBtn = page.getByTestId("planner-form-card").getByRole("button", { name: /Reset/i });
await expect(resetBtn).toBeVisible();
});
test("should have include-until-start checkbox", async ({ page }) => {
await navigateTo(page, "/planner");
const checkbox = page.getByTestId("planner-include-until-start").locator('input[type="checkbox"]');
await expect(checkbox).toBeVisible();
});
test("should submit planner form without error", async ({ page }) => {
await navigateTo(page, "/planner");
// Submit the planner form (default dates should work)
await page
.getByTestId("planner-form-card")
.getByRole("button", { name: /Calculate/i })
.click();
// After submit, the form should still be visible (no crash)
await expect(page.getByTestId("planner-form-card")).toBeVisible();
});
test("should show planner tab as active", async ({ page }) => {
await navigateTo(page, "/planner");
await expect(page).toHaveURL(/\/planner/);
});
test("Planner eyebrow shows correct heading", async ({ page }) => {
await navigateTo(page, "/planner");
await expect(page.getByTestId("planner-page-header")).toBeVisible();
});
});