---
type: ui-test-cases
work_item_id: ET-013
title: "UI Test Cases: Перепады высот на z9-z11"
version: 1
status: draft
created_at: 2026-06-04
updated_at: 2026-06-04
authors:
  - "agent:analyst"
related:
  - "PH-6.terrain"
  - "ET-007"
---

# UI Test Cases — ET-013: Перепады высот на zoom z9-z11

Базовый URL: `https://openclaw.mva154.duckdns.org/enduro/`

ET-013 — frontend-калибровка: hillshade и TRI используют
zoom-aware paint, UI-минзум hillshade понижен с 10 до 9. UI-тесты
проверяют:

1. На z9 чекбокс «Тени рельефа» активен, hint скрыт, hillshade виден.
2. На z9-z11 перепады «бросаются в глаза» (качественно).
3. На z8 регрессии нет (TRI выглядит как было).
4. На z14 hillshade не «перегрет» (регрессия).
5. Тёмная тема и спутник совместимы.
6. Мобильный viewport работает.
7. Persistence (localStorage) переживает F5.

Селекторы (из текущего `index.html`):
- `#terrain-toggle` — кнопка попапа слоёв рельефа (правая панель).
- `#terrain-popup` — сам попап со списком чекбоксов.
- `#terrain-hillshade-cb` — чекбокс «Тени рельефа».
- `#terrain-hillshade-hint` — hint «Зум 9+» (ET-013) / «Зум 10+» (до ET-013).
- `#terrain-tri-cb` — чекбокс «Перепады».
- `#base-btn-satellite` — кнопка спутника.
- `#btn-theme` — переключатель тёмная/светлая.
- `#map` — карта.

Все тесты выставляют zoom программно через `page.evaluate`:
```js
window._map.setZoom(N);
window._map.setCenter([37.6, 54.5]);  // юг МО / Ока, холмистый район
```

Координата `[37.6, 54.5]` (юг Москвы / Кашира / Ока) выбрана как
«заведомо холмистая зона ЦФО» с явным TRI/hillshade.

Скриншоты складываются в `docs/work-items/ET-013/screenshots/`
и пришиваются к `13-test-report.md`. Для качественных AC-07/08/09
оператор сравнивает с baseline скриншотами «до ET-013» (тоже в
`screenshots/baseline/`).

---

### TC-UI-01-Z9 — На z=9 hillshade доступен и виден

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. evaluate: window._map.setZoom(9); window._map.setCenter([37.6, 54.5]);
8. wait: 3000
9. click: "#terrain-toggle"
10. wait: 800
11. screenshot: "et013-01-z9-popup"
12. check-visual: "В попапе #terrain-popup чекбокс «Тени рельефа» (#terrain-hillshade-cb) НЕ disabled, текст не серый. Hint #terrain-hillshade-hint имеет display:none (текст «Зум 9+» не виден). Чекбокс «Перепады» (#terrain-tri-cb) также доступен."
13. click: "#terrain-hillshade-cb"
14. click: "#terrain-tri-cb"
15. wait: 4000
16. screenshot: "et013-01-z9-tracks-visible"
17. check-visual: "На карте при zoom=9 виден район юга Москвы / Оки. Поверх подложки нарисованы тени рельефа (hillshade) — тёмные склоны заметны на холмах вдоль реки. TRI («Перепады») рисует цветные пятна шероховатых зон. Оба слоя читаются, рельеф выразительный."

---

### TC-UI-02-Z8-REGRESS — Регрессия z=8: TRI выглядит как до ET-013

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. wait: 800
9. click: "#terrain-tri-cb"
10. wait: 2000
11. evaluate: window._map.setZoom(8); window._map.setCenter([37.6, 54.5]);
12. wait: 4000
13. screenshot: "et013-02-z8-tri-regress"
14. check-visual: "На z=8 виден слой «Перепады» в опубликованном виде PH-6: opacity ~0.70, ресемпл «жёсткий» (граница 30-метровых клеток SRTM может быть видна, но это норма после ET-013). Слой hillshade выключен. Сравнение с baseline скриншотом 'before-ET-013-z8.png' — визуально близко, без явных регрессий."

---

### TC-UI-03-Z9-Q — Качественная читаемость перепадов на z=9

- тип: ui
- viewport: desktop
- условие: оба слоя включены

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. wait: 500
9. click: "#terrain-hillshade-cb"
10. click: "#terrain-tri-cb"
11. wait: 2000
12. evaluate: window._map.setZoom(9); window._map.setCenter([37.6, 54.5]);
13. wait: 5000
14. screenshot: "et013-03-z9-readable"
15. check-visual: "На z=9 рельеф читается явно: тени по склонам холмов, цветные пятна TRI выделяют шероховатые зоны (склоны вдоль Оки, овраги). Не должно быть впечатления 'плоской карты'. Оператор сравнивает с baseline 'before-ET-013-z9.png' и подтверждает: 'перепады стали выразительнее' или 'минимум не хуже z8'. При отказе — фиксировать в 13-test-report.md и итеративно корректировать stops в HILLSHADE_PAINT/TRI_PAINT."

