Auto-refuel on dispatch; remove manual refueling UI/API/action (ISS-082, v0.42.0)
CI / build + unit + e2e (pull_request) Successful in 17m25s
CI / build + unit + e2e (pull_request) Successful in 17m25s
This commit is contained in:
+13
-8
@@ -69,6 +69,14 @@ async function setHealth(
|
||||
return (await res.json()) as StateBody;
|
||||
}
|
||||
|
||||
// Test hook (FLIGHT_TEST_HOOKS=1): top a plane's tank back to full — replaces the removed /refuel
|
||||
// endpoint (ISS-082). Reads maxFuel from the snapshot so no catalog mirror is needed.
|
||||
async function setFuelFull(page: Page, planeId: string): Promise<void> {
|
||||
const s = await getState(page);
|
||||
const p = s.planes.find((x) => x.id === planeId)!;
|
||||
expect((await page.request.post('/api/test/set-fuel', { data: { planeId, fuel: p.maxFuel } })).status()).toBe(200);
|
||||
}
|
||||
|
||||
// Mirrors haversineKm in lib/geo.ts (same formula → identical floats).
|
||||
function haversineKm(lat1: number, lon1: number, lat2: number, lon2: number): number {
|
||||
const toRad = (d: number) => (d * Math.PI) / 180;
|
||||
@@ -132,12 +140,9 @@ async function healStarterHome(page: Page): Promise<void> {
|
||||
if (starter.locationIcao !== HUB) {
|
||||
// ISS-041: the landing above slowed the sim to 1× — setScale restores it for the return leg.
|
||||
await setScale(page, SCALE);
|
||||
let flyHome = await page.request.post(`/api/planes/${STARTER}/fly`, { data: { destIcao: HUB } });
|
||||
if (!flyHome.ok()) {
|
||||
// A long outbound leg can leave the tank too empty for the return — top up and retry.
|
||||
expect((await page.request.post(`/api/planes/${STARTER}/refuel`)).status()).toBe(200);
|
||||
flyHome = await page.request.post(`/api/planes/${STARTER}/fly`, { data: { destIcao: HUB } });
|
||||
}
|
||||
// ISS-082: dispatch auto-refuels, so a grounded plane can always start any full-tank-flyable
|
||||
// leg when cash allows — no top-up retry needed.
|
||||
const flyHome = await page.request.post(`/api/planes/${STARTER}/fly`, { data: { destIcao: HUB } });
|
||||
expect(flyHome.status()).toBe(200); // repositioning needs no package (v0.12.0 manual flight)
|
||||
await expect
|
||||
.poll(async () => ((await getState(page)).planes.find((p) => p.id === STARTER)?.locationIcao ?? ''), {
|
||||
@@ -189,8 +194,8 @@ test('health shown → broken burn ×1.5 → repair grounds for 3 sim days → b
|
||||
await expect(page.getByTestId(`plane-broken-${STARTER}`), 'the broken pill appears')
|
||||
.toHaveText('broken', { timeout: 15_000 });
|
||||
|
||||
// Full tank for the flight (free no-op if already full)…
|
||||
expect((await page.request.post(`/api/planes/${STARTER}/refuel`)).status()).toBe(200);
|
||||
// Full tank for the flight (ISS-082 hook — dispatch would only top up to 150% of the leg, not full)…
|
||||
await setFuelFull(page, STARTER);
|
||||
s = await getState(page);
|
||||
const starter = s.planes.find((p) => p.id === STARTER)!;
|
||||
expect(starter.fuel).toBe(starter.maxFuel);
|
||||
|
||||
Reference in New Issue
Block a user