12-02. Сквозной тест свободного полёта на всех локациях
Цель: «меню → Лететь → разбег W+Shift → полёт → посадка → итог» проходит на altai, askarovo, aushkul, ongudai.
Контекст: tests/game/test_game_flight.gd (образец: Game.tick, ErrorCatcher, защёлка), scripts/game/autopilot.gd,
scenes/main.gd, scripts/ui/start_menu.gd, scripts/ui/result_screen.gd, configs/locations/*.json.
Владения: новые tests/game/test_e2e.gd, tools/shots/e2e.sh, docs/screenshots/e2e/; scripts/game/autopilot.gd.
Ошибки в чужих файлах не чинить — отчёт (файл, шаг, лог) в docs/screenshots/e2e/README.md для владельца.
Шаги:
- Список локаций — из
configs/locations/(не хардкод). Для каждой:main.tscn, вFlightSetupScreenвыбрать локацию и первый старт, «Лететь» (эмит кнопки), ждать загрузку. - Autopilot держит W+Shift: на земле фаза разбега, отрыв, затем клавиши не дают тангажа до отпускания (защёлка).
- Полёт 60 с по курсу от склона, затем снижение до посадки на ровном (у выбранной точки посадки локации, если есть).
- Ждать
ResultScreen.visible; проверить строкиlines_for: время > 0, дистанция > 0, скорость касания. tools/shots/e2e.sh: на локацию 2 кадра — полёт (cockpit, взгляд вперёд) и экран итога. КРИТЕРИЙ ПРИЁМКИ:test_e2e.gd— 4 прогона, в каждом: отрыв ≤ 15 с игрового времени, посадка, экран итога с временем и дистанцией > 0, 0 ошибок/предупреждений в ErrorCatcher; все 4 ≤ 3 мин headless. 8 скриншотов с чек-листом в README (горизонт и земля видны, нет чёрного неба/дыр рельефа, итог читаем).tools/check.shзелёный. Найденные чужие дефекты — списком с владельцем. Зависимости: нет (волна 1; после 12-01 — повторить прогон). Модель: sonnet. Размер: M.