diff --git a/tradein-mvp/backend/tests/conftest.py b/tradein-mvp/backend/tests/conftest.py index 02b64a9f..2e9f9d5e 100644 --- a/tradein-mvp/backend/tests/conftest.py +++ b/tradein-mvp/backend/tests/conftest.py @@ -150,3 +150,20 @@ def pytest_sessionfinish(session, exitstatus) -> None: ) if exitstatus == 0: session.exitstatus = 1 + + +# ── Никакого НАСТОЯЩЕГО сна в тестах ───────────────────────────────────────── +# Фоновый дослальщик алертов GlitchTip (#3471) спит между попытками по +# настоящим часам: три попытки по 30 секунд. `TestClient` из Starlette ждёт +# завершения background-задачи, привязанной к ответу, поэтому один-единственный +# тест на отказ доставки держал весь прогон около минуты, а в CI прогон просто +# умирал по таймауту без единой строки об ошибке. +# +# Ставим паузу в ноль для ВСЕХ тестов: проверять надо, что дослальщик вызван и +# сколько раз, а не то, что интерпретатор умеет спать. Тест, которому нужна +# настоящая пауза, переопределяет значение сам. +@pytest.fixture(autouse=True) +def _no_real_retry_sleep(monkeypatch: pytest.MonkeyPatch) -> None: + from app.tasks import glitchtip_alert_retry + + monkeypatch.setattr(glitchtip_alert_retry, "_RETRY_DELAY_S", 0.0)