import type { Page, Route } from "@playwright/test"; const json = (route: Route, body: unknown) => route.fulfill({ status: 200, contentType: "application/json", body: JSON.stringify(body), }); export const mockBackend = async (page: Page) => { if (process.env.E2E_USE_REAL_SERVICES === "true") return; await page.route("**/api/v1/**", async (route) => { const url = new URL(route.request().url()); if (url.pathname === "/api/v1/access-context") { return json(route, { user_id: "playwright-user", username: "playwright", system_role: "system_admin", is_system_admin: true, project_id: "playwright-project", project_role: "project_admin", permissions: [ "webgis.view", "simulation.view", "simulation.run", "scada.clean", "risk.run", "optimization.run", "burst.run", "audit.view", "environment.manage", ], }); } if (url.pathname === "/api/v1/projects/current") { return json(route, { project_id: "playwright-project", code: "tjwater_e2e", gs_workspace: "tjwater_e2e", map_extent: { bbox: [13508801.93, 3608163.35, 13555650.64, 3633685.14], }, }); } if (url.pathname === "/api/v1/audit-logs/count") { return json(route, { count: 0 }); } if ( url.pathname === "/api/v1/audit-logs" || url.pathname === "/api/v1/admin/users" || url.pathname === "/api/v1/admin/projects" ) { return json(route, []); } return json(route, {}); }); };