8.4 KiB
8.4 KiB
Acceptance Criteria — ET-014
Work Item: ET-014 Связаны: BR-01…BR-06 (01-brd.md), REQ-F-01…REQ-F-07 (02-trz.md)
Формат: Given / When / Then.
AC-01: Открытие фильтров на mobile — sheet полностью виден поверх
Покрывает: BR-01, BR-02, REQ-F-01, REQ-F-05
- Given мобильный viewport 390×844, тёмная тема, карта https://openclaw.mva154.duckdns.org/enduro/ загружена и стабилизирована (зум по умолчанию).
- When пользователь:
- Кликает кнопку
#terrain-toggle(«Рельеф»). - Включает чекбокс
#public-tracks-cb(«Публичные треки»). - Кликает кнопку
#public-tracks-filters-btn(«Фильтры…»).
- Кликает кнопку
- Then
#sheet-gps-filtersимеет классopen(DOM-проверка).- Заголовок «Фильтры публичных треков», секция «ТИП АКТИВНОСТИ» и кнопка
✕полностью видны в viewport и кликабельны (visible & in front, no element with higher stacking covers them). - Никакая часть
#terrain-popupне визуально перекрывает#sheet-gps-filtersв области sheet'а (скриншот-сравнение).
AC-02: Открытие фильтров на desktop — sheet полностью виден поверх
Покрывает: BR-01, BR-02, REQ-F-01, REQ-NF-05
- Given desktop viewport 1440×900, любая тема.
- When те же шаги что в AC-01.
- Then sheet «Фильтры публичных треков» отображается слева (как другие sheets на desktop, ширина ≈ 380 px) и полностью видим.
#terrain-popupне перекрывает sheet.
AC-03: Кликабельность контролов внутри фильтров
Покрывает: BR-01, REQ-F-01
- Given AC-01 (фильтры открыты на mobile).
- When пользователь кликает на чекбоксы активностей внутри
#gps-activity-gridи на сегментный переключатель «По источнику / По активности». - Then клики срабатывают (визуальное состояние чекбокса/кнопки меняется). Никакой невидимый слой не «съедает» события.
AC-04: Закрытие фильтров кнопкой ✕ — без артефактов
Покрывает: BR-03, REQ-F-03
- Given фильтры открыты (AC-01).
- When пользователь кликает кнопку
✕в шапке#sheet-gps-filters. - Then
#sheet-gps-filtersтеряет классopen, скрывается.- На viewport не остаётся видимых частей панели слоёв или sheet'а в полупрозрачном/частичном состоянии.
- Карта полностью интерактивна (свободно скроллится, zoom работает).
AC-05: Закрытие фильтров кликом по backdrop (mobile)
Покрывает: BR-03, REQ-F-03
- Given фильтры открыты на mobile (AC-01).
- When пользователь тапает по затемнённой области выше sheet'а (
#sheet-backdrop). - Then sheet закрывается. Возврат к карте без артефактов.
AC-06: Повторное открытие фильтров работает
Покрывает: REQ-F-04
- Given пользователь только что закрыл фильтры (AC-04 или AC-05).
- When повторяет шаги AC-01 (Рельеф → Публичные треки → Фильтры…).
- Then sheet снова открывается полностью видимым. Никаких залипших состояний кнопок / классов.
AC-07: Чекбоксы рельефа в terrain-popup продолжают работать
Покрывает: BR-05, REQ-F-05
- Given карта загружена, фильтры не открывались в этой сессии.
- When пользователь открывает
#terrain-popupи переключает#terrain-hillshade-cb,#terrain-tri-cb,#trails-track-cb,#trails-path-cb,#poi-visible-cb, переключатели подложки и единиц. - Then все чекбоксы реагируют как раньше, popup остаётся открытым до клика вне popup'а. Регрессий нет.
AC-08: Закрытие terrain-popup кликом вне popup'а
Покрывает: REQ-F-05
- Given
#terrain-popupоткрыт. - When пользователь кликает по карте или любой области вне popup'а и вне
#terrain-toggle. - Then popup закрывается (existing
closeTerrainOnOutside). Класс.activeс кнопки снимается.
AC-09: Остальные bottom-sheets не регрессируют
Покрывает: BR-04, REQ-F-06
- Given карта загружена.
- When пользователь поочерёдно открывает
#sheet-route,#sheet-recon,#sheet-scenic,#sheet-link,#sheet-gpxчерез тулбар. - Then каждый sheet открывается, виден полностью, кнопки внутри работают, закрывается ✕ / свайпом / backdrop'ом без артефактов.
AC-10: Marker-dialog не регрессирует
Покрывает: REQ-NF-03
- Given карта загружена.
- When пользователь активирует «Метка» в тулбаре, тапает по карте.
- Then
#marker-dialog(z=500) открывается поверх всего, кликабелен. После выбора типа — закрывается без артефактов.
AC-11: Search-panel не регрессирует
Покрывает: REQ-NF-03
- Given карта загружена.
- When пользователь нажимает «Поиск» в тулбаре, вводит запрос.
- Then
#search-panel(z=600) виден полностью, ввод работает, результаты подгружаются.
AC-12: Ruler-info не регрессирует
Покрывает: REQ-NF-03
- Given карта загружена.
- When пользователь активирует «Линейка», ставит точки.
- Then
#ruler-info(z=600) виден поверх всего и кликабелен.
AC-13: Светлая тема
Покрывает: BR-06, REQ-F-07
- Given mobile viewport, светлая тема (включена кнопкой
#btn-theme). - When повторяются шаги AC-01.
- Then результат идентичен AC-01: sheet поверх, всё видно, кликабельно. Никаких theme-specific артефактов.
AC-14: Сценарий из тикета (мобильный, z12 Москва)
Покрывает: BR-01, BR-02 (прямое воспроизведение бага)
- Given мобильный viewport (390×844), карта на зуме 12 в центре около Москвы (lng=37.6, lat=55.75).
- When Рельеф → ✓ Публичные треки → Фильтры…
- Then Скриншот после открытия фильтров сопоставим с эталонным «good»: панель «Фильтры публичных треков» полностью видна; ни одна часть terrain-popup не находится поверх sheet'а в его координатах.
Definition of Done
- Все AC-01…AC-14 проходят на test-среде https://openclaw.mva154.duckdns.org/enduro/.
make testиmake lintзелёные.- UI-тесты из
04b-ui-test-cases.mdзелёные на CI (или в локальном Playwright прогоне). - Owner подтвердил визуальную приёмку по скриншотам AC-01, AC-02, AC-14.