--- 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]`.