auto-sync: 2026-05-13 18:40:01

This commit is contained in:
Stream
2026-05-13 18:40:02 +03:00
parent 7a7ca34609
commit d1de0012a9
10 changed files with 455 additions and 252 deletions

View File

@@ -1,19 +0,0 @@
### TC-T-09 — Гипсометрия Чувашия зум 10
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/#10/55.5/47.2
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/#10/55.5/47.2
2. wait: 5000
3. click: "#terrain-toggle"
4. wait: 500
5. click: "#terrain-hypso-cb"
6. wait: 5000
7. screenshot: "hypso-chuvashia-zoom10"
8. check-visual: "Гипсометрия включена на зуме 10, район Чувашии. Должен быть виден цветной overlay с градиентом высот — зелёные тона в низинах, более жёлтые/оливковые на возвышенностях."
**Визуальные критерии:**
- Цветной overlay виден
- Заметен градиент (разные оттенки для разных высот)
- Нет артефактов

View File

@@ -1,62 +0,0 @@
### TC-T-10 — Гипсометрия Чувашия зум 8
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/#8/55.5/47.2
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/#8/55.5/47.2
2. wait: 5000
3. click: "#terrain-toggle"
4. wait: 500
5. click: "#terrain-hypso-cb"
6. wait: 5000
7. screenshot: "hypso-chuvash-z8"
8. check-visual: "Гипсометрия на зуме 8, обзорный вид Чувашии"
**Визуальные критерии:**
- Цветной overlay виден
- Градиент высот заметен
---
### TC-T-11 — Гипсометрия Чувашия зум 12
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/#12/55.5/47.2
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/#12/55.5/47.2
2. wait: 5000
3. click: "#terrain-toggle"
4. wait: 500
5. click: "#terrain-hypso-cb"
6. wait: 5000
7. screenshot: "hypso-chuvash-z12"
8. check-visual: "Гипсометрия на зуме 12, детальный вид Чувашии"
**Визуальные критерии:**
- Цветной overlay виден
- Детальный градиент — овраги, долины рек
---
### TC-T-12 — Гипсометрия + Hillshade Чувашия зум 12
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/#12/55.5/47.2
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/#12/55.5/47.2
2. wait: 5000
3. click: "#terrain-toggle"
4. wait: 500
5. click: "#terrain-hypso-cb"
6. wait: 1000
7. click: "#terrain-hillshade-cb"
8. wait: 5000
9. screenshot: "hypso-hillshade-chuvash-z12"
10. check-visual: "Оба слоя: цвет высот + тени рельефа на зуме 12"
**Визуальные критерии:**
- Цветной overlay + тени видны
- Рельеф выглядит объёмным

View File

@@ -0,0 +1,455 @@
# 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)

View File

