name: CI on: push: branches: [main] pull_request: branches: [main] jobs: backend-lint: runs-on: ubuntu-latest defaults: { run: { working-directory: backend } } steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v3 - run: uv sync --extra dev - run: uv run ruff check . - run: uv run ruff format --check . backend-typecheck: runs-on: ubuntu-latest defaults: { run: { working-directory: backend } } steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v3 - run: uv sync --extra dev - run: uv run mypy src tests backend-test: runs-on: ubuntu-latest defaults: { run: { working-directory: backend } } steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v3 - run: uv sync --extra dev - run: uv run pytest frontend-test: runs-on: ubuntu-latest defaults: { run: { working-directory: frontend } } steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: '20' } - run: npm install - run: npm run lint - run: npm test frontend-e2e: runs-on: ubuntu-latest defaults: { run: { working-directory: frontend } } steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: '20' } - run: npm install - run: npx playwright install --with-deps - run: npm run build - run: npm run test:e2e build: runs-on: ubuntu-latest needs: [backend-lint, backend-typecheck, backend-test, frontend-test, frontend-e2e] steps: - uses: actions/checkout@v4 - run: echo "All checks passed"