69 lines
2.9 KiB
TypeScript
69 lines
2.9 KiB
TypeScript
|
|
import { test, expect } from "@playwright/test";
|
||
|
|
|
||
|
|
test.describe("Home Page", () => {
|
||
|
|
test.beforeEach(async ({ page }) => {
|
||
|
|
await page.goto("/");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("should display hero with headline 'Veranstaltungstechnik'", async ({ page }) => {
|
||
|
|
await expect(page.locator('[data-testid="hero-headline"]')).toContainText("Veranstaltungstechnik");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("should have CTA button linking to /mietkatalog", async ({ page }) => {
|
||
|
|
const cta = page.locator('[data-testid="hero-cta-mietkatalog"]');
|
||
|
|
await expect(cta).toBeVisible();
|
||
|
|
await expect(cta).toHaveAttribute("to", "/mietkatalog");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("should have CTA button linking to /kontakt", async ({ page }) => {
|
||
|
|
const cta = page.locator('[data-testid="hero-cta-kontakt"]');
|
||
|
|
await expect(cta).toBeVisible();
|
||
|
|
await expect(cta).toHaveAttribute("to", "/kontakt");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("should display all 8 services", async ({ page }) => {
|
||
|
|
const servicesSection = page.locator('[data-testid="services-section"]');
|
||
|
|
await expect(servicesSection).toBeVisible();
|
||
|
|
await expect(servicesSection).toContainText("Vermietung");
|
||
|
|
await expect(servicesSection).toContainText("Verkauf");
|
||
|
|
await expect(servicesSection).toContainText("Personal");
|
||
|
|
await expect(servicesSection).toContainText("Transport");
|
||
|
|
await expect(servicesSection).toContainText("Lagerung");
|
||
|
|
await expect(servicesSection).toContainText("Werkstatt");
|
||
|
|
await expect(servicesSection).toContainText("Installation");
|
||
|
|
await expect(servicesSection).toContainText("Booking");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("should display speaker grid with 6 equipment types", async ({ page }) => {
|
||
|
|
const grid = page.locator('[data-testid="speaker-grid"]');
|
||
|
|
await expect(grid).toBeVisible();
|
||
|
|
await expect(grid).toContainText("Lautsprecher");
|
||
|
|
await expect(grid).toContainText("Mischpulte");
|
||
|
|
await expect(grid).toContainText("Lichtanlagen");
|
||
|
|
await expect(grid).toContainText("Rigging");
|
||
|
|
await expect(grid).toContainText("Traversen");
|
||
|
|
await expect(grid).toContainText("Komplett-Setups");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("should display about section with stats", async ({ page }) => {
|
||
|
|
const about = page.locator('[data-testid="about-section"]');
|
||
|
|
await expect(about).toBeVisible();
|
||
|
|
await expect(about).toContainText("20+");
|
||
|
|
await expect(about).toContainText("1000+");
|
||
|
|
await expect(about).toContainText("500+");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("should have mietkatalog CTA section", async ({ page }) => {
|
||
|
|
const cta = page.locator('[data-testid="mietkatalog-cta"]');
|
||
|
|
await expect(cta).toBeVisible();
|
||
|
|
const link = page.locator('[data-testid="cta-mietkatalog-link"]');
|
||
|
|
await expect(link).toBeVisible();
|
||
|
|
});
|
||
|
|
|
||
|
|
test("should be mobile-responsive at 375px width", async ({ page }) => {
|
||
|
|
await page.setViewportSize({ width: 375, height: 667 });
|
||
|
|
await expect(page.locator('[data-testid="hero-headline"]')).toBeVisible();
|
||
|
|
await expect(page.locator('[data-testid="services-section"]')).toBeVisible();
|
||
|
|
});
|
||
|
|
});
|