[P1] Pre-merge CI-гейт для tradein-mvp (backend pytest + frontend typecheck/lint) #2208

Closed
opened 2026-07-02 19:18:06 +00:00 by lekss361 · 2 comments
Owner

Эпик: #2200

Находка (Tests/CI, verified high): ci.yml:51-58 paths-filter покрывает только backend/**, data/sql/**, frontend/** — НЕ tradein-mvp/**. Pytest живёт в deploy-tradein.yml (триггер только push→main). Итог: каждый tradein-PR мержится на пусто-зелёных проверках; тесты гоняются пост-merge; замерено 7 падений из 24 прогонов за ~2ч → main краснеет ~каждый третий мерж. Фронт tradein: 0 тестов, 0 CI, даже typecheck/lint на PR-времени нет.

Impact: политика self-merge «checks green» пусто-истинна для tradein.

Acceptance:

  • pull_request workflow с paths tradein-mvp/backend/** → pytest gate (blocking).
  • tradein-mvp/frontend/**type-check + lint gate (blocking).
  • Убрать/актуализировать устаревшие --deselect (один тест уже проходит); добавить pytest-timeout.
  • Проверка: PR с падающим тестом получает красный чек ДО merge.

Scope: .forgejo/workflows/. Связано с #2200 (silent-green паттерн).

Эпик: #2200 **Находка (Tests/CI, verified high):** `ci.yml:51-58` paths-filter покрывает только `backend/**`, `data/sql/**`, `frontend/**` — НЕ `tradein-mvp/**`. Pytest живёт в `deploy-tradein.yml` (триггер только push→main). Итог: каждый tradein-PR мержится на пусто-зелёных проверках; тесты гоняются пост-merge; замерено 7 падений из 24 прогонов за ~2ч → main краснеет ~каждый третий мерж. Фронт tradein: 0 тестов, 0 CI, даже typecheck/lint на PR-времени нет. **Impact:** политика self-merge «checks green» пусто-истинна для tradein. **Acceptance:** - [ ] `pull_request` workflow с paths `tradein-mvp/backend/**` → pytest gate (blocking). - [ ] `tradein-mvp/frontend/**` → `type-check` + `lint` gate (blocking). - [ ] Убрать/актуализировать устаревшие `--deselect` (один тест уже проходит); добавить `pytest-timeout`. - [ ] Проверка: PR с падающим тестом получает красный чек ДО merge. Scope: `.forgejo/workflows/`. Связано с #2200 (silent-green паттерн).
lekss361 added the
ci
priority/p1
scope/devops
tradein
labels 2026-07-02 19:20:20 +00:00
Author
Owner

Working on this (night shift). Ветка chore/tradein-premerge-ci от forgejo/main. Локальный полный pytest-прогон запущен для верификации устаревших --deselect.

Working on this (night shift). Ветка `chore/tradein-premerge-ci` от forgejo/main. Локальный полный pytest-прогон запущен для верификации устаревших --deselect.
Author
Owner

Сделано в PR #2220 (смержен, deploy success, образ пересобран).

Acceptance:

  • ci-tradein.yml: pull_request-гейт, backend pytest blocking (tradein-mvp/backend/**, packages/**, workspace uv.lock/pyproject.toml).
  • frontend type-check + lint blocking (tradein-mvp/frontend/**); добавлен ESLint flat config (без него next lint в CI падал в интерактивный prompt).
  • Устаревший --deselect test_cian_valuation::test_cache_hit_returns_cached убран в обоих workflow (проходит в полном прогоне: 2947 passed локально); остался один честный deselect (test_search_cache_hit, order-dependent 401). pytest-timeout добавлен (timeout=120 per-test).
  • Гейт исполнился на самом PR #2220: CI Trade-In / backend-tests + frontend-checks оба прошли как blocking-чеки ДО merge (падающий тест теперь красит PR — job'ы те же blocking).

Бонус: оба test-job переведены на uv sync --frozen (workspace-лок tracked — комменты про gitignored lock устарели с #2137).

Сделано в PR #2220 (смержен, deploy success, образ пересобран). Acceptance: - ✅ `ci-tradein.yml`: pull_request-гейт, backend pytest blocking (`tradein-mvp/backend/**`, `packages/**`, workspace `uv.lock`/`pyproject.toml`). - ✅ frontend type-check + lint blocking (`tradein-mvp/frontend/**`); добавлен ESLint flat config (без него `next lint` в CI падал в интерактивный prompt). - ✅ Устаревший `--deselect test_cian_valuation::test_cache_hit_returns_cached` убран в обоих workflow (проходит в полном прогоне: 2947 passed локально); остался один честный deselect (`test_search_cache_hit`, order-dependent 401). `pytest-timeout` добавлен (timeout=120 per-test). - ✅ Гейт исполнился на самом PR #2220: `CI Trade-In / backend-tests` + `frontend-checks` оба прошли как blocking-чеки ДО merge (падающий тест теперь красит PR — job'ы те же blocking). Бонус: оба test-job переведены на `uv sync --frozen` (workspace-лок tracked — комменты про gitignored lock устарели с #2137).
Sign in to join this conversation.
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#2208
No description provided.