Modern QA2026Stage 1: On Every Push (Seconds to Minutes) — tiles
Log inJoin
12 / 48 · 16 CI/CD Pipelines · Testing Pyramid in CI← prev⊞ allnext →☰ Read as one page

3.2Stage 1: On Every Push (Seconds to Minutes)

This is the fastest feedback loop. Developers get results before they context-switch away from the code they just wrote.

What runs here:

  • Linting and static analysis (ESLint, Pylint, Ruff)
  • Type checking (TypeScript tsc --noEmit, mypy)
  • Unit tests with coverage reporting
  • Formatting checks (Prettier, Black)

Why these and not others:

  • They are fast (typically under 2 minutes)
  • They require no external services (databases, APIs)
  • They catch the most common mistakes (syntax errors, type mismatches, broken logic)
# Example: Fast feedback job
lint-and-unit:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: 24
        cache: 'npm'
    - run: npm ci
    - run: npm run lint
    - run: npm run typecheck
    - run: npm run test:unit -- --coverage
    - uses: actions/upload-artifact@v4
      if: always()
      with:
        name: coverage
        path: coverage/lcov.info

Target time: Under 3 minutes. If linting and unit tests take longer than this, developers will stop waiting for them.