diff --git a/tests/e2e/garden.spec.ts b/tests/e2e/garden.spec.ts index 30b7f68..b5265eb 100644 --- a/tests/e2e/garden.spec.ts +++ b/tests/e2e/garden.spec.ts @@ -33,6 +33,45 @@ test("garden plants happy path", async ({ page }) => { await expect(page).toHaveURL(/\/garden/); }); +test("garden care tracking happy path", async ({ page }) => { + const suffix = Date.now().toString(); + const plantName = `Care Plant ${suffix}`; + + // Create a plant to attach care to + await page.goto("/garden?tab=plants"); + await page.getByRole("link", { name: /add plant/i }).click(); + await page.getByLabel("Name").fill(plantName); + await page.getByRole("button", { name: /create/i }).click(); + await expect(page).toHaveURL(/\/garden\/plants\//); + + // Open the Care tab + await page.getByRole("button", { name: /care/i }).click(); + + // Add a care schedule + await page.getByRole("button", { name: /add schedule/i }).click(); + await page.getByLabel(/care type/i).fill("watering"); + await page.getByLabel(/interval/i).fill("7"); + await page.getByRole("button", { name: /save|add/i }).click(); + + // Verify schedule appears + await expect(page.getByText("watering")).toBeVisible(); + await expect(page.getByText(/7 days|every 7/i)).toBeVisible(); + + // Log a care event + await page.getByRole("button", { name: /log care/i }).click(); + await expect(page.getByLabel(/care type/i)).toBeVisible(); + await page.getByRole("button", { name: /log|save/i }).click(); + + // Verify history entry appears + await expect(page.getByText(/watered|watering/i)).toBeVisible(); + + // Cleanup: delete the plant + await page.getByRole("button", { name: /info/i }).click(); + 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();