mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-04-09 16:47:37 +03:00
59 lines
2.2 KiB
TypeScript
59 lines
2.2 KiB
TypeScript
|
|
/**
|
||
|
|
* 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);
|
||
|
|
});
|
||
|
|
});
|