Прогон тестов перестаёт спать по-настоящему #3499

Merged
lekss361 merged 1 commit from fix/3471-tests-no-real-sleep into main 2026-09-12 13:36:10 +00:00
Owner

Что происходило

Набор тестов Trade-In на main не просто медленный — он висит. Файл тестов вебхука GlitchTip не завершается вовсе, его убивает сторож по таймауту. В логе CI это выглядит как обрыв прогона без единой строки об ошибке.

Почему

Фоновый дослальщик алертов спит между попытками по настоящим часам: три попытки по тридцать секунд. TestClient из Starlette ждёт завершения background-задачи, привязанной к ответу. Значит один тест на отказ доставки держит прогон около минуты, а под сторожем короче минуты — убивает его.

Появилось это вместе с фоновой доставкой алертов, слитой сегодня.

Фикс

Автоиспользуемая фикстура ставит паузу дослальщика в ноль для всех тестов. Проверять надо, что дослальщик вызван и сколько раз, а не то, что интерпретатор умеет спать. Тест, которому нужна настоящая пауза, переопределяет значение сам.

Фикстура в общем conftest.py, а не в одном файле, намеренно: следующий тест, который заденет этот путь, иначе повесит прогон заново и так же молча.

файл тестов вебхука было стало
результат зависание, смерть по таймауту 19 passed
время больше 60 секунд 1.36 секунды

Test plan

  • pytest tests/test_glitchtip_webhook.py — 19 passed за 1.36с, до правки прогон не завершался
  • полный прогон Trade-In в CI доходит до конца

Refs #3471

🤖 Generated with Claude Code

https://claude.ai/code/session_01JY6iWDnGDthdvsMWgK1BMG

## Что происходило Набор тестов Trade-In на `main` не просто медленный — он висит. Файл тестов вебхука GlitchTip не завершается вовсе, его убивает сторож по таймауту. В логе CI это выглядит как обрыв прогона без единой строки об ошибке. ## Почему Фоновый дослальщик алертов спит между попытками по настоящим часам: три попытки по тридцать секунд. `TestClient` из Starlette ждёт завершения background-задачи, привязанной к ответу. Значит один тест на отказ доставки держит прогон около минуты, а под сторожем короче минуты — убивает его. Появилось это вместе с фоновой доставкой алертов, слитой сегодня. ## Фикс Автоиспользуемая фикстура ставит паузу дослальщика в ноль для всех тестов. Проверять надо, что дослальщик вызван и сколько раз, а не то, что интерпретатор умеет спать. Тест, которому нужна настоящая пауза, переопределяет значение сам. Фикстура в общем `conftest.py`, а не в одном файле, намеренно: следующий тест, который заденет этот путь, иначе повесит прогон заново и так же молча. | файл тестов вебхука | было | стало | |---|---|---| | результат | зависание, смерть по таймауту | 19 passed | | время | больше 60 секунд | 1.36 секунды | ## Test plan - [x] `pytest tests/test_glitchtip_webhook.py` — 19 passed за 1.36с, до правки прогон не завершался - [ ] полный прогон Trade-In в CI доходит до конца Refs #3471 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01JY6iWDnGDthdvsMWgK1BMG
lekss361 added 1 commit 2026-09-12 13:15:53 +00:00
fix(tests): убрать настоящий сон дослальщика алертов из прогона
All checks were successful
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / changes (pull_request) Successful in 12s
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 / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m24s
120526e313
Фоновый дослальщик GlitchTip спит по настоящим часам: три попытки по
тридцать секунд. TestClient ждёт завершения background-задачи, привязанной
к ответу, поэтому один тест на отказ доставки держал весь прогон минуту, а
в CI прогон умирал по таймауту без единой строки об ошибке — набор
выглядел «медленным», хотя на деле висел.

Проверять надо, что дослальщик вызван и сколько раз, а не то, что
интерпретатор умеет спать. Файл тестов вебхука: было зависание, стало
19 passed за 1.36с.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JY6iWDnGDthdvsMWgK1BMG
lekss361 merged commit a6619e1d3f into main 2026-09-12 13:36:10 +00:00
lekss361 deleted branch fix/3471-tests-no-real-sleep 2026-09-12 13:36:11 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3499
No description provided.