name: CI on: push: branches: [main] pull_request: jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm cache-dependency-path: | package-lock.json backend/package-lock.json - name: Install frontend dependencies run: npm ci - name: Install backend dependencies run: npm ci working-directory: backend - name: Backend unit tests run: npm test working-directory: backend - name: Frontend unit tests run: npm test - name: Build run: npm run build e2e: runs-on: ubuntu-latest needs: test steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm cache-dependency-path: | package-lock.json backend/package-lock.json - name: Install frontend dependencies run: npm ci - name: Install backend dependencies run: npm ci working-directory: backend - name: Install Playwright browsers run: npx playwright install chromium --with-deps - name: Run e2e smoke tests run: npm run test:e2e - uses: actions/upload-artifact@v4 if: failure() with: name: playwright-report path: playwright-report/ retention-days: 7