Continuous QA: Catch Client-Site Bugs on Every Deploy
Continuous QA is the practice of running quality checks automatically on every deploy, instead of once in a test sprint before launch. A continuous QA setup wires three layers into the release flow: fast automated checks on the handful of user paths that actually earn money, AI-driven exploratory passes that probe the app the way a real visitor would, and a one-click capture path so whoever finds a bug files a report a developer can act on. The payoff is timing — defects surface in minutes, while the change is still fresh in the developer's head, rather than weeks later when a client clicks the staging link and finds them first.
What is continuous QA, exactly?
Continuous QA borrows its shape from continuous integration. CI asks a narrow question on every commit: does this build and do the unit tests pass? Continuous QA asks the broader one: can a real person still do the things this site exists to let them do?
That means it runs on a trigger, not a calendar. Every merge to main, every preview deploy, every production release fires the same set of checks. Nobody has to remember to run QA, and nobody has to negotiate for time to do it — which is the usual reason pre-launch QA gets compressed into the last afternoon before handover.
Three layers do the work, and they catch different classes of bug:
- Deterministic path checks. Scripted end-to-end runs over the critical flows: load, sign up, log in, add to cart, submit the contact form, complete checkout. These catch hard breakage — a 500, a dead button, a form that silently drops submissions.
- Exploratory passes. Automated agents that browse without a script, following links, filling fields with awkward input, and resizing the viewport. These catch the bugs nobody wrote a test for, which is most of them.
- Human capture. When a client, a teammate, or a real user does hit something, a structured report — screenshot, console log, network trace, browser and viewport — lands in the tracker without a round of "can you tell me the steps?"
Skip any one layer and you get a predictable gap. Path checks alone only ever re-test what already broke once. Exploratory alone gives you noise without a baseline. Capture alone means your client is still your QA team.
Why does pre-launch QA keep missing bugs?
Because the assumption underneath it stopped being true. A pre-launch QA sprint works when code ships in large, infrequent batches: you freeze, you test the frozen thing, you release. Agencies and solo builders now ship small changes continuously, and AI coding tools have pushed that rate up further — a feature that used to take a week of typing now lands in an afternoon.
Verification did not speed up to match. That gap is the whole problem, and it shows up in three recognisable ways:
- The batch is never frozen. By the time QA finishes testing Friday's build, Monday's changes have already landed on top of it.
- Testing concentrates on the new thing. The feature just built gets attention; the checkout flow it quietly broke does not.
- Nobody owns the gap after handover. The site keeps receiving content edits, plugin updates, and third-party script changes long after the QA line item was invoiced.
Continuous QA does not make your code better. It shortens the distance between a defect being introduced and somebody knowing about it — which is the variable you can actually control.
What should a continuous QA pipeline check on every deploy?
Scope by revenue path, not by page count. A 200-page marketing site usually has four or five flows that matter; test those on every deploy and sample the rest weekly.
| Layer | Runs when | Fails on | Catches |
|---|---|---|---|
| Smoke checks | Every deploy, pre-promotion | Non-2xx on critical routes, uncaught console errors | Hard breakage, bad builds, broken redirects |
| Critical-path E2E | Every deploy to staging | A flow step that cannot complete | Regressions in signup, checkout, forms, auth |
| Visual diff | Every deploy | Pixel change above threshold on key templates | Layout collapse, CSS overrides, missing assets |
| Exploratory agents | Nightly, and before handover | Error states, dead ends, broken validation | Untested edge cases, mobile-only bugs |
| In-app capture | Continuously, in production | n/a — reports, not gates | Everything the other four missed |
Two of those are gates and should block a promotion. The rest are signals — treat them as a queue to triage, or you will teach your team to ignore red.
How do you set up continuous QA without a QA team?
Most agencies and solo builders have no dedicated tester, which is fine: continuous QA is mostly configuration, not headcount. A workable order:
- Write down the money paths. Five or fewer, in plain language. "A visitor submits the quote form and the agency receives the email." If you cannot name them, nothing downstream will be scoped correctly.
- Add a smoke check first. One run that hits every critical route and fails on a non-2xx or a console error. It is an afternoon of work and catches the most embarrassing class of bug.
- Automate the money paths next. One E2E test each. Use resilient selectors — a test bound to a CSS class will break the next time someone restyles a button, and a test that cries wolf gets muted. AutoSim exists for exactly this: tests that re-anchor themselves when the markup shifts instead of failing on a renamed div.
- Put exploratory coverage on a nightly schedule. Scripted tests only check what you thought of. Sims runs AI personas against the app to probe the paths you did not write down.
- Close the loop from production. Install a capture tool so the client's "it's broken" becomes a reproducible ticket. Snap turns a right-click into a report with the console, network, and environment attached.
- Convert every escaped bug into a test. Same day, no exceptions. This is the rule that makes the suite grow where your actual failures are rather than where you guessed they'd be.
If you want the full architecture rather than the setup order, the complete guide to AI QA covers how these layers fit together, and the AI QA workflow walks through a single change moving from commit to verified.
Continuous QA vs pre-launch QA: what actually changes?
| Pre-launch QA | Continuous QA | |
|---|---|---|
| Trigger | A date before handover | Every deploy |
| Scope per run | Everything, once | Critical paths, constantly |
| Who finds escaped bugs | The client, post-launch | The pipeline, pre-promotion |
| Cost shape | A billable block, then zero | Setup cost, then near-flat |
| Fails when | Release cadence outruns the test window | Checks go flaky and get ignored |
Note the last row. Continuous QA has its own failure mode, and it is not technical — it is a muted channel. A suite that reports red for reasons nobody believes is worse than no suite, because it consumes attention and returns nothing.
What should you measure?
Three numbers tell you whether continuous QA is working, and none of them is test count:
- Escaped defects. Bugs first reported by a client or end user, rather than caught by your own pipeline. This should trend down. It is the only metric your client implicitly tracks.
- Time from introduction to detection. Not time to fix — time to know. Continuous QA is a bet that shrinking this shrinks everything downstream.
- Flake rate. The share of failures that turned out not to be defects. Give it a hard budget: a check that fails twice without finding a real bug gets fixed or deleted that week. Self-healing tests cut the common cause, which is selectors drifting as the UI changes.
Where does continuous QA fall short?
It is worth being straight about the limits. Continuous QA is strong on did this break and weak on is this good. It will not tell you the copy is confusing, the pricing page buries the plan you want to sell, or the onboarding asks for a credit card too early. It also cannot verify things it has no oracle for — whether the email that got sent was the right email, whether the tax calculation matches the client's accountant.
And it does not replace reading your own diffs. Automated checks verify behaviour you can assert; a human reviewer catches the decision that was wrong before it became behaviour. Continuous QA buys back the time to do that review properly, which is most of its value.
Try it on your next deploy
Pick one client site. Name its money paths, add a smoke check and one E2E test per path, schedule a nightly exploratory pass, and install capture so production bugs arrive as tickets instead of Slack messages. That is a continuous QA baseline, and it is a day of setup — not a hire.
Scan your next client site free — Klavity runs Snap, Sims, and AutoSim against your staging or production URL and reports what it finds before your client does.
Key takeaways
- Run checks on every deploy, not on a date before handover.
- Scope tests by revenue path - five money paths, not 200 pages.
- Gate on smoke and critical-path E2E; triage visual and exploratory findings.
- Turn every escaped bug into a test the same day it is reported.
FAQ
What is continuous QA?
Continuous QA is the practice of running quality checks automatically on every deploy instead of in a single pre-launch test sprint. It combines scripted end-to-end checks on critical user paths, automated exploratory passes, and structured bug capture from production, so defects are detected minutes after they are introduced.
How is continuous QA different from continuous integration?
CI answers a narrow question on every commit: does the build pass and do the unit tests succeed? Continuous QA asks the broader one: can a real person still complete the flows the product exists for? It runs on the deployed application, not the build artifact.
Can you do continuous QA without a QA team?
Yes. Continuous QA is mostly configuration rather than headcount. A workable baseline is a smoke check over critical routes, one end-to-end test per revenue path, a nightly exploratory pass, and an in-app capture tool so production bugs arrive as reproducible tickets.
What should continuous QA check on every deploy?
Scope by revenue path, not page count. Gate promotion on a smoke check (non-2xx responses and console errors on critical routes) and end-to-end tests for each money path such as signup, checkout, and form submission. Treat visual diffs and exploratory findings as signals to triage rather than hard gates.
What is the main failure mode of continuous QA?
Flaky checks. A suite that reports failures nobody believes gets muted, and a muted suite is worse than none because it consumes attention without returning signal. Give flake a hard budget: a check that fails twice without finding a real defect gets fixed or deleted.
Catch bugs the moment a human sees them
Klavity: right-click bug reports, AI personas that review your product, and self-healing tests.
Get started free