/**
 * Detectors and model settings page tests -- HIGH tier.
 *
 * Tests rendering of the merged page and navigation from the Frigate+ page.
 */

import { test, expect } from "../../fixtures/frigate-test";

test.describe("Detectors and model Settings @high", () => {
  test("page renders with detector and model cards", async ({ frigateApp }) => {
    await frigateApp.goto("/settings?page=systemDetectorsAndModel");
    await frigateApp.page.waitForTimeout(2000);
    await expect(frigateApp.page.locator("#pageRoot")).toBeVisible();

    const text = await frigateApp.page.textContent("#pageRoot");
    expect(text).toContain("Detectors and model");
    expect(text?.toLowerCase()).toContain("detector hardware");
    expect(text?.toLowerCase()).toContain("detection model");
  });

  test("Frigate+ page links to the merged page", async ({ frigateApp }) => {
    await frigateApp.goto("/settings?page=frigateplus");
    await frigateApp.page.waitForTimeout(2000);

    const button = frigateApp.page.getByRole("button", {
      name: /Change in Detectors and model/,
    });

    // Button only appears when Frigate+ is enabled in the test config; skip
    // the click assertion if it's not present.
    if ((await button.count()) > 0) {
      await button.first().click();
      await frigateApp.page.waitForURL(/page=systemDetectorsAndModel/);
      await expect(frigateApp.page.locator("#pageRoot")).toContainText(
        "Detectors and model",
      );
    } else {
      test.skip(
        true,
        "Frigate+ not enabled in this test config; skipping link assertion",
      );
    }
  });

  test("old systemDetectionModel deep-link no longer routes here", async ({
    frigateApp,
  }) => {
    await frigateApp.goto("/settings?page=systemDetectionModel");
    await frigateApp.page.waitForTimeout(2000);
    // The old page key is no longer in allSettingsViews; the router
    // falls back to its default settings page (uiSettings).
    const text = await frigateApp.page.textContent("#pageRoot");
    expect(text).not.toContain("Detection model");
  });
});
