diff --git a/tests/e2e/garden.spec.ts b/tests/e2e/garden.spec.ts index 53d1997..30b7f68 100644 --- a/tests/e2e/garden.spec.ts +++ b/tests/e2e/garden.spec.ts @@ -1,5 +1,38 @@ import { test, expect } from "@playwright/test"; +test("garden plants happy path", async ({ page }) => { + const suffix = Date.now().toString(); + const plantName = `E2E Plant ${suffix}`; + + await page.goto("/garden?tab=plants"); + await expect(page.getByRole("heading", { name: "Garden" })).toBeVisible(); + + // Add plant + await page.getByRole("link", { name: /add plant/i }).click(); + await expect(page).toHaveURL(/\/garden\/plants\/new/); + + await page.getByLabel("Name").fill(plantName); + await page.getByRole("button", { name: /create/i }).click(); + + await expect(page).toHaveURL(/\/garden\/plants\//); + await expect(page.getByRole("heading", { name: plantName })).toBeVisible(); + + // Edit plant + await page.getByRole("link", { name: /edit/i }).click(); + await expect(page).toHaveURL(/\/garden\/plants\/.*\/edit/); + const updatedName = `${plantName} Updated`; + await page.getByLabel("Name").fill(updatedName); + await page.getByRole("button", { name: /save/i }).click(); + + await expect(page).toHaveURL(/\/garden\/plants\//); + await expect(page.getByRole("heading", { name: updatedName })).toBeVisible(); + + // Delete plant + await page.getByRole("button", { name: /delete/i }).click(); + await page.getByRole("button", { name: /confirm/i }).click(); + await expect(page).toHaveURL(/\/garden/); +}); + test("garden containers happy path", async ({ page }) => { await page.goto("/garden"); await expect(page.getByRole("heading", { name: "Garden" })).toBeVisible();