name: Tests on: pull_request: push: branches: [master] concurrency: group: tests-${{ github.ref }} cancel-in-progress: true # `$env/static/public` is resolved at build time, so every variable imported from it must be # present for `vite build` and `svelte-check` to succeed on a clean checkout. These are the # local-stack defaults already published in .env.local.example - never real credentials. env: PUBLIC_USE_LOCAL_POKEMON_SPRITE_FOLDER: 'false' PUBLIC_SUPABASE_URL: http://127.0.0.1:54321 PUBLIC_SUPABASE_ANON_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 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 - 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 # `supabase start` applies migrations and seeds; no separate reset is needed. - run: npx supabase start - 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') }} restore-keys: | playwright-chromium-${{ runner.os }}- - run: npx playwright install --with-deps chromium - run: npx supabase start - 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