How to QA a Website Change So a Regression Cannot Slip Through

Most website QA is a smoke test the builder runs on their own desktop. That is exactly how a mobile regression reaches production. Trustworthy QA is mechanical, cross-device, and phone-first, and the person who built the change is the last one who should sign off on it.

Yasser Soliman

Yasser Soliman

Fractional Head of WebOps

Published

Updated

6 min read

The person who built a website change is a bad judge of whether it is safe to ship. Not because they are careless. They already know what moved, where to click, and the one screen where it works: their own laptop, at their own resolution, in the browser they open first every morning.

The Desktop Smoke Test Is Where Regressions Hide

A quick look at a change on a 27-inch monitor passes almost anything, because the person checking already knows what moved and where to look. Software sites still send most of their traffic to desktop, so a desktop-only glance feels safe. It is not. It is testing the one environment least likely to expose what actually broke.

Most B2B SaaS marketing teams still see more desktop visitors than mobile ones, and that is exactly what makes the desktop smoke test feel adequate. In 2023, desktop drove 69.5% of traffic to software-industry websites against 30.5% mobile, an outlier compared with the consumer categories where mobile dominates, according to Contentsquare’s benchmark data[1]. But that mobile share has been climbing fast. It moved from 27.5% to 30.5% in a single year. Close to a third of the audience, and growing, is looking at the site on a device the QA process never opens.

Desktop bias compounds a second problem: familiarity. The person reviewing a change usually built it. They know which button moved, which section grew, which spacing shifted on purpose. A stranger does not carry that context, and neither does a phone held at arm’s length between meetings. “Looks fine to me” is not a QA gate. It is a confirmation that the person looking already believed it would look fine before they looked. Trustworthy QA is mechanical, cross-device, and phone-first, and the person who built the change is the last one who should sign off on it.

Screenshot Diffs Beat Opinions

Opinions do not scale and they do not repeat. A screenshot diff does both. Capture the page at a fixed set of viewports before a change and after it, compare the same regions across every viewport in that set, and only pass the change once most of those comparisons agree nothing broke. “Looks fine” becomes a number, and a number can fail.

The cost of skipping this step is not abstract. In 2022, the Consortium for Information & Software Quality estimated the cost of poor software quality in the US at $2.41 trillion, with $1.52 trillion of that sitting in accumulated technical debt built from defects nobody caught before they shipped[2]. Most of that figure is not dramatic outages. It is the slow tax of small regressions nobody flagged, compounding release after release, on sites where the review process was a person and a glance.

A screenshot-diff quorum is cheap insurance against that tax, and it is not complicated to build. Render the page at a fixed grid of viewports, before the change and after it, and count how many of those cells show an unexplained difference. Set a quorum threshold, agreement across most of the grid, for example, and the change fails automatically once too many cells moved somewhere nobody planned. The check no longer cares who built the change or how confident they are about it.

The screenshot-diff quorum A three-row grid, one row per fixed viewport. Each row shows a before capture and an after capture of the same page plus a verdict. Tablet 768 and desktop 1440 are identical before and after and pass clean. Phone 375 shows a shifted element in the after capture and is flagged as an unexplained regression. The quorum needs three of three cells clean; only two are clean, so the change fails automatically. Illustrative. The screenshot-diff quorum Same page, fixed viewports, before vs after. Most cells must agree nothing broke. VIEWPORT BEFORE AFTER VERDICT Phone 375 px ✗ Unexplained diff Tablet 768 px ✓ Clean Desktop 1440 px ✓ Clean Quorum 2 / 3 clean · below threshold · the change fails on the phone regression. Illustrative · yassersoliman.com · screenshot-diff quorum

Phone-First Verdicts

Review the phone screenshots first, not last. By the time a reviewer finishes checking several desktop breakpoints, attention is already spent, and the mobile pass turns into a formality. Reversing the order fixes the problem: catch the regression where it is most likely to hide, then confirm desktop still holds with the harder work already done.

