name: CI on: push: branches: - main pull_request: types: [opened, synchronize, reopened] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: name: Quality Checks runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node & pnpm uses: ./.github/actions/setup-node - name: Run linting run: pnpm lint - name: Run type checking run: pnpm typecheck e2e: name: E2E Visual Regression Tests runs-on: ubuntu-latest timeout-minutes: 15 permissions: contents: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node & pnpm uses: ./.github/actions/setup-node - name: Setup Git user shell: bash run: | git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" git config --global user.name "github-actions[bot]" - name: Install Playwright run: | sudo npx playwright install-deps pnpm exec playwright install - name: Build project run: pnpm build - name: Capture screenshots timeout-minutes: 3 run: pnpm e2e env: MAX_CONCURRENCY: 5 PORT: 4000 - name: Commit screenshots run: | git add e2e/snapshots git diff --staged --exit-code || (git commit -m 'ci(snapshots): update screenshots' && git push)