---

### TC-UI-04-Z10-Q — Качественная читаемость на z=10

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. click: "#terrain-hillshade-cb"
9. click: "#terrain-tri-cb"
10. wait: 2000
11. evaluate: window._map.setZoom(10); window._map.setCenter([37.6, 54.5]);
12. wait: 5000
13. screenshot: "et013-04-z10-readable"
14. check-visual: "На z=10 в фокусе несколько холмов с явными склонами. Hillshade рисует тени с выраженным контрастом (raster-contrast 0.35 в paint-выражении). TRI выделяет шероховатости. Сравнение с baseline 'before-ET-013-z10.png' — стало явно выразительнее. Подложка под слоями ещё читается (opacity 0.60 + 0.85 не превращают карту в кашу)."

---

### TC-UI-05-Z11-Q — Качественная читаемость на z=11

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. click: "#terrain-hillshade-cb"
9. click: "#terrain-tri-cb"
10. wait: 2000
11. evaluate: window._map.setZoom(11); window._map.setCenter([37.6, 54.5]);
12. wait: 5000
13. screenshot: "et013-05-z11-readable"
14. check-visual: "На z=11 виден небольшой район (несколько км в кадре). Перепады «прорисованы», отдельные склоны различимы. Сравнение с baseline 'before-ET-013-z11.png' — выразительнее. Дороги/грунтовки/POI остаются читаемыми поверх рельефа (z-order: terrain ниже trails/POI, проверено по applyTerrainLayer)."

---

### TC-UI-06-Z14-REGRESS — Регрессия z=14: hillshade не перегрет

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. click: "#terrain-hillshade-cb"
9. wait: 2000
10. evaluate: window._map.setZoom(14); window._map.setCenter([37.6, 54.5]);
11. wait: 5000
12. screenshot: "et013-06-z14-regress"
13. check-visual: "На z=14 hillshade выглядит так, как до ET-013: лёгкая «плёнка» теней с opacity ≈ 0.40 и raster-contrast ≈ 0. Никакого перегретого контраста. Подложка отчётливо видна. Сравнение с baseline 'before-ET-013-z14.png' — без отличий."

---

### TC-UI-07-Z9-MOBILE — Hillshade на мобильном viewport на z=9

- тип: ui
- viewport: mobile

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. evaluate: window._map.setZoom(9); window._map.setCenter([37.6, 54.5]);
8. wait: 3000
9. click: "#terrain-toggle"
10. wait: 800
11. screenshot: "et013-07-z9-mobile-popup"
12. check-visual: "На мобильном viewport (375×667) попап рельефа открыт, чекбокс «Тени рельефа» доступен, hint скрыт. Чекбокс «Перепады» доступен. Layout не сломан."
13. click: "#terrain-hillshade-cb"
14. click: "#terrain-tri-cb"
15. wait: 4000
16. screenshot: "et013-07-z9-mobile-tracks"
17. check-visual: "На мобильном на z=9 видны тени рельефа и пятна TRI. Перепады читаются. Layout верхней/нижней панелей не перекрывает карту."

---

### TC-UI-08-Z10-SAT-Q — Спутник + hillshade на z=10

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. click: "#base-btn-satellite"
9. wait: 4000
10. click: "#terrain-hillshade-cb"
11. wait: 2000
12. evaluate: window._map.setZoom(10); window._map.setCenter([37.6, 54.5]);
13. wait: 5000
14. screenshot: "et013-08-z10-sat"
15. check-visual: "На спутниковой подложке поверх космоснимка видны тени hillshade. Подложка под ними различима — деревья, реки, поля по-прежнему читаются. Hillshade не превращает снимок в «серую плёнку». При отказе (слой глушит снимок) — открыть итерацию: либо снизить opacity на спутнике через отдельный layer-paint, либо документировать как known issue."

---

### TC-UI-09-Z10-DARK-Q — Тёмная тема + hillshade на z=10

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: localStorage.setItem('theme', 'dark'); location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. click: "#terrain-hillshade-cb"
9. click: "#terrain-tri-cb"
10. wait: 2000
11. evaluate: window._map.setZoom(10); window._map.setCenter([37.6, 54.5]);
12. wait: 5000
13. screenshot: "et013-09-z10-dark"
14. check-visual: "На тёмной теме при z=10 видны и hillshade, и TRI. Тени не сливаются с тёмной подложкой. Цвета TRI читаются. Если визуально слои «съедают карту» — фиксируется как известная проблема для будущей итерации (theme-specific paint, ADR-0001 в follow-up)."

