179 lines
7.9 KiB
YAML
179 lines
7.9 KiB
YAML
# Test Plan — ET-014
|
||
# Z-index fix: панель «Фильтры» должна открываться поверх панели слоёв.
|
||
# Все тесты ориентированы на test-среду: https://openclaw.mva154.duckdns.org/enduro/
|
||
|
||
work_item: ET-014
|
||
related_acs: [AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-08, AC-09, AC-10, AC-11, AC-12, AC-13, AC-14]
|
||
|
||
tests:
|
||
|
||
# ─── Unit ──────────────────────────────────────────────────────────
|
||
- id: TC-U-01
|
||
type: unit
|
||
layer: frontend
|
||
title: togglePublicTracksFiltersSheet корректно открывает/закрывает sheet
|
||
target: src/web/gps_tracks.js :: togglePublicTracksFiltersSheet
|
||
given: |
|
||
JSDOM с минимальным DOM: #sheet-gps-filters, #terrain-popup,
|
||
#sheet-backdrop, мок openSheet/closeAllSheets.
|
||
when: |
|
||
Вызвать togglePublicTracksFiltersSheet() дважды подряд.
|
||
then: |
|
||
- Первый вызов: openSheet('sheet-gps-filters') вызван 1 раз;
|
||
_buildGpsFiltersUI вызван.
|
||
- Второй вызов: closeAllSheets() вызван 1 раз.
|
||
covers: [REQ-F-04]
|
||
|
||
- id: TC-U-02
|
||
type: unit
|
||
layer: frontend
|
||
title: При открытии sheet-gps-filters состояние terrain-popup корректно
|
||
target: src/web/gps_tracks.js или общий хук в src/web/app.js
|
||
given: |
|
||
JSDOM: #terrain-popup со style.display='block' и #terrain-toggle.classList
|
||
содержит 'active'. #sheet-gps-filters существует.
|
||
when: |
|
||
Вызвать togglePublicTracksFiltersSheet() при открытом popup'е.
|
||
then: |
|
||
В зависимости от выбранного варианта решения:
|
||
- Вариант A: popup.style.display === 'none', terrain-toggle без 'active'.
|
||
- Вариант B/C: popup может оставаться открытым, но stacking-tests
|
||
ниже (TC-I-01) обязаны быть зелёными.
|
||
covers: [REQ-F-01, REQ-F-02]
|
||
|
||
# ─── Integration / DOM ─────────────────────────────────────────────
|
||
- id: TC-I-01
|
||
type: integration
|
||
layer: frontend
|
||
title: Stacking — sheet-gps-filters визуально выше terrain-popup
|
||
given: |
|
||
Полный DOM из src/web/index.html, app.css загружен, jsdom + getComputedStyle
|
||
или Playwright страница. terrain-popup открыт, sheet-gps-filters открыт.
|
||
when: |
|
||
Получить элемент в центре области #sheet-gps-filters через
|
||
document.elementFromPoint(x, y).
|
||
then: |
|
||
Возвращённый элемент принадлежит #sheet-gps-filters (или его потомкам),
|
||
НЕ принадлежит #terrain-popup.
|
||
covers: [REQ-F-01, AC-01, AC-02]
|
||
|
||
- id: TC-I-02
|
||
type: integration
|
||
layer: frontend
|
||
title: Stacking — marker-dialog поверх всего сохраняется
|
||
given: |
|
||
Полный DOM. marker-dialog открыт (style.display: flex), параллельно
|
||
моделируем «грязное» состояние (terrain-popup открыт).
|
||
when: |
|
||
document.elementFromPoint в координатах кнопки внутри marker-dialog.
|
||
then: |
|
||
Элемент принадлежит #marker-dialog.
|
||
covers: [REQ-NF-03, AC-10]
|
||
|
||
- id: TC-I-03
|
||
type: integration
|
||
layer: frontend
|
||
title: Stacking — search-panel и ruler-info остаются на верху (z=600)
|
||
given: |
|
||
Полный DOM, search-panel.display=block или ruler-info видим.
|
||
when: |
|
||
elementFromPoint в центре панели.
|
||
then: |
|
||
Возвращённый элемент принадлежит соответствующей панели,
|
||
НЕ перекрывается ни sheet'ом, ни terrain-popup.
|
||
covers: [REQ-NF-03, AC-11, AC-12]
|
||
|
||
- id: TC-I-04
|
||
type: integration
|
||
layer: frontend
|
||
title: Закрытие sheet-gps-filters через closeAllSheets очищает состояние
|
||
given: |
|
||
sheet-gps-filters.open, sheet-backdrop.visible.
|
||
when: |
|
||
Вызвать closeAllSheets().
|
||
then: |
|
||
- sheet-gps-filters без класса 'open'.
|
||
- sheet-backdrop без класса 'visible'.
|
||
- Никаких inline стилей-«артефактов» (например, лишних z-index, opacity).
|
||
covers: [REQ-F-03, AC-04]
|
||
|
||
# ─── E2E (Playwright; см. также 04b-ui-test-cases.md) ──────────────
|
||
- id: TC-E-01
|
||
type: e2e
|
||
layer: ui
|
||
title: Mobile — открыть фильтры публичных треков из панели слоёв
|
||
env: test
|
||
viewport: { width: 390, height: 844 }
|
||
steps_summary: |
|
||
open / wait map / click #terrain-toggle / click #public-tracks-cb /
|
||
click #public-tracks-filters-btn / assert sheet visible & on top
|
||
expected: |
|
||
sheet-gps-filters имеет class 'open'; visually центр sheet'а не
|
||
перекрыт terrain-popup (elementFromPoint).
|
||
covers: [AC-01, AC-03, AC-14]
|
||
reference: 04b-ui-test-cases.md :: TC-UI-01
|
||
|
||
- id: TC-E-02
|
||
type: e2e
|
||
layer: ui
|
||
title: Desktop — фильтры открываются слева, terrain-popup не перекрывает
|
||
env: test
|
||
viewport: { width: 1440, height: 900 }
|
||
expected: |
|
||
sheet-gps-filters виден слева (≈380px), terrain-popup не перекрывает.
|
||
covers: [AC-02]
|
||
reference: 04b-ui-test-cases.md :: TC-UI-02
|
||
|
||
- id: TC-E-03
|
||
type: e2e
|
||
layer: ui
|
||
title: Закрытие фильтров кнопкой ✕ возвращает к карте
|
||
env: test
|
||
viewport: { width: 390, height: 844 }
|
||
expected: |
|
||
Нет видимых частей sheet'а или backdrop'а после клика по ✕.
|
||
covers: [AC-04]
|
||
reference: 04b-ui-test-cases.md :: TC-UI-03
|
||
|
||
- id: TC-E-04
|
||
type: e2e
|
||
layer: ui
|
||
title: Повторное открытие/закрытие фильтров стабильно
|
||
env: test
|
||
viewport: { width: 390, height: 844 }
|
||
expected: |
|
||
После 3 циклов open/close — DOM-классы консистентны, sheet
|
||
продолжает открываться поверх terrain-popup.
|
||
covers: [AC-06]
|
||
reference: 04b-ui-test-cases.md :: TC-UI-04
|
||
|
||
- id: TC-E-05
|
||
type: e2e
|
||
layer: ui
|
||
title: Регрессия — открыть остальные bottom-sheets, проверить отображение
|
||
env: test
|
||
viewport: { width: 390, height: 844 }
|
||
expected: |
|
||
sheet-route, sheet-recon, sheet-scenic, sheet-link, sheet-gpx —
|
||
каждый открывается, виден, закрывается.
|
||
covers: [AC-09]
|
||
reference: 04b-ui-test-cases.md :: TC-UI-05
|
||
|
||
- id: TC-E-06
|
||
type: e2e
|
||
layer: ui
|
||
title: Светлая тема — сценарий открытия фильтров
|
||
env: test
|
||
viewport: { width: 390, height: 844 }
|
||
theme: light
|
||
expected: |
|
||
Sheet поверх terrain-popup, всё видно, контраст корректный.
|
||
covers: [AC-13]
|
||
reference: 04b-ui-test-cases.md :: TC-UI-06
|
||
|
||
# ─── Не входит ────────────────────────────────────────────────────────
|
||
out_of_scope:
|
||
- Тесты бизнес-логики фильтров (это покрывается ET-008/ET-009).
|
||
- Тесты позиционирования terrain-popup относительно кнопки «Рельеф».
|
||
- Производительность тайлов / роутинга.
|