import { test, expect } from "@playwright/test";
import { discoverAppRoutes, findUndeclaredRoutes } from "../support/route-scan";
import { DECLARED_ROUTE_TEMPLATES } from "./routes.manifest";

/**
 * Driftschutz (Definition of Done #1): verhindert ungetestete neue Routen.
 *
 * STATISCHER Check — braucht weder Server noch DB; lauffähig offline. Die
 * identische Logik ist zusätzlich als Vitest-Unit-Test
 * (tests/unit/routes-manifest.test.ts) abgesichert.
 *
 * Negativ-Probe: Eine neue Route src/app/(app)/leak/page.tsx ohne
 * Manifest-Eintrag macht diesen Test rot; Entfernen -> grün.
 */
test("jede Route unter src/app ist im Manifest oder öffentlich", () => {
  const discovered = discoverAppRoutes();
  const undeclared = findUndeclaredRoutes(discovered, DECLARED_ROUTE_TEMPLATES);
  expect(
    undeclared,
    `Ungetestete Routen (im Manifest ergänzen oder als öffentlich markieren):\n${undeclared.join(
      "\n",
    )}`,
  ).toEqual([]);
});