Order matters more than most QA checklists admit. Attention is a depleting resource, and a reviewer who has already confirmed five desktop views look right walks into the mobile check with less patience and lower suspicion. Checking phone screenshots first forces the sharpest scrutiny onto the environment most likely to reveal a Core Web Vitals regression nobody meant to ship.

Phone-first review order Two review sequences shown as three nodes each with an attention meter that drains left to right. Desktop-first, the trap: Desktop 1440 at 100 percent attention, Tablet 768 at 60 percent, Phone 375 at 25 percent, with the phone flagged because the regression hides where attention is lowest. Phone-first, the fix: Phone 375 at 100 percent, Tablet 768 at 65 percent, Desktop 1440 at 40 percent, with the phone flagged good because the sharpest attention now lands on the riskiest surface. Illustrative. Attention runs out. Spend it where the bug hides. Review order decides how much scrutiny the phone gets. DESKTOP-FIRST · the trap Desktop 1440 full attention · 100% Tablet 768 fading · 60% Phone 375 on fumes · 25% The regression hides on the phone, checked with the least attention left. PHONE-FIRST · the fix Phone 375 sharpest look · 100% Tablet 768 fading · 65% Desktop 1440 last, and fine · 40% The riskiest surface now gets the sharpest attention. Desktop confirms with less at stake. Illustrative · yassersoliman.com · phone-first review order

The revenue case for getting this order right is not theoretical. In 2022, Rakuten 24 ran a month-long, 50/50 A/B test measuring the business impact of a Core Web Vitals-optimized version of its site against the original. The optimized version produced a 53.37% increase in revenue per visitor and a 33.13% increase in conversion rate[4]. A layout shift or a slow interaction that only shows up on a phone is not a cosmetic bug. It is a conversion problem wearing a QA problem’s clothes.

A Change Nobody Can See Is Not a Fix

A deploy log is not proof a fix worked. If the screenshot diff for the affected page shows nothing moved, the change did not ship where it was supposed to, whatever the release notes claim. Trust the pixels a visitor actually sees, not the commit that says it touched them.

Every QA process needs a floor rule for its own blind spots, and this is the one that catches the quietest failures: a cache layer serving a stale build, a feature flag left off in the environment being tested, a CSS selector that silently stopped matching after a template refactor. None of these throw an error. They show up as a page that looks exactly like it did before the change, because in every way a visitor can see, it did.

The fix is a human-visible-change requirement, checked before anything else: does the screenshot diff for the pages this change should have touched actually show a difference? If it does not, the deploy did not do what it was supposed to, no matter how many checkmarks turned green in the pipeline. I run a set of invariant checks alongside every visual diff, plain structural assertions about what should always be true on a page (a nav that always renders, a form that always submits, a price that never shows as $0), and a change only clears review once every invariant holds and the visible diff actually matches what the change was meant to do. A passing pipeline with unchanged pixels is not a pass. It is a different failure wearing a green light.

A green pipeline with unchanged pixels Two stacked paths for the same deploy. Left, fails silent: pipeline all green, diff not checked, pixels unchanged, verdict filed as shipped and wrong. Right, fails loud: pipeline all green, a gate requiring the diff to differ and invariants to hold, an empty diff fails, verdict blocked before production and caught. Illustrative. A green pipeline with unchanged pixels The deploy says shipped. The screenshot diff says nothing moved. Trust the pixels. PIPELINE ONLY · fails silent ✓ Build ✓ Deploy ✓ Tests Screenshot diff never checked Pixels a visitor sees: unchanged ✗ Filed as shipped · wrong PIPELINE + PIXEL GATE · fails loud ✓ Build ✓ Deploy ✓ Tests Gate: diff must differ, invariants hold Empty diff fails the pass ✓ Blocked before prod · caught A passing pipeline with unchanged pixels is not a pass.It is a different failure wearing a green light. Illustrative · yassersoliman.com · human-visible-change gate

Write the Acceptance Criteria Before You Build

