Files
enduro-trails/docs/work-items/ET-014/03-acceptance-criteria.md
claude-bot e796a6cb03
All checks were successful
CI / lint (push) Successful in 5s
CI / test (push) Successful in 10s
CI / build (push) Successful in 2s
analyst(ET): auto-commit from analyst run_id=87
2026-06-04 11:03:45 +00:00

8.4 KiB
Raw Blame History

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 пользователь:
    1. Кликает кнопку #terrain-toggle («Рельеф»).
    2. Включает чекбокс #public-tracks-cb («Публичные треки»).
    3. Кликает кнопку #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.