name: CI on: push: branches: [main] pull_request: branches: [main] jobs: backend-test: runs-on: docker container: node:20 steps: - uses: actions/checkout@v4 - name: Install backend dependencies working-directory: backend run: npm ci --legacy-peer-deps || npm install --legacy-peer-deps - name: Typecheck backend working-directory: backend run: npx tsc --noEmit - name: Run backend tests working-directory: backend run: npm test - name: Build backend working-directory: backend run: npm run build frontend-test: runs-on: docker container: node:20 steps: - uses: actions/checkout@v4 - name: Install frontend dependencies working-directory: frontend run: npm ci --legacy-peer-deps || npm install --legacy-peer-deps - name: Typecheck frontend working-directory: frontend run: npx tsc --noEmit - name: Run frontend tests working-directory: frontend run: npm test - name: Build frontend working-directory: frontend run: npm run build e2e-test: runs-on: docker container: node:20 steps: - uses: actions/checkout@v4 - name: Install backend dependencies working-directory: backend run: npm ci --legacy-peer-deps || npm install --legacy-peer-deps - name: Install frontend dependencies working-directory: frontend run: npm ci --legacy-peer-deps || npm install --legacy-peer-deps - name: Install Playwright browsers working-directory: frontend run: npx playwright install --with-deps chromium - name: Run Playwright E2E tests working-directory: frontend run: npm run test:e2e:ci - name: Upload Playwright report if: failure() uses: actions/upload-artifact@v4 with: name: playwright-report path: frontend/playwright-tests/playwright-report.json