Modern QA2026Stage 3: On Merge to Main / Pre-Deploy (Minutes to Tens of Minutes) — tiles
Log inJoin
14 / 48 · 16 CI/CD Pipelines · Testing Pyramid in CI← prev⊞ allnext →☰ Read as one page

3.4Stage 3: On Merge to Main / Pre-Deploy (Minutes to Tens of Minutes)

This is the final validation before code reaches users. Run the expensive, thorough tests here.

What runs here:

  • Full browser test suite across multiple browsers
  • Visual regression tests (Playwright visual comparisons, Percy, Chromatic)
  • Performance smoke tests (Lighthouse, k6 with basic thresholds)
  • Accessibility audits (axe-core, Pa11y)
# Example: Cross-browser E2E tests with sharding
browser-tests:
  needs: integration-tests
  runs-on: ubuntu-latest
  strategy:
    fail-fast: false
    matrix:
      browser: [chromium, firefox, webkit]
      shard: [1, 2, 3, 4]
  steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: 24
        cache: 'npm'
    - run: npm ci
    - uses: actions/cache@v4
      with:
        path: ~/.cache/ms-playwright
        key: playwright-${{ hashFiles('package-lock.json') }}
    - run: npx playwright install --with-deps ${{ matrix.browser }}
    - run: npx playwright test --project=${{ matrix.browser }} --shard=${{ matrix.shard }}/4
    - uses: actions/upload-artifact@v4
      if: failure()
      with:
        name: traces-${{ matrix.browser }}-${{ matrix.shard }}
        path: test-results/

Target time: Under 20 minutes with parallelization. Without sharding, browser tests easily take 45+ minutes.