Files
next-tjwater-frontend/tests/browser/support/mock-workbench-context.ts
T

39 lines
1.3 KiB
TypeScript

import type { Page } from "@playwright/test";
import { mockScadaApi } from "./mock-scada-api";
// UI-only tests still need the authorized project lookup used by Agent API calls.
export async function mockWorkbenchContext(
page: Page,
runtimeSnapshot?: unknown,
projectPresentation?: { metadata: unknown; accessContext: unknown },
analysisRuns: Record<string, unknown> = {},
analysisHistory: unknown[] = [],
options: { runtimeMode?: "auto" | "demo" | "history" | "backend" } = {}
) {
await mockScadaApi(
page,
[],
runtimeSnapshot,
[],
projectPresentation,
analysisRuns,
analysisHistory
);
await page.route("**/runtime-config.js", (route) =>
route.fulfill({
contentType: "application/javascript",
body: `globalThis.__TJWATER_CONFIG__ = ${JSON.stringify({
TJWATER_AUTH_MODE: "disabled",
TJWATER_SERVER_API_BASE_URL: "https://tjwater-api.invalid",
TJWATER_AGENT_API_BASE_URL: "http://127.0.0.1:8787",
TJWATER_MAP_URL: "https://workbench-map.invalid/geoserver",
TJWATER_GEOSERVER_WORKSPACE: "tjwater_next",
TJWATER_MAPBOX_ACCESS_TOKEN: "",
TJWATER_WORKBENCH_RUNTIME_MODE: options.runtimeMode ?? "auto",
TJWATER_ENABLE_MSW: "false"
})};`
})
);
await page.route("https://workbench-map.invalid/**", (route) => route.fulfill({ status: 204 }));
}