Should I test that?

Should I test in every browser?

Verdict

Test it differently

Watch each browser in production instead of testing every browser and version: record errors and finished main flows per browser, alert when one browser falls below its usual rate, and roll releases out in stages.

Why

Do not test every browser and version; watch each browser in production instead. My typical case is a customer-facing web app that the team builds in Chrome. Blast radius is users, because a break in one browser stops everyone who uses it, and Change frequency is regularly, because the app changes about once a month. Detectability is eventually, because nobody on the team opens Safari before merging, and users who meet a dead button leave without naming their browser. Reversibility is with-effort: a script that fails in one engine can save forms with missing fields, and those records need a repair. Test cost is prohibitive, because Safari runs only on Apple hardware and old iOS versions do not install on a current iPhone, so rule R4 gives Test it differently.

When the decision changes
WhenDecisionWhy
The main flows already have a Playwright suite, and your analytics show visitors in Chrome, Safari and FirefoxTest: run the suite in Chromium, Firefox and WebKit projects on every pull requestTest cost falls to moderate: three engines cover the browsers built on them, and one config change reuses the existing tests
Buyers pay at checkout in Safari on an iPhoneTest mandatory: run the checkout test in Safari on an iPhone or in the iOS Simulator before each releaseBlast radius rises to money and Reversibility to costly, because a lost sale does not come back; Test cost falls to heavy, because one flow runs in one browser
A customer contract lists the browsers and versions your product must supportTest mandatory: run the main flows in each listed browser before every release and keep the resultsBlast radius rises to safety-or-legal, because a break breaks the contract, and Test cost falls to heavy, because the list is short and fixed
An internal tool that staff open in the browsers the company installs, changed a few times a yearDo not test other browsers: name the supported browsers and fix what colleagues reportBlast radius falls to internal, Change frequency to rarely and Detectability to same-day, because colleagues report a break that day

What breaks if you don't test

A full-screen panel sized with 100vh hides its button under Safari's toolbar on an iPhone, or a form calls a browser API that Safari implements differently. Users of that browser give up, and support hears about it weeks later, if at all.

What you lose if you over-test

A matrix of every browser and version multiplies each suite run by the number of combinations, and each engine adds its own timing failures. Old Safari versions need old iPhones or a paid device cloud. A red run in an old Firefox gets rerun until it passes.

What to do instead

  1. Record front-end errors and finished main flows per browser family and major version, and alert when one browser falls below its own usual rate.
  2. Roll releases out in stages, and keep the previous build ready to redeploy.
  3. Pick targets from your analytics with Browserslist: > 1% in my stats lists the browsers your visitors use.
  4. Test one browser per engine: Chrome and Edge build on Blink, Firefox on Gecko, Safari on WebKit. If the main flows have an end-to-end suite, run it in Playwright's Chromium, Firefox and WebKit projects. Playwright's WebKit is not branded Safari, so the reviewer opens a changed layout in Safari on an iPhone before release.

When the answer changes

  • Money moves in the flow that can break, as in checkout.
  • A contract names the browsers you must support.
  • Your main flows already have an end-to-end suite.

Real incident + Code example

The button under Safari's toolbar

On a scheduling product I worked on, the last signup step on phones was a panel with height: 100vh and the Create account button at its bottom. vh measures the page with the browser toolbar hidden, as MDN explains, so in Safari on iPhone the toolbar covered the button, and the panel did not scroll. Chrome's device emulation and Playwright's iPhone profile draw no toolbar, so both showed the button. Nobody wrote to support. Sixteen days later the weekly funnel showed that iPhone visitors finished signup about a third less often. The fix was height: 100dvh, plus this query as an hourly alert:

-- Signup finish rate per browser: last 7 days against the 28 days before.
-- A returned row fires the alert: one browser dropped 20% below its own baseline.
WITH rates AS (
  SELECT browser,  -- family and major version, such as 'Mobile Safari 17'
         created_at > now() - interval '7 days' AS recent,
         count(*) FILTER (WHERE step = 'finished')::numeric
           / nullif(count(*) FILTER (WHERE step = 'started'), 0) AS finish_rate
  FROM signup_events
  WHERE created_at > now() - interval '35 days'
  GROUP BY browser, recent
)
SELECT r.browser, r.finish_rate AS last_7_days, b.finish_rate AS baseline
FROM rates r
JOIN rates b ON b.browser = r.browser AND NOT b.recent
WHERE r.recent
  AND r.finish_rate < 0.8 * b.finish_rate;

FAQ

Should I test my website against all browsers and versions?

Do not test your website against all browsers and versions, because old Safari versions alone need old iPhones or a paid device cloud. Run the main flows in Chromium, Firefox and WebKit, and alert on finished flows per browser.

Do I still need to test in both Chrome and Safari?

Yes, Chrome and Safari need separate test runs, because Chrome left WebKit for its own Blink engine in April 2013, as the Chromium blog announced. Run the main flows in Chromium and WebKit. Chrome on iPhone uses WebKit, because App Store guideline 2.5.6 requires WebKit unless Apple grants an alternative engine, which it offers only in the EU and Japan.

Is Playwright's WebKit the same as Safari?

Playwright's WebKit is not Safari: the Playwright browsers page says it is built from the WebKit main branch with Playwright's own patches, and Playwright cannot drive branded Safari. Checks of Safari's own interface, such as its iPhone toolbar, need Safari on a device or in the iOS Simulator.

Which browsers should I test my website in?

Test your website in the engines behind the browsers in your analytics: Blink for Chrome and Edge, Gecko for Firefox, and WebKit for Safari and for Chrome on iPhone.