Regression Testing Strategy for Agile Teams (2026)
A regression strategy that fits a two-week sprint. The 4-tier suite model, smoke/sanity/full split, flake budget, and the CI cadence used by teams shipping daily to production.

Last updated 2026-07-20 · 11 min read · By Avinash K
Regression suites either keep releases safe or become the reason releases slip. The difference is strategy. This guide is the exact playbook we use for a team shipping 8-12 deploys per day: a 4-tier suite, a flake budget, and a CI cadence that keeps mean time to signal under 10 minutes.
Key takeaways
- The 4 tiers: smoke, sanity, regression, full — with target durations.
- How to keep smoke under 90 seconds and full regression under 30 minutes.
- The 1% flake budget rule and how to enforce it.
- CI cadence: what runs on PR, on merge, and nightly.
1. The 4-tier suite model
| Tier | Runs on | Target | Purpose |
|---|---|---|---|
| Smoke | every commit | < 90 s | build is not obviously broken |
| Sanity | PR open + push | < 5 min | changed area works |
| Regression | merge to main | < 30 min | no known area regressed |
| Full | nightly + release | < 2 h | edge cases, cross-browser, i18n |
2. Sizing each tier
Rule of thumb: smoke = 10-30 tests, sanity = 50-100, regression = 300-800, full = 1000-3000. Above those numbers, split by service or slice by tag. Parallelism is cheaper than pruning — a 3000-test full run at 20-way parallel finishes in 15 min on Playwright shards.
3. The 1% flake budget
Flake > 1% destroys trust in the suite. Enforce with a CI check: if a test failed once but passed on retry in the last 20 runs, quarantine it (tag @flaky, exclude from PR gate, page a QA owner). See our flaky-tests playbook for root-cause patterns. Google's flake research paper shows 1.5% flake as the empirical breakpoint.
4. CI cadence — what runs when
on: pull_request → smoke + sanity (targeted by changed paths)
on: push to main → regression
on: schedule 02:00 UTC → full (all browsers, all locales)
on: release-candidate tag → full + performance + securityTag-based selection keeps PR feedback fast: only run the @auth suite when src/auth/** changes. See our Playwright interview guide for tag-selection patterns.
5. Monthly suite review
Once a month, delete tests older than 6 months that never caught a bug (git-blame the last failure). This keeps the suite honest — dead tests silently drag CI time. Track suite health in a dashboard: pass rate, duration p95, flake rate, coverage delta.