CI / build + unit + e2e (pull_request) Failing after 7m29s
Every leg gains a 10-min takeoff phase at the origin and a 10-min landing phase at the destination, each weather-scaled up to 2x via a monotone condition rule (Clear < Cloudy < Rain < Fog). Single composition in lib/sim/movement.ts: BASE_PHASE_MS, phaseFactor, MAX_PHASE_FACTOR, legPhases; arrivalTimeFor and progressAt route through it (progress is now piecewise — hold at origin / linear cruise / hold at destination), so engine arrival gate, client position/fuel recompute and the job expiry floor all agree. Phases burn no fuel. Marker shows the current phase next to the status in the popup (mapData derives it from departureSimTime + clockMs; new data-testid=plane-phase sibling). plane-status keeps the raw status. Tests: movement.test.ts (phaseFactor bounds/monotonicity, origin-vs-dest composition, piecewise progressAt), engine.test.ts (deleted local travelMs mirror — all ~18 fixture clocks use the real composition), seed.test.ts (phase-inclusive expiry floor mirrors). New e2e/phases.spec.ts asserts 'taking off' at the origin gate and 'landing' at the destination gate on EDDF→LEMD using the same legPhases boundaries as the engine.
31 lines
729 B
JSON
31 lines
729 B
JSON
{
|
|
"name": "flight-ops",
|
|
"version": "1.12.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev -p 3000",
|
|
"build": "next build",
|
|
"start": "next start -p 3000",
|
|
"assets:download": "node scripts/download-map-assets.mjs",
|
|
"test": "vitest run",
|
|
"typecheck": "tsc --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"drizzle-orm": "^0.45.2",
|
|
"maplibre-gl": "^6.10.0",
|
|
"next": "^16.3.5",
|
|
"react": "^19.3.0",
|
|
"react-dom": "^19.3.0",
|
|
"sql.js": "^1.14.2"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "1.63.0",
|
|
"@types/node": "^22.20.3",
|
|
"@types/react": "^19.3.0",
|
|
"@types/react-dom": "^19.3.0",
|
|
"@types/sql.js": "^1.4.11",
|
|
"typescript": "^7.0.2",
|
|
"vitest": "^5.0.1"
|
|
}
|
|
}
|