58 lines
2.0 KiB
TypeScript
58 lines
2.0 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import { mockWorkbenchContext } from "./support/mock-workbench-context";
|
|
|
|
test("uses backend project identity, role and map extent with the existing fallback available", async ({
|
|
page
|
|
}) => {
|
|
await mockWorkbenchContext(page, undefined, {
|
|
metadata: {
|
|
project_id: "project-1",
|
|
name: "北区供水项目",
|
|
code: "north-supply",
|
|
gs_workspace: "tjwater_next",
|
|
map_extent: {
|
|
bbox: [13358338.895, 3503549.844, 13369470.85, 3516410.23],
|
|
zoom: 13
|
|
},
|
|
status: "active",
|
|
project_role: "member"
|
|
},
|
|
accessContext: {
|
|
user_id: "user-1",
|
|
username: "north.operator",
|
|
system_role: "user",
|
|
is_system_admin: false,
|
|
project_id: "project-1",
|
|
project_role: "member",
|
|
permissions: ["webgis.view"]
|
|
}
|
|
});
|
|
await page.goto("/", { waitUntil: "domcontentloaded" });
|
|
|
|
const userMenu = page.getByRole("button", { name: "打开用户菜单" });
|
|
await expect(userMenu).toContainText("north.operator");
|
|
await userMenu.click();
|
|
await expect(page.getByText("北区供水项目 · 项目成员", { exact: true })).toBeVisible();
|
|
await page.keyboard.press("Escape");
|
|
|
|
await expect.poll(async () => isProjectCenter(await readMapCenter(page))).toBe(true);
|
|
|
|
await page.evaluate(() => window.__waterNetworkMap?.jumpTo({ center: [121.5, 31] }));
|
|
await page.getByRole("button", { name: "缩放到全局" }).click();
|
|
await expect.poll(async () => isProjectCenter(await readMapCenter(page))).toBe(true);
|
|
});
|
|
|
|
async function readMapCenter(page: import("@playwright/test").Page) {
|
|
return page.evaluate(() => {
|
|
const center = window.__waterNetworkMap?.getCenter();
|
|
return center
|
|
? { longitude: center.lng, latitude: center.lat }
|
|
: { longitude: Number.NaN, latitude: Number.NaN };
|
|
});
|
|
}
|
|
|
|
function isProjectCenter(center: { longitude: number; latitude: number }) {
|
|
return Math.abs(center.longitude - 120.05) < 0.15
|
|
&& Math.abs(center.latitude - 30.05) < 0.15;
|
|
}
|