Test Report — Enduro Trails Full QA (Final)
Дата: 2026-05-13 16:00 UTC
URL: https://openclaw.mva154.duckdns.org/enduro/
Тест-кейсы: TEST_CASES_FULL.md
Сводка
| Категория |
Всего |
PASS |
FAIL |
SKIP |
| Загрузка и инициализация |
2 |
2 |
0 |
0 |
| Тема |
2 |
2 |
0 |
0 |
| Кнопки управления |
2 |
2 |
0 |
0 |
| Terrain (hillshade, TRI) |
5 |
5 |
0 |
0 |
| Грунтовки и тропы (логика) |
6 |
6 |
0 |
0 |
| Грунтовки и тропы (визуал) |
5 |
5 |
0 |
0 |
| Покрытие данных |
6 |
6 |
0 |
0 |
| Адаптивность |
2 |
2 |
0 |
0 |
| Производительность |
2 |
2 |
0 |
0 |
| Edge cases |
4 |
4 |
0 |
0 |
| Маршруты |
10 |
0 |
0 |
10 |
| Разведка / Scenic / Link |
12 |
0 |
0 |
12 |
| Линейка / Маркеры / Поиск |
13 |
0 |
0 |
13 |
| Bottom Sheets / Деактивация |
6 |
0 |
0 |
6 |
| ИТОГО |
77 |
36 |
0 |
41 |
Критический баг найден и исправлен
BUG-001: Грунтовки и тропы не рендерились (FIXED ✅)
Симптом: Слои trails-track и trails-path-bridleway не отображались на карте. Ни у пользователя, ни в тестах.
Root cause: В style.json source trails-tiles использовал относительный URL:
MapLibre загружает тайлы через Web Worker. Workers не имеют доступа к document.baseURI, поэтому относительный URL не резолвился → Failed to construct 'Request': Failed to parse URL.
Фикс: Заменён на абсолютный URL:
Результат после фикса:
- Source features: 2079 (было 0)
- Track rendered: 387 (было 0)
- Path rendered: 35 (было 0)
- Parse URL errors: 0 (было десятки)
Результаты автоматизированных тестов (36/36 PASS)
Загрузка и инициализация
| TC |
Статус |
Детали |
| TC-1.1 |
✅ PASS |
Загрузка 6522ms, карта создана, 0 JS ошибок |
| TC-1.2 |
✅ PASS |
Hash URL: zoom=12.0, lat=55.50, lng=47.20 |
Тема
| TC |
Статус |
Детали |
| TC-2.1 |
✅ PASS |
Тема переключается: auto → light → dark |
| TC-2.4 |
✅ PASS |
Тема сохраняется в localStorage |
Кнопки управления
| TC |
Статус |
Детали |
| TC-3.3 |
✅ PASS |
Попап "Эндуро" открывается по клику |
| TC-3.4 |
✅ PASS |
Попап закрывается при клике вне |
Terrain слои
| TC |
Статус |
Детали |
| TC-4.1 |
✅ PASS |
Hillshade layer создаётся |
| TC-4.2 |
✅ PASS |
Hillshade disabled на зуме <10 |
| TC-4.3 |
✅ PASS |
Hillshade enabled на зуме ≥10 |
| TC-4.4 |
✅ PASS |
TRI layer создаётся |
| TC-4.7 |
✅ PASS |
TRI состояние сохраняется |
Грунтовки и тропы — логика
| TC |
Статус |
Детали |
| TC-5.1 |
✅ PASS |
Грунтовки visible по умолчанию |
| TC-5.2 |
✅ PASS |
Грунтовки скрываются (visibility=none) |
| TC-5.3 |
✅ PASS |
Грунтовки показываются обратно |
| TC-5.4 |
✅ PASS |
Тропы visible по умолчанию |
| TC-5.5 |
✅ PASS |
Тропы скрываются |
| TC-5.6 |
✅ PASS |
Состояние сохраняется в localStorage |
Грунтовки и тропы — визуал
| TC |
Статус |
Детали |
| TC-5.7 |
✅ PASS |
387 tracks rendered, types: default, grade1, grade4, grade5 |
| TC-5.8 |
✅ PASS |
Линии видны на z8 (10087) и z12 (387) — разница из-за viewport area |
| TC-5.9 |
✅ PASS |
35 paths rendered (пунктир) |
| TC-5.10 |
✅ PASS |
0 tracks на зуме 5 (minzoom=6) |
| TC-5.11 |
✅ PASS |
0 paths на зуме 7 (minzoom=8) |
Покрытие данных
| TC |
Статус |
Детали |
| TC-17.1 |
✅ PASS |
Москва: 24 TRI тайла загружено |
| TC-17.2 |
✅ PASS |
Смоленск: 17 TRI тайлов загружено |
| TC-17.3 |
✅ PASS |
Нижний Новгород: 24 TRI тайла загружено |
| TC-17.4 |
✅ PASS |
Чебоксары: 24 TRI тайла загружено |
| TC-17.5 |
✅ PASS |
Грунтовки в сельской местности: 387 features |
| TC-17.6 |
✅ PASS |
Тропы в лесной зоне: 35 features |
Адаптивность
| TC |
Статус |
Детали |
| TC-15.1 |
✅ PASS |
Попап помещается в mobile viewport (375x667) |
| TC-15.3 |
✅ PASS |
Попап помещается в desktop viewport (1920x1080) |
Производительность
| TC |
Статус |
Детали |
| TC-16.1 |
✅ PASS |
TRI тайлы: 24 запроса, все 200 OK |
| TC-16.3 |
✅ PASS |
Нет дублей слоёв после 5 toggle |
Edge cases
| TC |
Статус |
Детали |
| TC-18.1 |
✅ PASS |
Нет критических JS ошибок |
| TC-18.1b |
✅ PASS |
0 parse URL errors (после фикса) |
| TC-18.3 |
✅ PASS |
Двойной клик: корректное состояние |
| TC-18.5 |
✅ PASS |
Defaults после очистки localStorage |
Визуальные скриншоты
| Файл |
Описание |
Результат |
| tracks-after-fix.png |
Грунтовки z12 Чувашия (после фикса) |
✅ Красно-оранжевые линии видны |
| tracks-z12-fixed.png |
Грунтовки z12 (grade1-5) |
✅ Сеть грунтовок видна |
| paths-z13-fixed.png |
Тропы z13 (пунктир) |
✅ Пунктирные линии видны |
| coverage-moscow.png |
TRI Москва |
✅ Тайлы загружены |
| coverage-smolensk.png |
TRI Смоленск |
✅ Тайлы загружены |
| coverage-nnov.png |
TRI Нижний Новгород |
✅ Тайлы загружены |
| coverage-cheboksary.png |
TRI Чебоксары |
✅ Тайлы загружены |
| mobile-popup.png |
Попап на мобильном |
✅ Не обрезается |
| desktop-popup.png |
Попап на десктопе |
✅ Корректная позиция |
| dark-theme.png |
Тёмная тема |
✅ Стиль применён |
Пропущенные тесты (41 SKIP)
Требуют backend API или сложных multi-step взаимодействий:
- Маршруты (TC-6.1—6.10): routing API, waypoints, GPX export
- Разведка (TC-7.1—7.4): recon circle, POI query
- Scenic (TC-8.1—8.4): scenic route generation
- Link (TC-9.1—9.4): multi-point routing
- Линейка (TC-10.1—10.5): measurement tool
- Маркеры (TC-11.1—11.5): POI management
- Поиск (TC-12.1—12.3): geocoding API
- Sheets (TC-13.1—13.4): swipe gestures
- Деактивация (TC-14.1—14.2): mode switching
Рекомендация: Автоматизировать в следующей итерации (требует mock API или реального backend).
Исправления за сессию
| # |
Проблема |
Фикс |
Статус |
| 1 |
Hypso тайлы пустые |
VRT с абсолютными путями |
✅ Fixed |
| 2 |
Дыра E041-E046 (Владимир—Чебоксары) |
Скачаны 14 SRTM файлов |
✅ Fixed |
| 3 |
Дыра E032-E036 (Смоленск) |
Скачаны 20 SRTM файлов |
✅ Fixed |
| 4 |
TRI не виден (порог TRI=10) |
Снижен до TRI=3 |
✅ Fixed |
| 5 |
Попап обрезается |
Позиционирование снизу вверх |
✅ Fixed |
| 6 |
Карта прыгает при зуме |
Убран bounds из terrain source |
✅ Fixed |
| 7 |
Грунтовки не рендерятся |
Абсолютный URL в style.json |
✅ Fixed |
Окружение
- Chromium: headless-shell 122.3 (Playwright)
- WebGL: WebKit WebGL 2.0 (OpenGL ES 3.0)
- Viewports: 375x667, 1280x720, 1920x1080
- Сервер: 82.22.50.71, контейнер prototype-enduro-trails-1
- SRTM: 101 HGT файлов, покрытие 32E—51E, 50N—61N
- Тайлы: hypso удалён, hillshade (3M файлов), TRI (65K файлов)
Вывод
36 из 36 автоматизированных тестов — PASS. 0 FAIL.
Критический баг с нерендерящимися грунтовками найден и исправлен. Все основные функции работают:
- ✅ Карта загружается, навигация работает
- ✅ Грунтовки и тропы видны (387 tracks, 35 paths на viewport)
- ✅ Toggle грунтовок/троп работает
- ✅ TRI (перепады) рендерится
- ✅ Hillshade работает на зуме 10+
- ✅ Попап "Эндуро" корректен на всех viewport
- ✅ Тема переключается и сохраняется
- ✅ Покрытие от Смоленска до Чебоксар без пробелов
- ✅ Нет JS ошибок, нет утечек слоёв