name: Tests on: pull_request: push: branches: [master] concurrency: group: tests-${{ github.ref }} cancel-in-progress: true jobs: quality: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npm run check - run: npm run lint - run: npm run test:fast - run: npm run test:coverage - uses: actions/upload-artifact@v4 if: always() with: name: coverage path: coverage/ if-no-files-found: ignore integration: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npx supabase start - run: npx supabase db reset - run: npm run test:integration - if: always() run: npx supabase stop build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npm run test:build bdd: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - uses: actions/cache@v4 with: path: ~/.cache/ms-playwright key: playwright-chromium-${{ runner.os }}-${{ hashFiles('package-lock.json') }} - run: npx playwright install --with-deps chromium - run: npx supabase start - run: npx supabase db reset - run: npm run test:bdd - uses: actions/upload-artifact@v4 if: failure() with: name: playwright-failures path: | test-results/ playwright-report/ if-no-files-found: ignore - if: always() run: npx supabase stop