/** * Review/Events page tests -- CRITICAL tier. * * Tests timeline, filters, event cards, video controls, * and mobile-specific drawer interactions. */ import { test, expect } from "../fixtures/frigate-test"; import { BasePage } from "../pages/base.page"; test.describe("Review Page @critical", () => { test("review page renders without crash", async ({ frigateApp }) => { await frigateApp.goto("/review"); await expect(frigateApp.page.locator("#pageRoot")).toBeVisible(); }); test("severity toggle group is visible", async ({ frigateApp }) => { await frigateApp.goto("/review"); // The review page has a toggle group for alert/detection severity const toggleGroup = frigateApp.page.locator('[role="group"]').first(); await expect(toggleGroup).toBeVisible({ timeout: 10_000 }); }); test("camera filter button is clickable", async ({ frigateApp }) => { await frigateApp.goto("/review"); // Find a button that opens the camera filter const filterButtons = frigateApp.page.locator("button"); const count = await filterButtons.count(); expect(count).toBeGreaterThan(0); // Page should not crash after interaction await expect(frigateApp.page.locator("#pageRoot")).toBeVisible(); }); test("empty state shows when no events", async ({ frigateApp }) => { await frigateApp.goto("/review"); // With empty reviews mock, should show some kind of content (not crash) await frigateApp.page.waitForTimeout(2000); await expect(frigateApp.page.locator("#pageRoot")).toBeVisible(); }); test("navigate to review from live page", async ({ frigateApp }) => { await frigateApp.goto("/"); const base = new BasePage(frigateApp.page, !frigateApp.isMobile); await base.navigateTo("/review"); await expect(frigateApp.page.locator("#pageRoot")).toBeVisible(); }); test("review page has interactive controls", async ({ frigateApp }) => { await frigateApp.goto("/review"); await frigateApp.page.waitForTimeout(2000); // Should have buttons/controls for filtering const interactive = frigateApp.page.locator( "button, input, [role='group']", ); const count = await interactive.count(); expect(count).toBeGreaterThan(0); }); });