Fixes #11 #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches-ignore: | |
| - staging # géré par deploy-staging.yml qui inclut ces checks | |
| pull_request: | |
| branches: | |
| - main | |
| - staging | |
| - dev | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # ───────────────────────────────────────────── | |
| # 1. Lint & Format | |
| # ───────────────────────────────────────────── | |
| lint: | |
| name: Lint & Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| cache-dependency-path: lucky7-app/frontend/package-lock.json | |
| - name: Installer les dépendances | |
| run: npm ci | |
| working-directory: lucky7-app/frontend | |
| - name: TypeScript — vérification des types | |
| run: npm run typecheck | |
| working-directory: lucky7-app/frontend | |
| - name: ESLint | |
| run: npm run lint | |
| working-directory: lucky7-app/frontend | |
| - name: Prettier — vérification du format | |
| run: npm run format:check | |
| working-directory: lucky7-app/frontend | |
| # ───────────────────────────────────────────── | |
| # 2. Tests unitaires (Vitest) | |
| # ───────────────────────────────────────────── | |
| test-unit: | |
| name: Tests unitaires | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| cache-dependency-path: lucky7-app/frontend/package-lock.json | |
| - name: Installer les dépendances | |
| run: npm ci | |
| working-directory: lucky7-app/frontend | |
| - name: Vitest | |
| run: npm run test:coverage | |
| working-directory: lucky7-app/frontend | |
| - name: Upload coverage | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: coverage-report | |
| path: lucky7-app/frontend/coverage/ | |
| retention-days: 7 | |
| # ───────────────────────────────────────────── | |
| # 3. Tests E2E (Playwright) | |
| # ───────────────────────────────────────────── | |
| test-e2e: | |
| name: Tests E2E | |
| runs-on: ubuntu-latest | |
| needs: [lint, test-unit] # ne lance l'E2E que si lint + unit passent | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| cache-dependency-path: lucky7-app/frontend/package-lock.json | |
| - name: Installer les dépendances | |
| run: npm ci | |
| working-directory: lucky7-app/frontend | |
| - name: Installer Playwright (Chromium uniquement) | |
| run: npx playwright install --with-deps chromium | |
| working-directory: lucky7-app/frontend | |
| - name: Build Next.js (prod) | |
| run: npm run build | |
| working-directory: lucky7-app/frontend | |
| - name: Tests Playwright | |
| run: npm run test:e2e | |
| working-directory: lucky7-app/frontend | |
| - name: Upload rapport Playwright | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: lucky7-app/frontend/playwright-report/ | |
| retention-days: 7 |