ScreenshotNeo

BlogGuides

How to Choose the Right Browser List for Cross-Browser Testing

Build a browser test matrix from your users, support promises, and product risks. Start with a practical engine baseline, then add targeted coverage.

By the ScreenshotNeo team4 October 20268 min read

Choose your browser test list from the browsers, operating systems, and devices your product promises to support and your users actually use. A useful automated starting point is Chromium, Firefox, and WebKit. Treat that as a baseline for distinct engines, not a universal checklist: add branded Chrome or Edge, specific versions, operating systems, and real mobile devices when your analytics, commitments, or technical risks justify them.

There is no evidence-backed browser list that fits every product. Use your own analytics and support history; global browser-share data cannot tell you which combinations matter to your users.

1. Define what “supported” means

Before configuring a test runner, write down the environments your team has committed to support. Check your public support policy, customer contracts, procurement requirements, accessibility or regulatory commitments, and support expectations. Make the commitment specific enough to act on: browser family or brand, operating system, minimum version policy, and mobile device expectations.

A test matrix is a way to verify that promise. It should not silently create a new support promise just because a tool can run another browser.

2. Use first-party evidence to choose coverage

Review product analytics and support records. Where available, segment active users and important journeys by browser, operating system, version, device, and geography. Look for both reach and impact: a less common environment may still deserve coverage if it is contractually required or associated with a serious defect.

  • Which environments appear in your active user base and high-value journeys?
  • Which combinations recur in support tickets or defect reports?
  • Do customers require particular browsers or managed enterprise configurations?
  • Do usage patterns vary by geography, device type, or user role?

A single global market-share table is not a substitute for this evidence. The right list depends on your product, its users, and the support it promises.

3. Start with browser engines, then add brands deliberately

