Fix e2e specs for fixed world clock: idle-pause expiry window, scale-1 motion settle, self-heal (ISS-117)
CI / build + unit + e2e (pull_request) Successful in 12m44s
CI / build + unit + e2e (pull_request) Successful in 12m44s
This commit is contained in:
@@ -258,15 +258,21 @@ test('plane markers move while flying and the plane popup shows status + route',
|
||||
// view) the per-second drift is sub-pixel, so the position is static for all practical purposes;
|
||||
// we restore SCALE right after the popup checks.
|
||||
await setScale(page, 1);
|
||||
// At scale 1 a flying plane still advances every tick (the ATR72 cruises ~0.14 km/s of real time),
|
||||
// so exact lat/lon equality between polls can never hold — "settled" means slow enough to click:
|
||||
// two consecutive snapshots within EPS of each other. Per-tick advance is clamped to
|
||||
// MAX_TICK_ELAPSED_MS (2 s) × scale, so at scale 1 the worst-case per-poll drift is ~0.5 km even
|
||||
// for the fastest catalog plane; 5 km sits far above that and far below what a still-fast clock
|
||||
// would show (~km per poll pair).
|
||||
let prevPos: { lat: number; lon: number } | null = null;
|
||||
await expect
|
||||
.poll(async () => {
|
||||
const p = (await getState(page)).planes.find((x) => x.id === 'plane-starter');
|
||||
if (!p || p.status !== 'flying') return false;
|
||||
if (prevPos && prevPos.lat === p.lat && prevPos.lon === p.lon) return true;
|
||||
if (prevPos && haversineKm(prevPos.lat, prevPos.lon, p.lat, p.lon) < 5) return true;
|
||||
prevPos = { lat: p.lat, lon: p.lon };
|
||||
return false;
|
||||
}, { timeout: 15_000, message: 'waiting for the scale-1 clock to settle the plane position' })
|
||||
}, { timeout: 15_000, message: 'waiting for the scale-1 clock to slow the plane to click-safe drift' })
|
||||
.toBe(true);
|
||||
|
||||
// Click the RENDERED marker position, not a fresh /api/state fetch. With the clock at scale 1
|
||||
|
||||
Reference in New Issue
Block a user