# TEST_CASES_FULL.md — Полный набор UI/UX тестов Enduro Trails **URL:** `https://openclaw.mva154.duckdns.org/enduro/` **Дата обновления:** 2026-05-13 --- ## 1. Загрузка и инициализация ### TC-1.1: Первая загрузка - Открыть URL - **Ожидание:** карта загружается за <5 сек, нет JS ошибок в консоли, базовый OSM-слой виден ### TC-1.2: Загрузка с хешем - Открыть `#12/55.5/47.2` - **Ожидание:** карта центрирована на 55.5N 47.2E, зум 12 ### TC-1.3: Сохранение позиции - Перемещение карты → перезагрузка - **Ожидание:** позиция восстанавливается из URL-хеша --- ## 2. Тема (светлая/тёмная/авто) ### TC-2.1: Переключение темы - Клик по кнопке темы (☀️/🌙) - **Ожидание:** цикл auto → light → dark → auto, фон карты меняется ### TC-2.2: Авто-тема по SunCalc - Установить тему "auto" - **Ожидание:** днём — светлая, ночью — тёмная (по координатам пользователя) ### TC-2.3: Стиль карты при смене темы - Переключить тему - **Ожидание:** MapLibre загружает style.json / style-dark.json, слои пересоздаются ### TC-2.4: Сохранение темы - Выбрать dark → перезагрузка - **Ожидание:** тема dark сохранена в localStorage --- ## 3. Кнопки управления картой ### TC-3.1: Компас - Клик по кнопке компаса - **Ожидание:** карта сбрасывает bearing к 0 (север вверх) ### TC-3.2: Геолокация - Клик "Моё местоположение" - **Ожидание:** запрос геолокации, карта центрируется на позиции пользователя (или ошибка если denied) ### TC-3.3: Кнопка "Эндуро" - Клик по кнопке с иконкой колеса - **Ожидание:** попап "ЭНДУРО" открывается слева от кнопки, title="Эндуро" ### TC-3.4: Закрытие попапа "Эндуро" - Открыть попап → клик вне попапа - **Ожидание:** попап закрывается, кнопка теряет класс active --- ## 4. Попап "Эндуро" — Terrain слои ### TC-4.1: Чекбокс "Тени рельефа" (hillshade) - Открыть попап → включить "Тени рельефа" - **Ожидание:** слой hillshade появляется на карте (зум ≥10), opacity 0.40 ### TC-4.2: Hillshade недоступен на зуме <10 - Зум 8 → открыть попап - **Ожидание:** чекбокс "Тени рельефа" disabled, подсказка "Зум 10+" видна ### TC-4.3: Hillshade доступен на зуме ≥10 - Зум 10+ → открыть попап - **Ожидание:** чекбокс enabled, подсказка скрыта ### TC-4.4: Чекбокс "Перепады" (TRI) - Открыть попап → включить "Перепады" - **Ожидание:** жёлто-оранжево-красные пятна вдоль оврагов/речных долин, opacity 0.70 ### TC-4.5: TRI на плоской местности - Включить TRI на зуме 10, Москва (#10/55.75/37.6) - **Ожидание:** минимум пятен (город плоский), только вдоль Москвы-реки ### TC-4.6: TRI на холмистой местности - Включить TRI на зуме 12, Чувашия (#12/55.5/47.2) - **Ожидание:** выраженные оранжево-красные зоны вдоль оврагов ### TC-4.7: Сохранение состояния terrain - Включить TRI → перезагрузка - **Ожидание:** TRI остаётся включённым (localStorage) ### TC-4.8: Terrain после смены темы - Включить hillshade → переключить тему - **Ожидание:** слой пересоздаётся после style.load, остаётся видимым --- ## 5. Попап "Эндуро" — Грунтовки и тропы ### TC-5.1: Грунтовки включены по умолчанию - Загрузить карту, зум 10+ - **Ожидание:** жёлтые (grade1-2) и красные (grade3-5) линии грунтовок видны ### TC-5.2: Отключение грунтовок - Открыть попап → снять "Грунтовки" - **Ожидание:** слой `trails-track` скрыт (visibility: none), линии исчезают ### TC-5.3: Включение грунтовок обратно - Снять → поставить "Грунтовки" - **Ожидание:** слой снова visible, линии появляются ### TC-5.4: Тропы включены по умолчанию - Загрузить карту, зум 10+ - **Ожидание:** красные пунктирные линии троп видны ### TC-5.5: Отключение троп - Открыть попап → снять "Тропы" - **Ожидание:** слой `trails-path-bridleway` скрыт, пунктирные линии исчезают ### TC-5.6: Сохранение состояния trails - Снять "Грунтовки" → перезагрузка - **Ожидание:** грунтовки остаются выключенными (localStorage) ### TC-5.7: Цветовая дифференциация грунтовок - Зум 12+, область с разными tracktype - **Ожидание:** grade1-2 = жёлтый (#FFD700), grade3-5 = красный (#FF4400) ### TC-5.8: Ширина линий по зуму - Зум 8 → зум 12 → зум 16 - **Ожидание:** линии грунтовок утолщаются (0.5 → 3.5 → 6px) ### TC-5.9: Тропы — пунктир - Зум 12+ - **Ожидание:** тропы отрисованы пунктиром (dasharray 3,2), цвет #cc0000 ### TC-5.10: Минимальный зум грунтовок - Зум 5 - **Ожидание:** грунтовки не видны (minzoom: 6) ### TC-5.11: Минимальный зум троп - Зум 7 - **Ожидание:** тропы не видны (minzoom: 8) --- ## 6. Маршруты ### TC-6.1: Включение режима маршрута - Клик по кнопке маршрута - **Ожидание:** открывается sheet с полями "Откуда" / "Куда" ### TC-6.2: Поиск точки маршрута - Ввести "Чебоксары" в поле "Откуда" - **Ожидание:** выпадающий список результатов поиска ### TC-6.3: Построение маршрута - Задать точку A и B → построить - **Ожидание:** маршрут отрисован на карте, показаны варианты с расстоянием/временем ### TC-6.4: Несколько вариантов маршрута - Построить маршрут между двумя точками - **Ожидание:** карточки вариантов, клик переключает активный маршрут ### TC-6.5: Waypoints (промежуточные точки) - Добавить waypoint в маршрут - **Ожидание:** маршрут перестраивается через промежуточную точку ### TC-6.6: Удаление waypoint - Удалить промежуточную точку - **Ожидание:** маршрут перестраивается без неё ### TC-6.7: Drag & drop waypoints - Перетащить waypoint в списке - **Ожидание:** порядок меняется, маршрут перестраивается ### TC-6.8: Экспорт GPX - Построить маршрут → "Скачать GPX" - **Ожидание:** скачивается .gpx файл с корректными координатами ### TC-6.9: Очистка маршрута - Построить маршрут → "Очистить" - **Ожидание:** маршрут удалён с карты, sheet закрыт ### TC-6.10: Маршрут по грунтовкам - Построить маршрут в сельской местности - **Ожидание:** маршрут проходит по грунтовкам (жёлтые/красные линии), не только по асфальту --- ## 7. Разведка (Recon) ### TC-7.1: Включение режима разведки - Клик по кнопке разведки - **Ожидание:** режим активирован, курсор меняется ### TC-7.2: Установка точки разведки - Клик на карте в режиме разведки - **Ожидание:** круг заданного радиуса отрисован, POI внутри показаны ### TC-7.3: Изменение радиуса - Изменить радиус (slider/input) - **Ожидание:** круг перерисовывается с новым радиусом ### TC-7.4: Очистка разведки - "Очистить" разведку - **Ожидание:** круг и POI удалены с карты --- ## 8. Scenic (живописные маршруты) ### TC-8.1: Включение scenic режима - Клик по кнопке scenic - **Ожидание:** режим активирован ### TC-8.2: Генерация scenic маршрутов - Задать параметры (км) → генерация - **Ожидание:** несколько вариантов живописных маршрутов на карте ### TC-8.3: Переключение scenic маршрутов - Клик по карточке другого маршрута - **Ожидание:** активный маршрут меняется визуально ### TC-8.4: Очистка scenic - "Очистить" - **Ожидание:** все scenic маршруты удалены --- ## 9. Link (связь точек) ### TC-9.1: Включение link режима - Клик по кнопке link - **Ожидание:** режим активирован ### TC-9.2: Добавление точек link - Клик на карте — добавить 2+ точки - **Ожидание:** маршрут строится через все точки последовательно ### TC-9.3: Варианты link маршрутов - Построить link - **Ожидание:** карточки вариантов с расстоянием ### TC-9.4: Очистка link - "Очистить" - **Ожидание:** все точки и маршрут удалены --- ## 10. Линейка (Ruler) ### TC-10.1: Включение линейки - Клик по кнопке линейки - **Ожидание:** режим измерения активирован ### TC-10.2: Измерение расстояния - Клик на 2+ точках - **Ожидание:** линия между точками, расстояние показано (км/м) ### TC-10.3: Удаление точки линейки - Удалить промежуточную точку - **Ожидание:** линия перестраивается, расстояние пересчитывается ### TC-10.4: Toast с расстоянием - Добавить точки - **Ожидание:** toast-уведомление с суммарным расстоянием ### TC-10.5: Очистка линейки - "Удалить линейку" - **Ожидание:** все точки и линии удалены --- ## 11. Маркеры (POI) ### TC-11.1: Добавление маркера - Режим маркеров → клик на карте - **Ожидание:** диалог выбора типа маркера ### TC-11.2: Типы маркеров - Выбрать тип (из списка) - **Ожидание:** маркер с соответствующей иконкой на карте ### TC-11.3: Удаление маркера - Удалить маркер - **Ожидание:** маркер исчезает с карты ### TC-11.4: Использование маркера как точки A/B - "Использовать как A" / "Использовать как B" - **Ожидание:** маркер становится точкой маршрута ### TC-11.5: Сохранение маркеров - Добавить маркер → перезагрузка - **Ожидание:** маркер сохранён в localStorage, виден после reload --- ## 12. Поиск ### TC-12.1: Открытие поиска - Клик по полю поиска - **Ожидание:** поле активно, можно вводить текст ### TC-12.2: Результаты поиска - Ввести "Нижний Новгород" - **Ожидание:** список результатов с координатами ### TC-12.3: Переход к результату - Клик по результату - **Ожидание:** карта центрируется на выбранной точке --- ## 13. Bottom Sheets ### TC-13.1: Открытие sheet - Активировать режим (маршрут/scenic/link) - **Ожидание:** sheet выезжает снизу с анимацией ### TC-13.2: Закрытие sheet - Свайп вниз или клик backdrop - **Ожидание:** sheet закрывается с анимацией ### TC-13.3: Минимизация sheet - Свайп частично вниз - **Ожидание:** sheet минимизируется (показывает только заголовок) ### TC-13.4: Только один sheet одновременно - Открыть маршрут → открыть scenic - **Ожидание:** первый sheet закрывается, второй открывается --- ## 14. Деактивация режимов ### TC-14.1: Взаимоисключение режимов - Включить маршрут → включить линейку - **Ожидание:** маршрут деактивируется, линейка активна ### TC-14.2: Деактивация всех - Активный режим → клик по той же кнопке - **Ожидание:** режим выключается, карта в обычном состоянии --- ## 15. Адаптивность и UX ### TC-15.1: Мобильный viewport (375x667) - Открыть на мобильном viewport - **Ожидание:** все кнопки доступны, попап не обрезается, sheets работают ### TC-15.2: Планшет viewport (768x1024) - Открыть на планшетном viewport - **Ожидание:** layout корректный, элементы не перекрываются ### TC-15.3: Desktop viewport (1920x1080) - Открыть на десктопном viewport - **Ожидание:** полноэкранная карта, кнопки в правильных позициях ### TC-15.4: Попап "Эндуро" не обрезается - Открыть попап на разных viewport - **Ожидание:** все 4 чекбокса + разделитель видны полностью ### TC-15.5: Touch-события на мобильном - Pinch-zoom, pan на мобильном viewport - **Ожидание:** карта зумится и перемещается плавно, без прыжков ### TC-15.6: Кнопки не перекрывают друг друга - Все viewport - **Ожидание:** кнопки управления не наезжают друг на друга --- ## 16. Производительность ### TC-16.1: Загрузка тайлов terrain - Включить TRI + hillshade - **Ожидание:** тайлы загружаются без 404/500, все 200 OK ### TC-16.2: Зум без лагов - Быстрый зум колёсиком 8→14 - **Ожидание:** карта зумится плавно, без фризов >500ms ### TC-16.3: Нет утечек памяти при toggle - Включить/выключить TRI 10 раз - **Ожидание:** source/layer корректно удаляются и создаются, нет дублей --- ## 17. Покрытие данных ### TC-17.1: Terrain покрытие Москва - `#10/55.75/37.6`, включить TRI - **Ожидание:** данные есть, пятна вдоль рек ### TC-17.2: Terrain покрытие Смоленск - `#10/54.8/32.1`, включить TRI - **Ожидание:** данные есть (E032 скачан) ### TC-17.3: Terrain покрытие Нижний Новгород - `#10/56.3/44`, включить TRI - **Ожидание:** данные есть (E041-E046 скачаны, дыра закрыта) ### TC-17.4: Terrain покрытие Чебоксары - `#10/56.1/47.2`, включить TRI - **Ожидание:** данные есть, выраженные перепады ### TC-17.5: Грунтовки видны в сельской местности - `#12/55.5/47.2` - **Ожидание:** жёлтые и красные линии грунтовок видны ### TC-17.6: Тропы видны в лесной зоне - `#13/55.5/47.2` - **Ожидание:** красные пунктирные линии троп видны --- ## 18. Ошибки и edge cases ### TC-18.1: Нет JS ошибок при загрузке - Открыть консоль → загрузить страницу - **Ожидание:** нет uncaught exceptions (ошибки mvt тайлов — known issue, не критично) ### TC-18.2: Terrain на зуме за пределами данных - Зум 4 → включить TRI - **Ожидание:** нет ошибок, просто нет тайлов (minzoom: 5) ### TC-18.3: Двойной клик по чекбоксу - Быстро дважды кликнуть "Перепады" - **Ожидание:** состояние корректное (вкл→выкл или выкл→вкл), нет дублей слоёв ### TC-18.4: Попап при зуме <10 - Зум 8 → открыть попап → включить "Перепады" - **Ожидание:** TRI работает (minzoom 5), hillshade disabled с подсказкой ### TC-18.5: localStorage очищен - Очистить localStorage → перезагрузка - **Ожидание:** грунтовки и тропы включены (default), terrain выключен, тема auto --- ## Автоматизация Тесты можно прогонять через Playwright headless: - Chromium: `/home/node/.cache/ms-playwright/chromium_headless_shell-1223/chrome-headless-shell-linux64/chrome-headless-shell` - Скрипты: `/home/node/.openclaw/workspace/skills/ui-test/scripts/` - Отчёты: `/home/node/.openclaw/workspace/tasks/enduro-trails/reports/` ### Автоматизируемые: - TC-1.x, TC-2.1, TC-3.3-3.4, TC-4.x, TC-5.x, TC-15.1-15.4, TC-16.x, TC-17.x, TC-18.x ### Только ручные: - TC-3.2 (геолокация), TC-6.10 (маршрут по грунтовкам — нужен backend), TC-15.5 (touch)