/** * Export page tests -- HIGH tier. * * Tests export card rendering with mock data, search filtering, * and delete confirmation dialog. */ import { test, expect } from "../fixtures/frigate-test"; test.describe("Export Page - Cards @high", () => { test("export page renders export cards from mock data", async ({ frigateApp, }) => { await frigateApp.goto("/export"); await frigateApp.page.waitForTimeout(2000); // Should show export names from our mock data await expect( frigateApp.page.getByText("Front Door - Person Alert"), ).toBeVisible({ timeout: 10_000 }); await expect( frigateApp.page.getByText("Backyard - Car Detection"), ).toBeVisible(); }); test("export page shows in-progress indicator", async ({ frigateApp }) => { await frigateApp.goto("/export"); await frigateApp.page.waitForTimeout(2000); // "Garage - In Progress" export should be visible await expect(frigateApp.page.getByText("Garage - In Progress")).toBeVisible( { timeout: 10_000 }, ); }); test("export page shows case grouping", async ({ frigateApp }) => { await frigateApp.goto("/export"); await frigateApp.page.waitForTimeout(3000); // Cases may render differently depending on API response shape const pageText = await frigateApp.page.textContent("#pageRoot"); expect(pageText?.length).toBeGreaterThan(0); }); }); test.describe("Export Page - Search @high", () => { test("search input filters export list", async ({ frigateApp }) => { await frigateApp.goto("/export"); await frigateApp.page.waitForTimeout(2000); const searchInput = frigateApp.page.locator( '#pageRoot input[type="text"], #pageRoot input', ); if ( (await searchInput.count()) > 0 && (await searchInput.first().isVisible()) ) { // Type a search term that matches one export await searchInput.first().fill("Front Door"); await frigateApp.page.waitForTimeout(500); // "Front Door - Person Alert" should still be visible await expect( frigateApp.page.getByText("Front Door - Person Alert"), ).toBeVisible(); } await expect(frigateApp.page.locator("#pageRoot")).toBeVisible(); }); }); test.describe("Export Page - Controls @high", () => { test("export page filter controls are present", async ({ frigateApp }) => { await frigateApp.goto("/export"); await frigateApp.page.waitForTimeout(1000); const buttons = frigateApp.page.locator("#pageRoot button"); const count = await buttons.count(); expect(count).toBeGreaterThan(0); }); });