Define what “done” means before a single line changes, as a numbered list a reviewer can check against, not a memory of what got discussed on a call. No list means no real sign-off, only a vibe check dressed up as one.

Acceptance criteria written after the fact describe what shipped, not what was supposed to ship, and the two drift apart more often than teams like to admit. Writing the list first turns QA into verification against a fixed target instead of a negotiation about whether the current result feels close enough to count.

Write the criteria first, or they drift to fit the build Two timelines. Written after, drift: a build then ship then write-criteria sequence, with the written target sliding right to match whatever shipped, opening a gap from what was actually needed. Written first, verification: lock the criteria first, then build, then QA checks against the fixed target, which stays put. Illustrative. Write the criteria first, or they drift to fit the build Criteria written after the fact describe what shipped, not what was needed. WRITTEN AFTER · drift Build Ship Write criteria what was needed what got written criteria drift to fit whatever shipped WRITTEN FIRST · verification Write criteria, lock target Build QA vs fixed list target locked verified against the target that never moved Illustrative · yassersoliman.com · acceptance-criteria drift

This gets harder to skip as change volume rises. In September 2025, Google’s DORA research team, drawing on a survey of nearly 5,000 technology professionals, found that AI-assisted development has a negative relationship with software delivery stability unless it is paired with strong automated testing, mature version control, and fast feedback loops[3]. Faster changes without a written definition of done do not average out to more good changes. They average out to more changes nobody defined success for in advance, discovered instead by whoever visits the page next.

A short acceptance-criteria list survives contact with the actual work in a way a hallway conversation never does:

ChangeAcceptance criteria
New pricing table layoutRenders correctly at 375px, 768px, and 1440px; all four tier prices visible without horizontal scroll; CTA buttons stay tappable at a 44px minimum height
Updated hero copyNew headline does not wrap past two lines on mobile; CTA stays above the fold on a 667px-tall viewport; no layout shift from the font swap
New blog CTA blockFires the correct tracking event on click; does not conflict with the schema and crawl checks already covered elsewhere; does not push the FAQ block below the fold

None of this replaces judgment. It replaces guessing at what judgment already decided, three days after everyone in the room has moved on. The same discipline behind the business case for site speed and a full performance audit applies here. QA that is mechanical and phone-first is not a slower process. It is the same speed with a floor under it.

Sources

  1. Contentsquare, SaaS Website Best Practices: 5 Metrics for Business Growth – 2024 Digital Experience Benchmark data on the software industry (2023 traffic); desktop drove 69.5% of software-site visits vs 30.5% mobile, up from 27.5% mobile the year before
  2. CISQ, The Cost of Poor Software Quality in the US: A 2022 Report – Authored by Herb Krasner for the Consortium for Information & Software Quality; total US cost of poor software quality estimated at $2.41 trillion, including $1.52 trillion in accumulated technical debt
  3. Google Cloud, Announcing the 2025 DORA Report – State of AI-Assisted Software Development, published September 23, 2025; survey of nearly 5,000 technology professionals; AI adoption has a negative relationship with delivery stability absent strong automated testing, mature version control, and fast feedback loops
  4. Google web.dev, How Rakuten 24’s Investment in Core Web Vitals Increased Revenue Per Visitor by 53.37% – August 2022 case study; month-long 50/50 A/B test measured via the web-vitals RUM library; the Core Web Vitals-optimized version produced a 53.37% increase in revenue per visitor and a 33.13% increase in conversion rate

Seeing these patterns at your company?

Book a free WebOps Diagnostic. I'll review your site before the call and share specific observations.

Book a Free Call →

Frequently Asked Questions

Yasser Soliman

Written by Yasser Soliman

Fractional Head of WebOps

I've spent 5+ years embedded in marketing teams at B2B SaaS companies. I own the marketing website — performance, analytics, SEO, integrations — so your team ships without bottlenecks.

Let's talk about your site.

Book a free WebOps Diagnostic. Send me your URL and what you'd like me to look at — I'll come prepared with specific observations.

Book a Free Call