Mike Bennett

Deliverable

Device coverage matrix

The hardware and browsers I test on, why each one is there, and what the matrix deliberately does not cover. Every entry is a device I own and run.

Sample deliverable. Written for this site against a fictional product with no client data and no confidential material.

Matrix

DeviceOSBrowsersForm factorTierWhy it is in the matrix
iPhone 16 Pro MaxiOSSafari6.9in · 440×956 pt · Dynamic IslandTier 1The current large iPhone. Covers the newest iOS behavior and the Dynamic Island and home-indicator safe areas that clip fixed-position checkout footers.
Samsung Galaxy A03sAndroid · One UI CoreChrome6.5in · 720×1600 pxTier 1Budget Android on Samsung’s skin. The slowest and most memory-constrained device in the set, so it is where timeouts, janky rendering and keyboard or autofill defects show first.
Windows DesktopWindows 11Chrome · Edge · FirefoxDesktop monitorTier 1The largest desktop share. Chrome and Edge share an engine, so Edge catches browser defaults and enterprise policy differences rather than rendering defects; Firefox covers Gecko.
Mac Mini MacBook AirmacOSSafari · Chrome · Edge · FirefoxExternal display · laptop displayTier 1The only place desktop Safari (WebKit) runs. Two screen classes, a large external display and a small high-density laptop panel, catch layout assumptions a single monitor hides.
iPhone SE (3rd gen)iOSSafari4.7in · 375×667 pt · home buttonTier 2The smallest viewport in the set. Anything that fits here fits everywhere; anything that wraps, clips or hides a primary button shows up here first.
iPad Air 11" (M2)iPadOSSafari11in · 820×1180 ptTier 2Full-size tablet. Tests the breakpoint between mobile and desktop layouts, plus portrait and landscape rotation and split-screen widths.
iPad Mini (6th gen)iPadOSSafari8.3in · 744×1133 ptTier 2Sits just above the common tablet breakpoint, so layouts that switch to the desktop view early are visible here and not on the larger iPad.
Ubuntu Server 26.04LinuxChrome · Edge · FirefoxDesktop · headlessTier 2Linux desktop browsers for rendering and font differences, and the machines that run the automation, the load tests and the hosted test environments.

Tiers

Tier 1
Full regression every release. A defect here blocks the release regardless of severity elsewhere.
Tier 2
Smoke plus targeted testing on changed areas. Full pass on major releases only.
Tier 3
Reactive. Tested when a defect is reported against it or when analytics show the segment growing.

Selection

Devices are not chosen by popularity. They are chosen to cover distinct failure surfaces: rendering engine (Blink, WebKit, Gecko), OS, manufacturer skin, screen class and hardware capability. Two devices that differ only in badge add nothing.

The right size for a matrix is the smallest set where every remaining device would fail in a way none of the others would. Safari on a Mac and Safari on an iPhone share an engine but not a viewport or a keyboard, which is why both are listed.

Linux

Linux does three jobs: desktop browser testing, running the automation and load tests, and hosting test environments and services. Ubuntu Server 26.04 is the stable host for all three.

First pass

The mobile viewports from Tier 1 and Tier 2 run as a Playwright layout check in the demo repository on every build. On each one the checkout page must not scroll sideways, and the Confirm button must sit inside the viewport and be the element a tap would actually hit.


DEVICES = [
    pytest.param("iPhone 16 Pro Max", 440, 956, 3, id="iphone-16-pro-max"),
    pytest.param("Galaxy A03s", 360, 800, 2, id="galaxy-a03s"),
    pytest.param("iPhone SE (3rd gen)", 375, 667, 2, id="iphone-se-3"),
    pytest.param("iPad Air 11-inch (M2)", 820, 1180, 2, id="ipad-air-11"),
    pytest.param("iPad mini (6th gen)", 744, 1133, 2, id="ipad-mini-6"),
]

This is Chromium emulation. It catches an unreachable button or a sideways scroll, nothing more. webkit rendering, keyboard, autofill and payment sheet behavior stay on the real devices above. The same suite is described on the automation framework page.

Not covered

  • Foldables. Genuinely different layout risk, but no device on hand, flagged as an open gap rather than quietly omitted.
  • Stock Android. The only Android device is Samsung, so a defect that reproduces there cannot be separated from the skin without borrowing a second handset.
  • Older OS versions. Each device runs the version it shipped with or was last updated to, not a spread of releases.
  • Safari on Windows or Linux, and Internet Explorer or legacy Edge. None are supported targets.
  • Emulators for anything involving camera, biometrics, payment sheets or network transitions. Those failures do not reproduce off real hardware.

The cut list matters as much as the matrix. It is the difference between coverage that was decided and coverage that just happened.