diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab6b1b3..eaca4c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,8 +41,6 @@ jobs: test-unit: name: Unit tests runs-on: ubuntu-latest - # Pure in-process tests — Pydantic models, observability config, mocked - # FastAPI endpoints. Completes fast so PR authors get quick feedback. steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5 @@ -50,26 +48,7 @@ jobs: with: python-version: "3.14" - run: uv sync --frozen --extra dev - - run: uv run pytest tests/ -v -m "not integration" - - test-integration: - name: Integration tests - runs-on: ubuntu-latest - # Tests that touch real external systems (DBs, queues, etc.). The template - # ships none, so this job runs the integration-marked subset and exits 0 - # when no tests collect. - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5 - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 - with: - python-version: "3.14" - - run: uv sync --frozen --extra dev - - run: uv run pytest tests/ -v -m integration --no-header - # `pytest` exits 5 when no tests are collected — treat that as success - # while the template has no integration suite. - continue-on-error: false - shell: bash + - run: uv run pytest tests/ -v -m "not integration" -o "addopts=" coverage: name: Coverage @@ -78,7 +57,6 @@ jobs: # under src/, the template has no measurable coverage; pyproject.toml's # [tool.coverage.report].fail_under stays at 75 (the eventual target), # while CI uses --cov-fail-under=0 so the empty scaffold doesn't fail. - # When #17 + #18 ship real source + tests, drop the override here. steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5 @@ -103,9 +81,6 @@ jobs: pre-commit: name: Pre-commit runs-on: ubuntu-latest - # Runs every hook against all files — ensures a developer who forgot - # `uv run pre-commit install` can't leak unformatted code or a stray - # secret past the first defence layer. steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5 @@ -118,7 +93,6 @@ jobs: frontend-build: name: Frontend Build runs-on: ubuntu-latest - # Skips cleanly until ticket #21 lands frontend/package.json. if: hashFiles('frontend/package.json') != '' steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 @@ -132,13 +106,7 @@ jobs: frontend-quality: name: Frontend Quality runs-on: ubuntu-latest - # Lint + format + tsc + vitest. Mirrors the strict posture the backend - # enjoys (ruff + mypy + pytest); the Frontend Build job above validates - # the bundler output, this one validates source quality. if: hashFiles('frontend/package.json') != '' - defaults: - run: - working-directory: frontend steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 @@ -146,8 +114,8 @@ jobs: node-version: "24" cache: npm cache-dependency-path: frontend/package-lock.json - - run: npm ci - - run: npm run lint - - run: npm run format:check - - run: npm run check - - run: npm run test + - run: cd frontend && npm ci + - run: cd frontend && npm run lint + - run: cd frontend && npm run format:check + - run: cd frontend && npm run check + - run: cd frontend && npm run test