Все четыре падения на main — устаревшие тесты, поведение сервиса корректно.
Проверено мутацией: возврат кода к старому виду снова красит эти тесты.
1) test_pace_provider_disabled_when_zero (красный с 2026-06-20, 3f30c1c9).
Тот коммит перевёл _pace_provider на _MIN_PAGE_INTERVAL_BY_PROVIDER
(per-provider override), добавил под это новый test_server_pacing.py — и
не тронул старый тест, который патчит модульный BROWSER_MIN_PAGE_INTERVAL_S.
Глобал теперь читается только как фолбэк для провайдера ВНЕ словаря, поэтому
на "avito" патч не влияет ни на что: тест ставил 0.0 и получал дефолтные 2.0.
Через окружение выключение работает (BROWSER_MIN_PAGE_INTERVAL_S=0 → словарь
собирается нулями на импорте), то есть заявленное поведение живо.
Соседние четыре пейсинг-теста патчили тот же мёртвый символ, но ставили 2.0 —
ровно дефолт словаря, и потому зеленели вхолостую: они не управляли тем, что
проверяли. Переведены на setitem туда же.
2-4) test_fetch_returns_503_when_browser_unavailable, test_fetch_opens_and_closes_own_page,
test_fetch_recycles_after_threshold (красные с 2026-07-02, ca473a00 / #2164 P4).
Тот коммит добавил _ensure_browser(proxy_override=...) и обновил подделки в
test_server.py и test_server_fetch_json.py, а четыре подделки в
test_server_smoke.py остались одноаргументными → TypeError на server.py:709.
Подписи подделок приведены к реальной. Подделка в /login-тесте тоже, хотя
login_handler зовёт _ensure_browser позиционно: расхождение подписи мока с
оригиналом и есть причина этой поломки, чинить её стоит целиком.
Файл test_server_smoke.py правился дважды ПОСЛЕ 2026-07-02 (#2430, #2433) и
краснота никого не остановила — тесты сайдкара не бежит ни один пайплайн.
Включение их в CI — отдельным PR, после этой починки (порядок из #2722).
Refs #2722