--- # nuzlocke-tracker-4a6i title: Replace CI pipeline with test suite status: completed type: task priority: normal created_at: 2026-02-21T13:01:01Z updated_at: 2026-02-21T13:10:15Z --- Replace the current `.github/workflows/ci.yml` with a workflow that runs the actual test suites. The existing jobs (lint, format, type check) are already enforced by pre-commit hooks (prek), so CI should focus on test execution instead. ## Context - **Backend integration tests**: pytest with `TEST_DATABASE_URL` pointing at a postgres service container. Default URL: `postgresql+asyncpg://postgres:postgres@localhost:5433/nuzlocke_test`. Tests live in `backend/tests/`. - **Frontend unit tests**: vitest (`npm run test -- --run`). No external services needed. - **E2e tests**: Playwright. `e2e/global-setup.ts` uses `docker compose -p nuzlocke-test -f docker-compose.test.yml up -d --build` to start a test API + DB, then seeds data via the API. `playwright.config.ts` spins up `npm run dev` as the webServer. Need to install Chromium via `npx playwright install --with-deps chromium`. ## Checklist - [x] Add `backend-tests` job: postgres service container (image postgres:16-alpine, user/pass/db matching conftest defaults), install deps with `uv`, run `pytest backend/tests/ -q` - [x] Add `frontend-tests` job: node 24, `npm ci` in `frontend/`, run `npm run test -- --run` - [x] Add `e2e-tests` job: install Docker Compose, install Playwright + Chromium deps, run `npx playwright test` from `frontend/`; upload HTML report as artifact on failure - [x] Keep the `actions-lint` job (actionlint + zizmor); remove `backend-lint` and `frontend-lint` jobs - [x] Pin all action versions to SHA with version comments; pass `zizmor` audit