fix(ui): refine acrylic controls and timeline interactions
Restore full acrylic materials to stacked task cards and floating controls. Extend the map behind the navigation header while preserving document and control insets. Align timeline and scale readouts, refresh dense-marker hover content, and highlight model and approval menu options. Keep narrow timeline headers clear of their legend and actions. Update coupled geometry checks and retain city zoom-12 and menu regression coverage. Validation: scoped git diff --check and read-only UI geometry inspection. Test suites were not rerun at the user's request.
This commit is contained in:
@@ -65,6 +65,50 @@ async function waitForMapIdle(page: Page) {
|
||||
);
|
||||
}
|
||||
|
||||
test("city buildings render only from zoom 12 in 3D", async ({ page }) => {
|
||||
test.skip(
|
||||
process.env.TJWATER_CITY_SCENE_TEST !== "1",
|
||||
"Requires the generated local city-model scene"
|
||||
);
|
||||
test.setTimeout(60_000);
|
||||
await mockWorkbenchContext(page, undefined, undefined, {}, [], {
|
||||
tiandituToken: "city-scene-tianditu-token"
|
||||
});
|
||||
await page.route("https://t0.tianditu.gov.cn/**", (route) =>
|
||||
route.fulfill({ contentType: "image/png", body: EMPTY_RASTER_TILE })
|
||||
);
|
||||
await page.goto("/", { waitUntil: "domcontentloaded" });
|
||||
const toggle = page
|
||||
.getByRole("group", { name: "地图缩放", exact: true })
|
||||
.locator("button[aria-pressed]");
|
||||
await expect(toggle).toBeEnabled({ timeout: 15_000 });
|
||||
await toggle.click();
|
||||
await page.evaluate(() =>
|
||||
window.__waterNetworkMap!.jumpTo({ center: [121.464, 30.916], zoom: 12, pitch: 55, bearing: 0 })
|
||||
);
|
||||
const renderedBuildings = () => page.evaluate(() => {
|
||||
const map = window.__waterNetworkMap!;
|
||||
return map.getLayer("fengxian-city-buildings")
|
||||
? map.queryRenderedFeatures({ layers: ["fengxian-city-buildings"] }).length
|
||||
: 0;
|
||||
});
|
||||
|
||||
await expect.poll(renderedBuildings, { timeout: 30_000 }).toBeGreaterThan(0);
|
||||
await page.screenshot({ path: "test-results/city-model/zoom-12.png" });
|
||||
for (const zoom of [11.99, 11]) {
|
||||
await page.evaluate((value) => window.__waterNetworkMap!.jumpTo({ zoom: value }), zoom);
|
||||
await expect.poll(renderedBuildings).toBe(0);
|
||||
}
|
||||
await page.screenshot({ path: "test-results/city-model/zoom-11.png" });
|
||||
for (const zoom of [12, 15, 16]) {
|
||||
await page.evaluate((value) => window.__waterNetworkMap!.jumpTo({ zoom: value }), zoom);
|
||||
await expect.poll(renderedBuildings, { timeout: 15_000 }).toBeGreaterThan(0);
|
||||
}
|
||||
await toggle.click();
|
||||
await expect.poll(() => page.evaluate(() => window.__waterNetworkMap!.getPitch())).toBe(0);
|
||||
await expect.poll(renderedBuildings).toBe(0);
|
||||
});
|
||||
|
||||
// Uses generated local building data, while unrelated backend services are isolated.
|
||||
test("3D adds opaque buildings without enabling duplicate GIS layers", async ({ page }) => {
|
||||
test.skip(
|
||||
|
||||
Reference in New Issue
Block a user