name: Quality on: push: branches: - main pull_request: workflow_dispatch: permissions: contents: read concurrency: group: quality-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: verify: name: Fast quality gate runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: ^11.20.0 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 24 cache: pnpm cache-dependency-path: | pnpm-lock.yaml web/pnpm-lock.yaml - name: Install root dependencies run: pnpm install --frozen-lockfile - name: Install web dependencies working-directory: web run: pnpm install --frozen-lockfile - name: Run quality gate run: pnpm verify e2e: name: E2E (non-blocking baseline) needs: verify continue-on-error: true runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: ^11.20.0 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 24 cache: pnpm cache-dependency-path: web/pnpm-lock.yaml - name: Install web dependencies working-directory: web run: pnpm install --frozen-lockfile - name: Install Playwright browsers working-directory: web run: pnpm exec playwright install --with-deps chromium firefox webkit - name: Run E2E working-directory: web run: pnpm test:e2e