75 lines
3.4 KiB
TypeScript
75 lines
3.4 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
test.describe("Kontakt Page", () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("/kontakt");
|
|
});
|
|
|
|
test("should display contact page heading", async ({ page }) => {
|
|
await expect(page.locator('[data-testid="kontakt-headline"]')).toContainText("Kontakt");
|
|
});
|
|
|
|
test("should show office address card", async ({ page }) => {
|
|
const card = page.locator('[data-testid="office-card"]');
|
|
await expect(card).toBeVisible();
|
|
await expect(card).toContainText("Grockelhofen 10");
|
|
await expect(card).toContainText("89340 Leipheim");
|
|
});
|
|
|
|
test("should show warehouse address card", async ({ page }) => {
|
|
const card = page.locator('[data-testid="warehouse-card"]');
|
|
await expect(card).toBeVisible();
|
|
await expect(card).toContainText("Ellzee");
|
|
});
|
|
|
|
test("should show opening hours card", async ({ page }) => {
|
|
const card = page.locator('[data-testid="hours-card"]');
|
|
await expect(card).toBeVisible();
|
|
await expect(card).toContainText("Öffnungszeiten");
|
|
});
|
|
|
|
test("should show 2 contact persons", async ({ page }) => {
|
|
await expect(page.locator('[data-testid="contact-person-markus"]')).toBeVisible();
|
|
await expect(page.locator('[data-testid="contact-person-thomas"]')).toBeVisible();
|
|
});
|
|
|
|
test("should have form with all required fields", async ({ page }) => {
|
|
await expect(page.locator('[data-testid="form-name"]')).toBeVisible();
|
|
await expect(page.locator('[data-testid="form-email"]')).toBeVisible();
|
|
await expect(page.locator('[data-testid="form-phone"]')).toBeVisible();
|
|
await expect(page.locator('[data-testid="form-message"]')).toBeVisible();
|
|
await expect(page.locator('[data-testid="form-privacy"]')).toBeVisible();
|
|
await expect(page.locator('[data-testid="form-submit"]')).toBeVisible();
|
|
});
|
|
|
|
test("should block submit when email is empty", async ({ page }) => {
|
|
await page.locator('[data-testid="form-name"]').fill("Test User");
|
|
await page.locator('[data-testid="form-message"]').fill("Test message");
|
|
await page.locator('[data-testid="form-privacy"]').check();
|
|
await page.locator('[data-testid="form-submit"]').click();
|
|
await expect(page.locator('[data-testid="error-email"]')).toBeVisible();
|
|
});
|
|
|
|
test("should block submit when privacy consent unchecked", async ({ page }) => {
|
|
await page.locator('[data-testid="form-name"]').fill("Test User");
|
|
await page.locator('[data-testid="form-email"]').fill("test@example.com");
|
|
await page.locator('[data-testid="form-message"]').fill("Test message");
|
|
await page.locator('[data-testid="form-submit"]').click();
|
|
await expect(page.locator('[data-testid="error-privacy"]')).toBeVisible();
|
|
});
|
|
|
|
test("should block submit when name is empty", async ({ page }) => {
|
|
await page.locator('[data-testid="form-email"]').fill("test@example.com");
|
|
await page.locator('[data-testid="form-message"]').fill("Test message");
|
|
await page.locator('[data-testid="form-privacy"]').check();
|
|
await page.locator('[data-testid="form-submit"]').click();
|
|
await expect(page.locator('[data-testid="error-name"]')).toBeVisible();
|
|
});
|
|
|
|
test("should be mobile-responsive at 375px width", async ({ page }) => {
|
|
await page.setViewportSize({ width: 375, height: 667 });
|
|
await expect(page.locator('[data-testid="contact-form"]')).toBeVisible();
|
|
await expect(page.locator('[data-testid="office-card"]')).toBeVisible();
|
|
});
|
|
});
|