Files
wiki/tasks/enduro-trails/TEST_CASES_FULL.md
2026-05-13 18:40:02 +03:00

456 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)