A browser test matrix is a set of user tasks across engines, input modes, and devices, not a collection of screenshots. Rendering can look identical while focus, composition, pointer capture, scrolling, download, or permission timing behaves differently. Automated checks can cover stable contracts; actual devices and assistive technology still matter for paths tied to hardware and operating-system behavior. The matrix should reflect the product audience and risk, then shrink or grow as evidence changes.
Cross-Browser Input and Device Contracts
Working case
A reviewer updates case 62 on a laptop and an older phone. Desktop pointer tests pass. On the phone, an on-screen keyboard covers the final Save control; in a keyboard-only run, focus jumps to a removed element after a filter changes; during East Asian text composition, an input handler submits an incomplete note. A screenshot suite misses all three. The release team needs a task path: open the case, enter a note, choose a decision, save, and confirm the server revision in the supported environments.
Implementation boundary
function mustRunSaveJourney(target) {
return target.supported && (target.engineGate || target.deviceBoundary);
}
console.log(mustRunSaveJourney({ supported: true, engineGate: false, deviceBoundary: true }));
// Output: trueDefine observable outcomes for each task: a valid server revision, a visible error on failure, and preserved user input when the save cannot complete. Cover representative browser engines, mobile and desktop, keyboard and pointer or touch, and any required screen-reader combinations. Add a composition-state test for text entry and a visual-viewport test when the keyboard appears. Use automation for deterministic focus order, network faults, and form state, while reserving real-device sessions for permission prompts, platform controls, and assistive-technology behavior. Record exact browser and OS versions with failures. Do not convert one passing emulator run into a device claim.
Cost and boundaries
A full Cartesian product of engines, devices, input methods, and network states is too large. Choose a risk-weighted set: every critical save path on each supported engine, then targeted combinations for known platform boundaries. If there are e engines and t critical tasks, a base pass is O(e times t); add focused tests for hardware-specific behavior rather than every possible pair. Keep test fixtures small enough to run per release, and inspect flaky tests as evidence of timing or state ownership problems instead of hiding them with retries.
Failure trace
Enter a multilingual note while composition is active and press a shortcut; the app must not submit partial text. Resize the visual viewport with an on-screen keyboard and keep Save reachable. Change a filter while the focused card disappears and move focus to a predictable destination. Simulate a delayed save response after the user switches cases, then reject the stale update. Run the same task through a screen reader and record the announced status. Repeat on the lowest supported device, observing input delay and memory pressure.
Verification
- The save result is verified against server state.
- Keyboard and composition paths retain correct input.
- Actual device checks cover platform-bound behavior.
Practice drill
Write a matrix for the case-save journey with three browser engines, one embedded web view, two input modes, and one low-end phone. Pick a small release gate instead of every combination. For each row, capture task result, browser version, input method, server revision, and any focus or announcement failure. Turn one observed problem into a regression check and retain a manual device check where automation cannot reproduce it reliably.
Decision note
The release gate should prove that people can finish the task, not merely that the page renders.
Common Mistakes
- Treating screenshots as interaction tests.
- Testing only the newest desktop engine.
- Retrying flaky focus tests until they pass.
Related lessons
Progressive Browser Compatibility; Feature Probes and Functional Fallbacks; Polyfill Cost and Target Browser Policy; Capability Rollout and Fallback Retirement; Dialog Focus and Interruption Boundary; Visual Viewport, Keyboard, and Focused Input.
Connected practice
Build Project: progressive case export release and review Web Development: components and compatibility quiz.