---

### TC-UI-10-PERSIST — Состояние слоёв переживает F5

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. click: "#terrain-hillshade-cb"
9. click: "#terrain-tri-cb"
10. wait: 1500
11. evaluate: window._map.setZoom(10); window._map.setCenter([37.6, 54.5]);
12. wait: 4000
13. screenshot: "et013-10a-before-reload"
14. check-visual: "Оба слоя видны на z=10."
15. evaluate: location.reload();
16. wait: 6000
17. evaluate: window._map.setZoom(10); window._map.setCenter([37.6, 54.5]);
18. wait: 4000
19. screenshot: "et013-10b-after-reload"
20. check-visual: "После reload оба слоя автоматически восстановились (через restoreTerrainState). Чекбоксы в #terrain-popup всё ещё checked. localStorage 'terrain-hillshade'='1', 'terrain-tri'='1'."

---

### TC-UI-11-NETWORK-Q — Сетевой объём (M-10)

- тип: ui (network)
- viewport: desktop
- инструмент: DevTools Network

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. open: DevTools Network, filter "/terrain/"
8. clear network log
9. click: "#terrain-toggle"
10. click: "#terrain-hillshade-cb"
11. click: "#terrain-tri-cb"
12. evaluate: window._map.setZoom(8); window._map.setCenter([37.6, 54.5]);
13. wait: 3500
14. evaluate: window._map.setZoom(9);
15. wait: 3500
16. evaluate: window._map.setZoom(10);
17. wait: 3500
18. evaluate: window._map.setZoom(11);
19. wait: 3500
20. record: суммарный transferred size в Network
21. check-visual: "Сравнение с baseline 'before-ET-013-network-z8-z11.txt' (записанным до начала ET-013): рост ≤ 135%. Если выше — анализ: какие тайлы добавились, оправдано ли. Фиксация в 13-test-report.md."

---

### TC-UI-12-Z9-PAN — Панорамирование на z=9 без лагов

- тип: ui
- viewport: desktop

шаги:
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
2. wait: 5000
3. evaluate: localStorage.clear();
4. wait: 500
5. evaluate: location.reload();
6. wait: 5000
7. click: "#terrain-toggle"
8. click: "#terrain-hillshade-cb"
9. click: "#terrain-tri-cb"
10. wait: 2000
11. evaluate: window._map.setZoom(9); window._map.setCenter([37.6, 54.5]);
12. wait: 5000
13. evaluate: window._map.panBy([400, 0]);
14. wait: 3000
15. evaluate: window._map.panBy([0, 400]);
16. wait: 3000
17. evaluate: window._map.panBy([-400, 0]);
18. wait: 3000
19. screenshot: "et013-12-z9-pan"
20. check-visual: "После трёх pan-шагов карта показывает соседние регионы. Тайлы догружены, нет 'белых дыр' в hillshade/TRI. Возврат к исходному центру — мгновенный (browser cache). UI не блокируется, нет визуальных лагов."

---

### Заметки по запуску

- TC-UI-03..05 (Q-критерии) — качественные. Оператор сравнивает
  скриншот с baseline («до ET-013»). Baseline записывается **до**
  начала разработки ET-013 и кладётся в
  `docs/work-items/ET-013/screenshots/baseline/`.
- TC-UI-08 (SAT-Q) и TC-UI-09 (DARK-Q) — допустимо «known issue»
  с фиксацией в `13-test-report.md`. Если визуальная регрессия
  обнаружена — открывается follow-up задача по theme/sat-specific paint.
- При отказе TC-UI-03/04/05 — корректировка stops в
  `HILLSHADE_PAINT`/`TRI_PAINT`, новый прогон. Это калибровка, а не баг.
- При отказе TC-UI-06 (z14 регрессия) — баг калибровки stops,
  должен быть исправлен.
- TC-UI-11 (NETWORK-Q) — pre/post замеры; baseline записывается
  до старта работ над ET-013.

### Координаты для тестов

| Координаты | Регион | Зачем |
|---|---|---|
| `[37.6, 54.5]` | юг МО / Кашира / Ока | холмистый, выраженный hillshade и TRI |
| `[37.6, 55.7]` | центр Москвы | плоский, контроль «город всё равно читается» (опционально) |
| `[38.6, 54.0]` | Тула | холмы юга ЦФО, альтернатива для AC-08 |

По умолчанию все TC используют `[37.6, 54.5]`.
