v0.70.0: default map view — world at [0,0] zoom 2, minZoom 0
CI / build + unit + e2e (pull_request) Failing after 14m13s
CI / build + unit + e2e (pull_request) Failing after 14m13s
This commit is contained in:
@@ -121,7 +121,7 @@ async function loadAndFly(page: Page, fromIcao: string, toIcao: string): Promise
|
||||
}
|
||||
|
||||
// Features in LOADED tiles only — MapLibre loads GeoJSON per viewport tile, so the camera must be over
|
||||
// the area of interest first ([] until then). Same trap as run-176: Europe view + Pacific plane = [].
|
||||
// the area of interest first ([] until then). Same trap as run-176: default world view + Pacific plane = [].
|
||||
function sourceFeatures(page: Page, sourceId: string) {
|
||||
return page.evaluate((srcId: string) => {
|
||||
const m = (window as any).__flightMap;
|
||||
@@ -155,7 +155,23 @@ test('airport popup shows name, ICAO, local time and generated weather', async (
|
||||
{ timeout: 15_000 },
|
||||
).toBeGreaterThan(0);
|
||||
|
||||
// LFRS Nantes Atlantique — same isolated marker as e2e/map.spec.ts.
|
||||
// LFRS Nantes Atlantique — same isolated marker as e2e/map.spec.ts. The v0.70.0 default view
|
||||
// ([0,0] z2) shows both Africa + Europe with overlapping markers (nearest neighbour LFRB Brest is
|
||||
// only ~13–19 px away at z2), so frame LFRS at z5 first — its nearest marker is then ~104 px away.
|
||||
await page.evaluate(() => {
|
||||
(window as any).__flightMap.jumpTo({ center: [-1.61073, 47.153198], zoom: 5 });
|
||||
});
|
||||
// Wait until LFRS's marker is actually rendered at the new camera before clicking it.
|
||||
await expect.poll(async () =>
|
||||
page.evaluate(() => {
|
||||
const map = (window as any).__flightMap;
|
||||
const p = map.project([-1.61073, 47.153198]);
|
||||
return (map.queryRenderedFeatures([p.x, p.y], { layers: ['airports-circles'] }) as Array<{ properties?: Record<string, unknown> }>)
|
||||
.some((f) => f.properties?.icao === 'LFRS');
|
||||
}),
|
||||
{ timeout: 15_000 },
|
||||
).toBe(true);
|
||||
|
||||
const pt = await page.evaluate(() => {
|
||||
const map = (window as any).__flightMap;
|
||||
const p = map.project([-1.61073, 47.153198]); // LFRS Nantes Atlantique
|
||||
@@ -281,6 +297,11 @@ test('plane markers move while flying and the plane popup shows status + route',
|
||||
}, { timeout: 15_000, message: 'waiting for the scale-1 clock to slow the plane to click-safe drift' })
|
||||
.toBe(true);
|
||||
|
||||
// queryRenderedFeatures is viewport-scoped, and at the v0.70.0 default view ([0,0] z2) this pane
|
||||
// only shows latitudes ~±51° — EDDF (50°N) sits right at its edge, so frame both endpoints of the
|
||||
// leg to guarantee the plane marker is rendered wherever it is on it.
|
||||
await fitToAirports(page, [HUB, DEST]);
|
||||
|
||||
// Click the RENDERED marker position, not a fresh /api/state fetch. With the clock at scale 1
|
||||
// above the server's analytic position barely moves — but the map renders from its own ~1 s
|
||||
// poll, so right after the freeze confirmation the last rendered frame can still be up to
|
||||
@@ -500,8 +521,8 @@ test('plane marker stays continuous across the antimeridian (no 360° teleport)'
|
||||
await setScale(page, SCALE);
|
||||
console.log(`[antimeridian] AFTER dispatch: ${fmtPlane((await getState(page)).planes.find((x) => x.id === 'plane-starter')!)}`);
|
||||
|
||||
// querySourceFeatures only sees LOADED tiles — the default view is over Europe and this leg is in the
|
||||
// Pacific: fit the camera over both endpoints first or the plane feature never appears in queries.
|
||||
// querySourceFeatures only sees LOADED tiles — the v0.70.0 default view ([0,0] z2) doesn't cover this
|
||||
// Pacific leg: fit the camera over both endpoints first or the plane feature never appears in queries.
|
||||
await fitToAirports(page, [ORIGIN, CROSS_DEST]);
|
||||
|
||||
// Wait until SERVER state shows plane-starter flying on THIS specific leg (origin/dest pair match) AND
|
||||
|
||||
Reference in New Issue
Block a user