For automated browser testing, Chromium, Firefox, and WebKit are a practical engine baseline. Playwright’s default test setup includes these three browser projects. They give you a starting point for catching differences across rendering engines, but your support policy and risk profile determine whether they are enough. See the [Playwright browser documentation](https://playwright.dev/docs/browsers) and [Playwright projects documentation](https://playwright.dev/docs/test-projects).

Coverage choice When it earns a place
Chromium Baseline coverage for Chromium-based behavior. Playwright’s default uses open-source Chromium.
Firefox Coverage for Firefox’s distinct browser engine and its behavior on the platforms you support.
WebKit Coverage for WebKit behavior, especially where your supported users and platforms make it relevant.
Branded Chrome Add when you need to validate actual Chrome behavior, enterprise policies, media codec behavior, or an explicit Chrome support requirement.
Microsoft Edge Add when branded Edge behavior, managed policies, or a support commitment matters. Playwright supports branded Edge channels.

Chromium is not always a perfect stand-in for branded Chrome or Edge. Playwright documents differences between its default headless Chromium shell and the newer headless mode in Chrome and Edge. If your defect or requirement depends on branded browser behavior, configure and test the branded channel that matters instead of assuming the baseline covers it.

4. Treat mobile coverage as a set of combinations

“Mobile” is not one browser target. Device model, operating system and version, browser, viewport, and touch or other input behavior may all affect the result. Playwright can emulate mobile and tablet devices; emulation is useful for broad checks, but it does not represent every behavior of a real device and operating system.

Add real-device coverage for combinations that have meaningful user activity, explicit support requirements, or risks that emulation does not represent. Before relying on a hosted grid, check its live browser, OS, and device matrix. Exact combinations and version aliases change. BrowserStack documents Playwright browser and OS selections in its [current Playwright matrix](https://www.browserstack.com/docs/automate/playwright/browsers-and-os). Its Selenium documentation describes browser, version, OS, OS version, and device selection; see the [Selenium browser and device guide](https://www.browserstack.com/docs/automate/selenium/select-browsers-and-devices).

Verify the environment a hosted run actually returned. BrowserStack notes that a Chrome for Testing request on a real mobile device may fall back to regular mobile Chrome.

5. Set an explicit browser-version policy

Choose versions based on your support promise and how often you run the suite:

  • Current stable: a sensible default for routine release regression.
  • Beta or upcoming: optional scheduled coverage to detect future browser changes early.
  • Older releases: keep them when actual user data, customer commitments, or support obligations justify the maintenance cost.

Keep Playwright current so its supported browser builds stay aligned with its current features and to help catch changes ahead of public browser releases. Playwright’s browser documentation recommends updating Playwright for this reason. With hosted services, verify that a requested version and OS combination is currently available; aliases such as latest and latest-1 are provider-specific.

6. Prioritize journeys by impact and technical risk

Run the environments that matter most against the journeys where a browser-specific failure would hurt users. Common risk areas include authentication, checkout or payment, file upload and download, media, complex CSS, browser APIs, and known defect reproductions. These are examples; use your own product’s failure history.

For example, if your application handles media, branded browser and codec behavior may deserve targeted coverage. If a layout bug has appeared only on a particular mobile OS, add that device and OS combination to a focused project. Record why each non-baseline environment is included so the matrix remains explainable as the product changes.

7. Keep pull-request feedback fast with tiered coverage

More projects mean more execution time, grid capacity, and maintenance. Keep blocking coverage focused on high-impact paths and environments. Run broader combinations nightly, before a major release, or when a change touches browser-sensitive code. Playwright projects can run all configured projects or select a particular project, so teams can separate core pull-request coverage from wider scheduled coverage. See [Playwright projects](https://playwright.dev/docs/test-projects).

  1. Run the core engine and highest-risk journey checks on each pull request.
  2. Run broader branded-browser, device, and version coverage on a schedule or before a release.
  3. Add targeted coverage when analytics, support tickets, a defect, or a new feature identifies a gap.
  4. Remove or revise environments when the support promise and evidence no longer justify them.

8. A practical decision checklist

  1. Write down the exact browser, OS, version, and device combinations you promise to support.
  2. Use first-party analytics and support records to find important user environments and journeys.
  3. Map those environments to engines and platforms; start automated coverage with Chromium, Firefox, and WebKit where supported.
  4. Add branded Chrome or Edge for real branded behavior, enterprise policy, codec-sensitive media, or explicit requirements.
  5. Add mobile emulation for broad checks and real devices where user reach or risk calls for device fidelity.
  6. Prioritize high-impact workflows and known browser-specific defects.
  7. Set stable, forward-looking, and older-version policies explicitly.
  8. Choose which checks block changes and which run on a schedule.
  9. Revisit the matrix when user patterns, commitments, browser support, or the product itself changes.

9. Common mistakes and how to fix them

Problem Why it happens Fix
The list is copied from a global browser-share chart. Market-wide usage does not show your product’s actual audience or commitments. Use product analytics, support tickets, and customer requirements to select environments.
Chromium is treated as identical to Chrome or Edge. Open-source Chromium and branded browser channels can differ, including in headless behavior and managed policies. Configure branded channels for requirements or defects that depend on them.
One emulated phone is called mobile coverage. It skips other devices, OS versions, browsers, and real-device behavior. Select combinations based on audience and risk; use real devices where emulation is insufficient.
Every possible project blocks every pull request. Coverage grew without considering feedback time and maintenance. Keep high-impact checks in the blocking suite; schedule wider coverage and target it to relevant changes.
A CI job requests a browser/device combination that is unavailable. Hosted provider matrices and aliases change. Check the live provider matrix and verify the environment returned by the run.
Old browser versions remain forever “just in case.” The team has no explicit version policy. Retain older versions only for demonstrated usage or a support commitment; otherwise document the stable and forward-looking policy.

10. Cost, reliability, and maintenance

Each additional browser, version, OS, and device combination adds execution time and maintenance. On a hosted grid it can also use more capacity. Spend that budget where it reduces real user or release risk: keep essential journeys and committed environments in the blocking suite, and run lower-frequency or exploratory coverage on a schedule.

Reliability depends on keeping the configured environment representative and available. Browser versions and hosted device combinations change, so check provider support before depending on a particular target. Keep the browser runner current, record the exact environment for failures, and distinguish an application defect from an unavailable or changed test environment before changing the product.

Or skip the browser setup

For a screenshot of a page in a browser environment, ScreenshotNeo is a website screenshot API and MCP server. It does not replace an interactive cross-browser test matrix, but it can produce repeatable page captures without you setting up a browser for that capture. See the ScreenshotNeo API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Cookie and consent banners, newsletter popups, and chat widgets are removed before the shot; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response identifies the page verdict and billing status. Its MCP server gives AI agents tools to take screenshots, get page information, and capture PDFs. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.

Sign up for 1,000 free screenshots a month, with no card.

FAQ

Which browsers should I test?

Begin with the engines and environments your users and support commitments require. Chromium, Firefox, and WebKit are a practical automation baseline; add branded channels and devices when evidence or risk calls for them.

Do three browser engines guarantee cross-browser support?

No. They are a useful starting point, but the operating systems, brands, versions, devices, and user journeys in your support promise may require more coverage.

Should I test beta browsers?

They can help reveal upcoming changes early. Schedule that coverage if it is useful, and keep release-blocking checks aligned with the versions you support.

How often should I revisit the list?

Review it when analytics, support patterns, contracts, browser availability, or product features change, and as part of release planning.