How to Build a Cross Browser Test Matrix Without Buying a Grid
A practical way to pick which browser and OS combinations actually deserve a permanent slot in your test matrix, using your own analytics.

A QA lead at a mid sized retailer once counted forty two browser and OS combinations listed on a vendor's capability page and felt obligated to test all of them before every release. Nobody on that team had time for that, so the checkout suite quietly shrank to whatever the last person remembered to click through, on whatever browser happened to be open. That is the ordinary failure mode here: the matrix grows because a vendor's page makes it look mandatory, then a team without unlimited hours quietly ignores most of it. This post is about picking the four or five combinations that are actually worth a permanent seat in your suite, and where that decision needs to live once you've made it.
Why the same page looks different in two browsers
The problem is not that browsers have different logos. It is that each browser ships its own rendering engine and its own implementation of web APIs, so the same HTML, CSS and JavaScript can produce different layouts, different timing, and occasionally different results. A CSS grid that lines up perfectly in one engine can wrap oddly in another. A date picker built on a browser API can behave one way in one engine and throw a quiet error in another. None of this is a branding issue. It is an engineering issue, and it is why the checkout page that was fine in the release demo can still fail for a real customer an hour after launch.
Deriving the matrix from your own analytics, not a vendor's list
The fix is to stop asking "which browsers exist" and start asking "which browsers our actual users are on right now." Pull your analytics for the last 60 to 90 days and rank browser and OS combinations by traffic share. Most products find the distribution is steep: two or three combinations carry 90% or more of sessions, and the rest is a long tail of single digit percentages.
The real decision is where to draw the cut off line, and it has to be answered on purpose rather than left implicit. A few ways teams frame it:
- Set a floor, for example any combination under 2% of sessions does not get a permanent slot in the matrix.
- Weight by revenue rather than raw traffic if checkout completion matters more than page views.
- Add a combination back in deliberately if support tickets show it is disproportionately buggy even at low traffic.
Whatever floor you pick, write it down. "We test the top four combinations by revenue share, reviewed every quarter" is a decision a new hire can understand in one sentence. "We test whatever seems relevant" is not a decision at all, and it is how the vendor's forty two combinations become the unspoken default.
Why the matrix belongs on the case, not in someone's head
Once four combinations are chosen, the easy mistake is to leave that decision as tribal knowledge: "we all know we test on Chrome and Safari." That knowledge leaves the room whenever the person who knows it takes a vacation or leaves the team. The combination needs to be written as a precondition on the test case itself, so a run record answers the question "which browser produced this result" without anyone asking around.
A case with an explicit browser precondition also makes a failed run more useful. If a tester logs a bug against "checkout," a triage engineer has to reproduce it blind. If the case states the precondition as "Safari 17 on iOS 17, mobile viewport," the triage engineer starts from the same conditions the tester used, and a lot of "I can't reproduce this" tickets disappear.
Naming the grid providers honestly
It's worth being direct about where the actual browsers come from. Vendors like BrowserStack, Sauce Labs and LambdaTest exist specifically to supply real and virtual browsers and devices on demand, and that is a genuinely useful thing to buy when your matrix, once trimmed down, still needs infrastructure to run on. Tesbo does not supply browsers, devices or execution capacity of any kind. What it does is hold the test case, the precondition, and the run history, so the decision about which combinations matter stays documented next to the work it governs, whichever grid or manual setup actually executes the check.
The checkout case, written with the browser stated up front
Here is what that looks like as an actual case, for a payments checkout flow that had previously broken only on one specific combination.
Case: Guest checkout completes with a saved shipping address Precondition: Safari 17 on iOS 17, mobile viewport, guest session with one saved address. Steps: add item to cart, proceed to checkout, select saved address, confirm payment method, submit order. Expected result: order confirmation page loads within 3 seconds and a confirmation email is queued.
That single line of precondition is the difference between a case that means the same thing to everyone who reads it, and a case that quietly meant "whatever I had open" the day it was written. When that Safari only bug reached a real customer at a mid size shop last spring, the postmortem finding was not "we need more browsers." It was "we never wrote down which browser we'd actually decided mattered," and the matrix had been sitting in one engineer's head the whole time.
Questions people ask
How many browser and OS combinations should a typical product test?
Most teams land on somewhere between three and six combinations once they cut the list down using their own analytics rather than a vendor's full capability list.
Should mobile browsers be treated as separate combinations from desktop?
Yes. Mobile Safari and mobile Chrome behave differently enough from their desktop counterparts, and from each other, that they deserve their own line in the matrix if they carry meaningful traffic.
How often should the matrix be reviewed?
A quarterly review against fresh analytics is a reasonable cadence for most products, with an off cycle review triggered by a major traffic shift, such as a new mobile app driving in browser traffic down.
Does Tesbo run these browser combinations for us?
No. Tesbo does not provide browsers, devices or execution capacity. It documents the test case, the precondition and the run history, and pairs with whichever execution setup, grid vendor or manual process, actually runs the check.
What if support tickets show bugs on a browser outside the chosen matrix?
Add it back in deliberately, and note why in the case history, rather than letting the matrix quietly balloon back toward the vendor's full list.
Try Tesbo, or get the next useful idea
Start building your testing workflow now, or get one practical email a month.
Start freeOne email a month
What we shipped, what we learned, and the occasional infographic worth pinning. Unsubscribe in one click.


