61 lines
2.8 KiB
TypeScript
61 lines
2.8 KiB
TypeScript
import { expect, test } from "@playwright/test"
|
|
|
|
test.describe("public rendering integration", () => {
|
|
test("header exposes portfolio/news/commissions navigation", async ({ page }, testInfo) => {
|
|
test.skip(testInfo.project.name !== "web-chromium")
|
|
|
|
await page.goto("/")
|
|
|
|
const header = page.locator("header").first()
|
|
await expect(header.getByRole("link", { name: /portfolio/i })).toBeVisible()
|
|
await expect(header.getByRole("link", { name: /news|actualités|noticias/i })).toBeVisible()
|
|
await expect(header.getByRole("link", { name: /commissions|auftrag/i })).toBeVisible()
|
|
})
|
|
|
|
test("portfolio routes render list and seeded artwork detail", async ({ page }, testInfo) => {
|
|
test.skip(testInfo.project.name !== "web-chromium")
|
|
|
|
await page.goto("/portfolio")
|
|
await expect(page.getByRole("heading", { name: /portfolio|portafolio/i })).toBeVisible()
|
|
|
|
await page.goto("/portfolio/seed-artwork-welcome")
|
|
await expect(page.getByRole("heading", { name: /seed artwork/i })).toBeVisible()
|
|
})
|
|
|
|
test("commission form rejects invalid budget ranges", async ({ page }, testInfo) => {
|
|
test.skip(testInfo.project.name !== "web-chromium")
|
|
|
|
await page.goto("/commissions")
|
|
await page.locator('input[name="customerName"]').fill("E2E Client")
|
|
await page.locator('input[name="customerEmail"]').fill(`e2e-${Date.now()}@example.com`)
|
|
await page.locator('input[name="title"]').fill("E2E Budget Validation")
|
|
await page.locator('input[name="budgetMin"]').fill("1000")
|
|
await page.locator('input[name="budgetMax"]').fill("500")
|
|
await page.getByRole("button", { name: /submit|senden|envoyer/i }).click()
|
|
|
|
await expect(page).toHaveURL(/\/commissions\?error=budget_range_invalid/)
|
|
})
|
|
|
|
test("public commission form accepts valid submission", async ({ page }, testInfo) => {
|
|
test.skip(testInfo.project.name !== "web-chromium")
|
|
|
|
const customerName = `E2E Public Customer ${Date.now()}`
|
|
const commissionTitle = `E2E Public Commission ${Date.now()}`
|
|
const customerEmail = `public-commission-${Date.now()}@example.com`
|
|
|
|
await page.goto("/commissions")
|
|
await page.locator('input[name="customerName"]').fill(customerName)
|
|
await page.locator('input[name="customerEmail"]').fill(customerEmail)
|
|
await page.locator('input[name="title"]').fill(commissionTitle)
|
|
await page
|
|
.locator('textarea[name="description"]')
|
|
.fill("E2E public request -> admin visibility")
|
|
await page.locator('input[name="budgetMin"]').fill("250")
|
|
await page.locator('input[name="budgetMax"]').fill("500")
|
|
await page.getByRole("button", { name: /submit|senden|envoyer/i }).click()
|
|
|
|
await expect(page).toHaveURL(/\/commissions\?notice=submitted/)
|
|
await expect(page.getByText(/submitted|übermittelt|enviada|envoyée/i)).toBeVisible()
|
|
})
|
|
})
|