37 lines
1.8 KiB
TypeScript
37 lines
1.8 KiB
TypeScript
import { expect, test } from "./utils/test";
|
|
import { loginAsAdminUser } from "./utils/auth";
|
|
import { skipIfUnavailable } from "./utils/navigation";
|
|
import { skipOrFailWhenE2eInputsMissing } from "./utils/readiness";
|
|
|
|
/**
|
|
* Audit-Viewer-Smoke (AK-P3 / DoD D.19): Admin-Login -> /admin/audit oeffnen ->
|
|
* Interim-Screen (AD-28) sichtbar, Filter-Bar + Export-CTA vorhanden.
|
|
*
|
|
* Die Route ist permission-gegated (`admin.auditTrails.view`) und braucht den
|
|
* dedizierten OPERATOR-Admin-User (E2E_ADMIN_EMAIL/PASSWORD, siehe Seed) —
|
|
* der Admin-Login landet auf dem Admin-Host, dort ist die kanonische Route
|
|
* `/audit` (der host-aware Alias von `routes/admin/audit.tsx`; pfadbasiert
|
|
* existiert weiterhin `/admin/audit`, via E2E_ADMIN_AUDIT_PATH uebersteuerbar).
|
|
* Skippt ohne Credentials / wenn die Route im Environment nicht erreichbar ist.
|
|
* Nicht-mutierend: kein Export wird ausgeloest.
|
|
*/
|
|
const adminCredentials =
|
|
process.env.E2E_ADMIN_EMAIL && process.env.E2E_ADMIN_PASSWORD
|
|
? { email: process.env.E2E_ADMIN_EMAIL, password: process.env.E2E_ADMIN_PASSWORD }
|
|
: null;
|
|
const auditPath = process.env.E2E_ADMIN_AUDIT_PATH ?? "/audit";
|
|
|
|
test.describe("audit viewer smoke", () => {
|
|
test("renders the audit list with filter bar and export CTA", async ({ page }) => {
|
|
skipOrFailWhenE2eInputsMissing(["E2E_ADMIN_EMAIL", "E2E_ADMIN_PASSWORD"], "Audit smoke inputs not configured");
|
|
await loginAsAdminUser(page, adminCredentials!);
|
|
|
|
const response = await page.goto(auditPath, { waitUntil: "domcontentloaded" });
|
|
await skipIfUnavailable(page, response, "Audit path is not reachable in this environment");
|
|
|
|
await expect(page.locator('[data-ui-id="ui.audit.list"]')).toBeVisible();
|
|
await expect(page.locator('[data-ui-id="ui.audit.list.filter"]')).toBeVisible();
|
|
await expect(page.locator('[data-ui-id="ui.audit.list.export"]')).toBeVisible();
|
|
});
|
|
});
|