ci(tradein): тесты браузерного сайдкара наконец бегут в пайплайне (#2722) #2726

Merged
bot-backend merged 1 commit from ci/2722-browser-job into main 2026-08-06 11:19:51 +00:00

1 commit

Author SHA1 Message Date
9947c57689 ci(tradein): тесты браузерного сайдкара наконец бегут в пайплайне (#2722)
All checks were successful
CI / changes (pull_request) Successful in 9s
CI Trade-In / changes (pull_request) Successful in 9s
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 / browser-tests (pull_request) Successful in 50s
CI Trade-In / frontend-checks (pull_request) Successful in 1m14s
CI Trade-In / backend-tests (pull_request) Successful in 3m18s
Каталог tradein-mvp/browser/ не гонял НИ ОДИН пайплайн: ci-tradein гейтит
backend/ и frontend/, deploy-tradein — тоже, а сам сайдкар не член uv-воркспейса
(members = backend + packages/*), так что и pytest из backend его не собирал.
Итог — 108 содержательных тестов вне охвата, из них 4 лежали красными на main
(с 2026-06-20 и 2026-07-02) при том, что файл дважды правился уже после поломки.
Красноту починил PR #2724, этот job закрывает причину, по которой её не видели.

Отдельный job, а не шаг в backend-job:
  - сайдкар вне воркспейса → uv sync --frozen его зависимости не ставит;
  - aiohttp (единственная не-stdlib зависимость сьюта) отсутствует в
    tradein-mvp/uv.lock, то есть backend-окружение сьют просто не запустит;
  - свой paths-filter: правка browser/ не обязана гонять backend-сьют и наоборот.

Окружение намеренно лёгкое: pytest + aiohttp, и всё. camoufox/playwright не
нужны — camoufox импортируется лениво внутри _launch_browser, а тесты мокают
_ensure_browser/_do_fetch. pytest-asyncio тоже не нужен: `async def test_` в
каталоге ноль, каждый тест сам крутит asyncio.run(). Проверено прогоном на venv
ровно из этих двух пакетов: 108 passed, 0 skipped — то есть в CI идёт весь
сьют целиком, без молча пропущенной интеграционной части.

timeout-minutes: 10 — у каталога нет своего pyproject, а значит и pytest-timeout
из backend'а (timeout=120) на него не распространяется; нативный job-таймаут
дешевле плагина ради одного каталога.

Refs #2722
2026-08-06 16:13:29 +05:00