|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 55s
Замер на проде сразу после выкатки #2913: страница `/estimate` отдаёт 200 и выглядит правильно, но после гидратации монтируется `GuardedRoute` — 404 /trade-in/api/v1/me ×3 404 /trade-in/api/v1/trade-in/support/anon/unread плюс виджет чата поддержки из закрытого контура и экран «Не удалось проверить доступ» внизу страницы. Форма при этом переставала работать ВОВСЕ: разметка с сервера видна, поле принимает текст, а обработчики не подключены — человек печатает адрес и не получает ни подсказок, ни ошибки. Проверено, что дело не в API: ручной `fetch` из той же страницы отдаёт 200 и восемь подсказок. Причина ровно та же, что чинил PR #2910 для `/`: список публичных путей в гварде и матчер `@meraPages` в Caddyfile — одно множество, записанное в двух местах. Тогда разошлись на `/`, теперь на `/estimate`. Оба раза страница отдавала 200, ломалась только в браузере, и ни один тест этого не видел. Комментарий в шапке гварда инцидент не предотвратил (он там был), поэтому совпадение теперь запинено ТЕСТОМ: он читает Caddyfile и требует, чтобы каждый путь из `@meraPages` проходил `isPublicPath`. Сверяемся с источником, а не дублируем список третий раз. Мутация — вернуть список к состоянию, которое уехало на прод: 2 failed / 3 passed × пропускает короткие адреса публичного домена × совпадает с тем, что публичный домен реально раздаёт (Caddyfile) откат → 5 passed. Плюс vitest 56 passed, tsc, lint, isolation guard 41 файл. `Caddyfile` уже в paths-фильтре фронтового лэйна (#2913), так что правка одного лишь конфига теперь тоже гоняет этот гейт. |
||
|---|---|---|
| .. | ||
| auth | ||
| scrapers | ||
| team | ||
| trade-in | ||