name: CI on: push: branches: [main] pull_request: jobs: backend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: { components: rustfmt, clippy } - uses: Swatinem/rust-cache@v2 with: { workspaces: backend } - run: cd backend && cargo fmt --check && cargo clippy --workspace --all-targets -- -D warnings - run: cd backend && cargo test --workspace frontend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 22, cache: npm, cache-dependency-path: frontend/package-lock.json } - run: cd frontend && npm ci - run: cd frontend && npm run lint && npm run typecheck && npm test ui: runs-on: ubuntu-latest needs: [backend, frontend] steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: { workspaces: backend } - uses: actions/setup-node@v4 with: { node-version: 22, cache: npm, cache-dependency-path: frontend/package-lock.json } - run: cd frontend && npm ci && npx playwright install --with-deps chromium - run: cd frontend && npm run test:ui