This commit is contained in:
parent
3231233b73
commit
3527d2b608
1 changed files with 55 additions and 0 deletions
|
|
@ -30,6 +30,7 @@ jobs:
|
||||||
outputs:
|
outputs:
|
||||||
backend: ${{ steps.filter.outputs.backend }}
|
backend: ${{ steps.filter.outputs.backend }}
|
||||||
frontend: ${{ steps.filter.outputs.frontend }}
|
frontend: ${{ steps.filter.outputs.frontend }}
|
||||||
|
browser: ${{ steps.filter.outputs.browser }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: dorny/paths-filter@v3
|
- uses: dorny/paths-filter@v3
|
||||||
|
|
@ -54,6 +55,12 @@ jobs:
|
||||||
frontend:
|
frontend:
|
||||||
- 'tradein-mvp/frontend/**'
|
- 'tradein-mvp/frontend/**'
|
||||||
- '.forgejo/workflows/ci-tradein.yml'
|
- '.forgejo/workflows/ci-tradein.yml'
|
||||||
|
browser:
|
||||||
|
# Сайдкар — сервис ВНЕ uv-воркспейса (tradein-mvp/pyproject.toml
|
||||||
|
# members = backend + packages/*), со своим Dockerfile и без pyproject,
|
||||||
|
# поэтому и фильтр отдельный: backend-гейт его тестов не видел вовсе.
|
||||||
|
- 'tradein-mvp/browser/**'
|
||||||
|
- '.forgejo/workflows/ci-tradein.yml'
|
||||||
|
|
||||||
backend-tests:
|
backend-tests:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
@ -106,6 +113,54 @@ jobs:
|
||||||
uv run pytest -q \
|
uv run pytest -q \
|
||||||
--deselect "tests/test_search_api.py::test_search_cache_hit"
|
--deselect "tests/test_search_api.py::test_search_cache_hit"
|
||||||
|
|
||||||
|
# Тесты браузерного сайдкара (#2722). До этого job'а они не бежали НИГДЕ:
|
||||||
|
# ci-tradein гейтил только backend/frontend, deploy-tradein — тоже, а каталог
|
||||||
|
# вне uv-воркспейса, так что и `uv run pytest` из backend их не собирал. Итог:
|
||||||
|
# 4 теста лежали красными на main (с 2026-06-20 и 2026-07-02), файл при этом
|
||||||
|
# правился, и никто не узнал. Починка — PR #2724, этот job закрывает причину.
|
||||||
|
#
|
||||||
|
# Почему НЕ переиспользуем backend-job:
|
||||||
|
# 1. сайдкар не член воркспейса → `uv sync --frozen` его не ставит;
|
||||||
|
# 2. aiohttp (единственная не-stdlib зависимость сьюта) нет в tradein-mvp/uv.lock;
|
||||||
|
# 3. разный scope paths-filter: правка browser/ не должна гонять backend-сьют.
|
||||||
|
browser-tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: changes
|
||||||
|
if: needs.changes.outputs.browser == 'true'
|
||||||
|
# Сьют идёт ~15с. Лимит — страховка от зависшего теста: у сайдкара нет своего
|
||||||
|
# pyproject, а значит и pytest-timeout'а backend'а (timeout=120). Дешевле
|
||||||
|
# взять нативный job-таймаут, чем тащить плагин ради одного каталога.
|
||||||
|
timeout-minutes: 10
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./tradein-mvp/browser
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
# 3.12 — как в browser/Dockerfile (FROM python:3.12-slim).
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.12"
|
||||||
|
|
||||||
|
- name: Install test deps
|
||||||
|
# ВЕСЬ список: pytest + aiohttp. Ни playwright, ни camoufox, ни закачки
|
||||||
|
# Firefox — camoufox импортируется ЛЕНИВО внутри _launch_browser
|
||||||
|
# (server.py, `from camoufox.async_api import AsyncCamoufox`), а сами тесты
|
||||||
|
# мокают _ensure_browser/_do_fetch и грузят server.py по пути через importlib.
|
||||||
|
# pytest-asyncio тоже НЕ нужен: ни одного `async def test_` — каждый тест сам
|
||||||
|
# крутит asyncio.run(). Проверено локально на venv ровно из этих двух пакетов.
|
||||||
|
#
|
||||||
|
# aiohttp без пина — ровно как в browser/Dockerfile (`pip install ... aiohttp`),
|
||||||
|
# то есть гейт видит ту же версию, что уедет в образ. Пин здесь означал бы
|
||||||
|
# проверку версии, которой в проде нет.
|
||||||
|
run: pip install pytest aiohttp
|
||||||
|
|
||||||
|
- name: Run pytest (tradein-mvp/browser)
|
||||||
|
# Каталог без pyproject/pytest.ini → дефолтная конфигурация, ничего
|
||||||
|
# не deselect'ится. Ожидание: 108 passed, 0 failed, 0 skipped.
|
||||||
|
run: pytest -q
|
||||||
|
|
||||||
frontend-checks:
|
frontend-checks:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: changes
|
needs: changes
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue