# Tests unitaires + E2E Playwright (build statique complet) name: CI on: push: branches: [main, master, develop] pull_request: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: node: name: Tests Node (contrats + cohérence + sync tmp) runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '22' cache: npm - name: Installer les dépendances run: npm ci - name: Tests Node (voir scripts/presentation-contracts.mjs) run: npm run test:node e2e: name: E2E Playwright runs-on: ubuntu-latest timeout-minutes: 25 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '22' cache: npm - name: Installer les dépendances run: npm ci - name: Navigateur Chromium + dépendances système run: npx playwright install chromium --with-deps - name: Parcours E2E (build + serve dist) run: npm run test:e2e env: CI: true - name: Rapport Playwright (échec) if: failure() uses: actions/upload-artifact@v4 with: name: playwright-report path: playwright-report/ retention-days: 7 - name: Traces Playwright (échec) if: failure() uses: actions/upload-artifact@v4 with: name: test-results path: test-results/ retention-days: 7