[ { "id": "PAGE-LOAD", "status": "PASS", "note": "HTTP 200 OK" }, { "id": "PAGE-TITLE", "status": "PASS", "note": "title содержит \"Enduro Trails\"" }, { "id": "UI-BTN-ROUTE", "status": "PASS", "note": "кнопка #btn-route с toggleRouteMode есть" }, { "id": "UI-BTN-MARKERS", "status": "PASS", "note": "кнопка #btn-markers есть" }, { "id": "UI-BTN-RULER", "status": "PASS", "note": "кнопка #btn-ruler есть" }, { "id": "UI-SEARCH", "status": "PASS", "note": "поле #search-input есть" }, { "id": "UI-BTN-WAYPOINT", "status": "PASS", "note": "кнопка #btn-add-waypoint есть" }, { "id": "UI-BTN-COMPASS", "status": "PASS", "note": "кнопка #btn-compass есть" }, { "id": "UI-BTN-LOCATE", "status": "PASS", "note": "кнопка #btn-locate есть" }, { "id": "TC-F01-PANEL-HIDDEN", "status": "PASS", "note": "route-panel скрыт (style=\"display:none; position:absolute; bottom:40px; right:10px;\n ...\")" }, { "id": "TC-F01-STATUS-INIT", "status": "PASS", "note": "начальный статус: \"Кликни точку старта\"" }, { "id": "TC-F01-ACTIONS-HIDDEN", "status": "PASS", "note": "route-actions скрыт изначально" }, { "id": "TC-F05-GPX-EXISTS", "status": "FAIL", "note": "downloadGPX не найден" }, { "id": "TC-F05-01", "status": "BLOCKED", "note": "GPX кнопка не в route-card-details" }, { "id": "APP-JS-LOAD", "status": "PASS", "note": "app.js загружен (39409 байт)" }, { "id": "TC-F03-08-FORMAT", "status": "PASS", "note": "formatDuration поддерживает дни/часы/минуты" }, { "id": "TC-F03-08", "status": "PASS", "note": "formatDuration: <60 мин → минуты, >=60 → часы" }, { "id": "TC-F01-02", "status": "PASS", "note": "ROUTE_COLORS: 5 цветов, все уникальны: '#0066ff', '#00aa44', '#9933cc', '#ff8800', '#888888'" }, { "id": "TC-F01-04-CLASS", "status": "PASS", "note": "класс route-card используется" }, { "id": "TC-F01-04-ACTIVE", "status": "FAIL", "note": "active класс не найден" }, { "id": "TC-F01-02-DOT", "status": "PASS", "note": "route-color-dot элемент есть" }, { "id": "TC-F02-COVERAGE-BAR", "status": "PASS", "note": "route-coverage-bar элемент есть" }, { "id": "TC-F02-01-PCT", "status": "PASS", "note": "проценты покрытия (dirt_total_pct, asphalt_pct) есть" }, { "id": "TC-F02-04-DETAILS", "status": "PASS", "note": "route-card-details элемент есть" }, { "id": "TC-F02-04-BTN", "status": "PASS", "note": "кнопка деталей маршрута есть" }, { "id": "TC-F04-DND", "status": "PASS", "note": "drag-and-drop точек реализован" }, { "id": "TC-F04-REMOVE", "status": "PASS", "note": "удаление точки реализовано" }, { "id": "TC-F01-07", "status": "PASS", "note": "clearRoute функция есть" }, { "id": "TC-F06-MARKER-MODE", "status": "PASS", "note": "toggleMarkerMode реализован" }, { "id": "TC-F01-03", "status": "PASS", "note": "highlightRoute/unhighlightRoute реализованы" }, { "id": "TC-NFR-03", "status": "PASS", "note": "meta viewport для мобильных есть" }, { "id": "API-HEALTH", "status": "PASS", "note": "health OK, db_exists=true, db_path=/data/centralfederal.sqlite" }, { "id": "API-DB-EXISTS", "status": "PASS", "note": "БД существует" }, { "id": "TC-F01-01", "status": "PASS", "note": "построено 1 маршрутов" }, { "id": "TC-F02-01-DIST", "status": "PASS", "note": "дистанция: 13.2 км" }, { "id": "TC-F02-01-TIME", "status": "PASS", "note": "время: 2177с = 36 мин" }, { "id": "TC-F03-08", "status": "PASS", "note": "время 36 мин < 60, отображается в минутах — OK" }, { "id": "TC-F02-01-PCT", "status": "PASS", "note": "грунт: 100%, асфальт: 0%" }, { "id": "TC-F02-COVERAGE-SUM", "status": "PASS", "note": "сумма покрытий = 100% (≈100%)" }, { "id": "TC-F01-GEOMETRY", "status": "PASS", "note": "геометрия LineString, 394 точек" }, { "id": "TC-F01-02", "status": "PASS", "note": "1 маршрут (альтернативы зависят от данных OSM)" }, { "id": "TC-F01-01-FAR", "status": "PASS", "note": "дальние точки: 2 маршрутов" }, { "id": "TC-F04-01", "status": "PASS", "note": "3 точки: маршрут построен (1 вариантов)" }, { "id": "TC-API-INVALID", "status": "PASS", "note": "невалидный запрос: HTTP 400" }, { "id": "TC-SEARCH-API", "status": "BLOCKED", "note": "/api/search не реализован (404)" }, { "id": "APP-CSS-LOAD", "status": "PASS", "note": "app.css загружен (9397 байт)" }, { "id": "TC-CSS-ROUTE-CARD", "status": "PASS", "note": ".route-card стиль есть" }, { "id": "TC-CSS-COLOR-DOT", "status": "PASS", "note": ".route-color-dot стиль есть" }, { "id": "TC-CSS-COVERAGE-BAR", "status": "PASS", "note": ".route-coverage-bar стиль есть" }, { "id": "TC-CSS-WAYPOINT-ROW", "status": "PASS", "note": ".waypoint-row стиль есть" }, { "id": "TC-CSS-CARD-DETAILS", "status": "PASS", "note": ".route-card-details стиль есть" } ]