20 KiB
20 KiB
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)