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

20 KiB
Raw Blame History

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 маршруты удалены

  • Клик по кнопке link
  • Ожидание: режим активирован
  • Клик на карте — добавить 2+ точки
  • Ожидание: маршрут строится через все точки последовательно
  • Построить 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)