@@ -1,126 +0,0 @@
# UI Test Cases: Terrain (Фаза 5.4)
### TC-T-01 — Кнопка рельеф видна
**Тип:** ui
**Viewport:** both
**URL:** https://openclaw.mva154.duckdns.org/enduro/
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 3000
3. screenshot: "terrain-btn-visible"
4. check-visual: "Кнопка рельеф (иконка горы) видна в правой панели кнопок. Не обрезана, достаточного размера для тапа."
**Визуальные критерии:**
- Кнопка с иконкой горы видна
- Не перекрыта другими элементами
- Достаточный размер (>44px на мобильном)
---
### TC-T-02 — Попап рельеф открывается
**Тип:** ui
**Viewport:** both
**URL:** https://openclaw.mva154.duckdns.org/enduro/
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 3000
3. click: "#terrain-toggle"
4. wait: 500
5. screenshot: "terrain-popup-open"
6. check-visual: "Попап рельеф открылся. Видны два чекбокса: Гипсометрия и Отмывка. Попап не обрезан, текст читаем."
**Визуальные критерии:**
- Попап виден полностью
- Два чекбокса с подписями
- Текст читаем, контраст достаточный
- Попап не перекрывает критичные элементы карты
---
### TC-T-03 — Включение гипсометрии
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 3000
3. click: "#terrain-toggle"
4. wait: 500
5. click: "#terrain-hypso-cb"
6. wait: 3000
7. screenshot: "hypso-enabled"
8. check-visual: "Гипсометрия включена: на карте виден цветной полупрозрачный слой рельефа (зелёные/жёлтые/коричневые тона поверх базовой карты)."
**Визуальные критерии:**
- Виден цветной overlay поверх карты
- Карта под overlay всё ещё читаема
- Нет артефактов (чёрные/белые блоки)
---
### TC-T-04 — Включение отмывки (hillshade)
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 3000
3. click: "#terrain-toggle"
4. wait: 500
5. click: "#terrain-hypso-cb"
6. wait: 1000
7. click: "#terrain-hillshade-cb"
8. wait: 3000
9. screenshot: "hillshade-enabled"
10. check-visual: "Отмывка включена: видны тени рельефа (затемнение на склонах). Если зум < 10 — чекбокс hillshade должен быть disabled с подсказкой 'Зум 10+'."
**Визуальные критерии:**
- Если зум >= 10: видны тени на рельефе
- Если зум < 10: чекбокс hillshade неактивен, подсказка видна
- Нет чёрных/белых артефактов
---
### TC-T-05 — Попап закрывается по повторному клику
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 3000
3. click: "#terrain-toggle"
4. wait: 500
5. screenshot: "popup-open"
6. click: "#terrain-toggle"
7. wait: 500
8. screenshot: "popup-closed"
9. check-visual: "Попап закрылся после повторного клика на кнопку рельеф. Попап не виден на экране."
**Визуальные критерии:**
- Попап не виден на втором скриншоте
- Карта видна полностью без перекрытий
---
### TC-T-06 — Мобильный попап не обрезан
**Тип:** ui
**Viewport:** mobile
**URL:** https://openclaw.mva154.duckdns.org/enduro/
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 3000
3. click: "#terrain-toggle"
4. wait: 500
5. screenshot: "terrain-popup-mobile"
6. check-visual: "Попап terrain полностью виден на мобильном экране. Не обрезан снизу/справа. Чекбоксы достаточного размера для тапа (>44px)."
**Визуальные критерии:**
- Попап целиком в viewport
- Чекбоксы кликабельного размера
- Текст читаем на маленьком экране

View File

@@ -1,45 +0,0 @@
# UI Test Cases: Terrain — Расширенные
### TC-T-07 — Гипсометрия на зуме 10
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/#10/55.75/37.6
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/#10/55.75/37.6
2. wait: 5000
3. click: "#terrain-toggle"
4. wait: 500
5. click: "#terrain-hypso-cb"
6. wait: 5000
7. screenshot: "hypso-zoom10"
8. check-visual: "Гипсометрия включена на зуме 10. Должен быть виден цветной полупрозрачный слой (зелёные тона для равнины ЦФО) поверх базовой карты."
**Визуальные критерии:**
- Цветной overlay виден на карте
- Зелёные/жёлтые тона рельефа
- Карта под overlay читаема
---
### TC-T-08 — Hillshade на зуме 11
**Тип:** ui
**Viewport:** desktop
**URL:** https://openclaw.mva154.duckdns.org/enduro/#11/55.75/37.6
**Шаги:**
1. navigate: https://openclaw.mva154.duckdns.org/enduro/#11/55.75/37.6
2. wait: 5000
3. click: "#terrain-toggle"
4. wait: 500
5. click: "#terrain-hypso-cb"
6. wait: 1000
7. click: "#terrain-hillshade-cb"
8. wait: 5000
9. screenshot: "hillshade-zoom11"
10. check-visual: "Оба слоя включены на зуме 11: гипсометрия (цвет) + отмывка (тени). Должны быть видны тени на склонах рельефа."
**Визуальные критерии:**
- Цветной overlay + тени видны
- Рельеф выглядит объёмным
- Нет чёрных/белых артефактов

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB