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 if: github.event_name == 'pull_request' permissions: id-token: write contents: write steps: - name: Checkout code uses: actions/checkout@v5 with: fetch-depth: 0 persist-credentials: false - name: Setup Node & pnpm uses: ./.github/actions/setup-node - name: Install Playwright run: | sudo npx playwright install-deps pnpm exec playwright install - name: Set up Git env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | git config --local user.email "$(git --no-pager log --format=format:'%ae' -n 1)" git config --local user.name "$(git --no-pager log --format=format:'%an' -n 1)" git config --local url."https://oauth2:${GITHUB_TOKEN}@github.com/".insteadOf "https://github.com/" git pull --rebase origin ${{ github.head_ref }} - name: Build project run: pnpm build - name: Capture screenshots timeout-minutes: 3 run: pnpm e2e env: MAX_CONCURRENCY: 10 - name: Commit screenshots run: | set -x git add e2e/snapshots git commit -m 'ci(snapshots): update screenshots' git push origin HEAD:${{ github.head_ref }}