fix(gps-tracks): address ET-011 review — JS UI tests + flat 403 contract
All checks were successful
All checks were successful
Закрывает findings из docs/work-items/ET-011/12-review.md (REQUEST_CHANGES,
попытка 3/3):
P1-01 — добавлены поведенческие JS unit-тесты UI download-flow
- tests/web/track_download.test.js — 28 кейсов (node --test):
• _parseFilenameFromCD — RFC 5987 приоритет, plain fallback,
битый percent-encoding, null/empty (REQ-F-05.2, AC-2 UI)
• _handleDownloadError — 400/403/404/413/5xx тосты, defensive
при отсутствии showToast, поддержка flat (ADR-015 §G) и legacy
wrapped 403-форм (REQ-F-05.4, AC-7 UI)
• _renderTrackPopupHtml — наличие кнопки, aria-label «Скачать GPX»,
data-track-id, отсутствие при невалидном id, регрессия прочих
полей (REQ-F-01, AC-1)
- tests/web/test_track_download.py — pytest-обёртка (статические
проверки + запуск Node-раннера), исполняется в обычном pytest tests/
- 04b-ui-test-cases.md: AC-13 (mobile-bbox) явно маркирован как
MANUAL release-smoke (Playwright-раннер в проекте не настроен;
альтернатива согласована reviewer'ом в P1-01).
P2-01 — устранено расхождение «doc vs runtime» по контракту 403
- endpoint.py: HTTPException(detail={...}) → JSONResponse(content={...}),
чтобы FastAPI не оборачивал dict во второй слой «detail». Контракт
теперь совпадает с ADR-015 §G и ADR-014 §6:
{"detail":"source_forbidden","external_urls":[...]}
- test_gps_tracks_download.py IT-05: упрощено — body уже плоский,
без двухуровневого `body.get("detail", body)` workaround.
- gps_tracks.js::_handleDownloadError: flat-форма стала приоритетной,
wrapped-форма оставлена как defensive fallback (с комментарием).
Регрессия: 89/89 API-тестов + 24/24 предыдущих JS-тестов + 28 новых
JS-тестов download-flow проходят. ruff check — clean.
Refs: ET-011
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,15 @@ Playwright-сценарии для визуальной проверки. Все
|
||||
> architect/builder уточнит CSS-классы новой кнопки — обновить
|
||||
> селекторы в этом файле.
|
||||
|
||||
> **Статус автоматизации (ET-011, после review 12-review.md / P1-01):**
|
||||
> Playwright-спека `tests/web/test_track_download.spec.ts` из test-plan
|
||||
> §E2E-01..E2E-04 **не реализована** — в проекте нет настроенного
|
||||
> Playwright-раннера. UI-сторона AC-1 / AC-2 / AC-7 закрыта поведенческими
|
||||
> JS unit-тестами `tests/web/track_download.test.js` (28 кейсов,
|
||||
> `node --test`, обёрнуто pytest'ом). **AC-13 (mobile bbox / тапабельность
|
||||
> кнопки ≥ 32×32 CSS px на 375×667) — ручной smoke перед каждым релизом**;
|
||||
> сценарий — TC-UI-02 ниже (+ TC-UI-05 для проверки реального download).
|
||||
|
||||
---
|
||||
|
||||
### TC-UI-01 — Кнопка «Скачать» в popup трека (desktop)
|
||||
@@ -33,10 +42,12 @@ Playwright-сценарии для визуальной проверки. Все
|
||||
|
||||
---
|
||||
|
||||
### TC-UI-02 — Popup и кнопка на мобильном
|
||||
### TC-UI-02 — Popup и кнопка на мобильном (AC-13, MANUAL release-smoke)
|
||||
|
||||
**Тип:** ui
|
||||
**Тип:** ui (manual smoke — единственное покрытие AC-13)
|
||||
**Viewport:** mobile (375×667)
|
||||
**Когда:** перед каждым деплоем в test/prod, оператором — DevTools или
|
||||
устройство с тем же viewport.
|
||||
|
||||
**Шаги:**
|
||||
1. navigate: https://openclaw.mva154.duckdns.org/enduro/
|
||||
|
||||
Reference in New Issue
Block a user