Awesome Test Case Design60 checklists
Compatibility Review
Compatibility Review Checklist
“Works on my machine” is not a strategy. Use this checklist to define tiers, pick a minimal passing matrix, and capture evidence that your feature works across devices, browsers, locales, input modes, and networks.
TL;DR
- Define tiered support (T0/T1/T2) for devices, browsers, OSes, locales, and networks.
- Test MAE for compatibility: Main (T0), Alt (T1 variations), Exception (degraded/unsupported).
- Cover input modes (keyboard, mouse, touch, SR), text scaling, RTL, dark mode, and offline/captive portals.
- Capture evidence: screenshots, videos, HARs, device/UA strings, and OS/browser versions in every PR.
Links:
- Compatibility Matrix (master list) →
../50-non-functional/compatibility-matrix.md
- Accessibility →
../50-non-functional/accessibility-a11y.md
- i18n/l10n →
../55-domain-playbooks/i18n-l10n.md
- Mobile-first →
../55-domain-playbooks/mobile-first-flows.md
- Performance p95/p99 →
../50-non-functional/performance-p95-p99.md
Preconditions
- Tier policy agreed (T0 = must pass; T1 = best effort; T2 = community-supported).
- Matrix defined: devices, browsers, OS versions, locales, networks, assistive tech.
- Test data and accounts seeded (multi-tenant, roles, multiple locales).
- Tools chosen: real devices + emulators/simulators; browserstack/saucelabs (or lab).
- Instrumentation ready: logs include device/UA/version; traces capture platform.
1) Tiers & scope
T0 (must pass)
- Latest Chrome (desktop), Safari (iOS), Chrome (Android), Firefox ESR (desktop)
- iOS current-1, Android current-2 major versions
- Windows 11, macOS current-1
- Locales: en, fr, ar (RTL), ja, zh-Hans
- Networks: Wi‑Fi, 4G, captive portal entry
T1 (strong coverage)
- Edge (Chromium), Safari (macOS), Android OEM WebView latest-1
- Additional locales of business relevance
- 3G throttling; high-DPI screens; reduced-motion
T2 (opportunistic)
- Older Android WebView -2; niche browsers
- Tablet portrait/landscape edge cases
Adjust to your product. Keep T0 small and defensible.
2) Surfaces to exercise
- Web (desktop & mobile): layouts, pointers, scroll/virtualization, media, clipboard.
- Native mobile (iOS/Android): startup, deep links, permissions, background/foreground, text scaling.
- WebView/in-app browsers: SSO/3DS flows, cookie/storage partitioning.
- Email/SMS surfaces: links, previews, deep link parameters.
- APIs/SDKs: client lib versions across platforms.
3) Input & interaction modes
- Keyboard (tab, shift-tab, arrow keys, escape), focus visible.
- Mouse/trackpad (hover, drag, context).
- Touch (tap, long press, pull-to-refresh), hit targets ≥ 44×44 px.
- Screen readers: NVDA/JAWS (Windows), VoiceOver (iOS/macOS), TalkBack (Android).
- OS text scaling / Dynamic Type ×1.3.
- RTL layout mirroring; numbers remain LTR where appropriate.
- Dark mode tokens and contrast.
4) Networks & offline
- Offline (airplane mode) — cache behavior, queued writes, conflict resolution.
- Captive portal — detect and prompt; don’t loop retries.
- Throttled 3G/4G — progress indicators, timeouts, retries/backoff.
- Proxy/VPN — SSL/TLS and redirects behave.
- Push notifications — token lifecycle, quiet hours (if applicable).
5) Evidence to collect (attach to PR)
- Screenshots/videos per tier for key screens (light/dark, LTR/RTL).
- Device/OS/Browser versions and UA strings.
- HAR files or waterfalls for slow screens.
- Logs/traces with correlation IDs showing platform tags.
- Accessibility report (axe/pa11y) for web; screen reader notes.
- Network profiles used (e.g., 3G profile, offline, captive portal).
6) Web — per-browser checklist
Browser: <Chrome|Edge|Safari|Firefox>
OS: <Windows|macOS|iOS|Android>
Viewport: <mobile|tablet|desktop>
[ ] Layout stable across breakpoints; no overflow/clip
[ ] Focus order logical; keyboard-only operable
[ ] Hover/focus/active states differentiate; pointer + touch OK
[ ] Copy/paste and composition (IME) works (ja/zh)
[ ] File upload/download flows OK
[ ] Clipboard & drag-drop (if used) behave
[ ] Media (audio/video) controls accessible
[ ] Storage (cookies/localStorage/indexedDB) available; quota respected
[ ] Third-party/cross-site cookie policies handled (WebView/ITP)
[ ] Dark mode parity; contrast ≥ WCAG
[ ] RTL mirrored; numbers LTR where appropriate
[ ] Performance within budget; long tasks minimal
[ ] Errors map to message IDs; no unhandled exceptions in console
7) Native mobile — iOS/Android checklist
Platform: <iOS|Android> Version: <x.y> Device: <model>
[ ] Cold/warm start within budget (p95)
[ ] Deep links/universal/app links route to exact state
[ ] Back gesture parity; safe areas respected (notches/home)
[ ] Dynamic Type / Font size ×1.3; no clipping
[ ] Dark mode parity; icons and illustrations adapt
[ ] Permissions denied: graceful fallback; Settings path works
[ ] Offline cache; queued writes replay; conflicts handled
[ ] WebView flows (SSO/3DS): return path correct; no duplicate action
[ ] Push notifications: privacy text; quiet hours honored
[ ] Sensors (camera/location) behave with deny/revoke
[ ] Logs/traces include device, os_version, locale, timezone
8) Localization & scripts
- Pluralization and grammar via ICU; no string concatenation.
- Long text expansion ×1.3 survives; CJK line breaks OK.
- RTL mirrored; bidi isolation for mixed content.
- Locale negotiation consistent (URL/cookie/
Accept-Language
). - Numbers, dates, currency format per locale; time zones respected.
9) Visuals & rendering
- Retina/high-DPI assets; SVG where possible.
- Fonts subsetted; fallback stacks include target scripts.
- Icons mirrored in RTL; avoid text baked into images.
- Animations honor prefers-reduced-motion.
10) Degradation & unsupported states
- Show browser unsupported banner only when necessary; provide next steps.
- Brownouts: disable heavy features on old devices; communicate clearly.
- Fallback to server rendering when JS disabled (where feasible).
- Track unsupported usage with telemetry (no PII).
MAE Scenarios (compatibility)
COMP-001 Main — T0 web browsers pass
- Expected: critical journeys clean on Chrome/Firefox/Safari; evidence captured.
- Oracles: screenshots (LTR/RTL, dark), axe report, HAR for slow page.
COMP-002 Alt — iOS Dynamic Type ×1.3 + dark mode
- Expected: no clipping/overlap; focus order sane; icons mirrored.
- Oracles: device screenshots; a11y tree inspection.
COMP-003 Alt — Android WebView latest-1 with 3DS
- Expected: return path to app; single charge; idempotency honored.
- Oracles: PSP events; app logs; replay proof.
COMP-101 Exception — Captive portal network
- Expected: portal detection; user prompted; retries limited; clear messaging.
- Oracles: network logs; retry/backoff metrics.
COMP-102 Exception — RTL + screen reader
- Expected: proper mirroring; numbers LTR; SR announces labels and errors.
- Oracles: SR transcript; contrast snapshot.
Review checklist (quick gate)
- T0/T1/T2 tiers defined and documented
- Matrix covers devices/browsers/OS/locales/networks/assistive tech
- Input modes tested (keyboard/mouse/touch/SR)
- Text scaling, dark mode, RTL verified
- Offline/captive portal/network throttling tested
- WebView/SSO/3DS edge cases handled
- Evidence attached (screens, videos, HARs, logs)
- Perf budgets not violated on target devices
- Any unsupported combos have clear messaging + telemetry
CSV seeds
Browser matrix (example)
tier,browser,version,os,viewport
T0,Chrome,latest,Windows 11,desktop
T0,Firefox ESR,latest,Windows 11,desktop
T0,Safari,latest,iOS,mobile
T0,Chrome,latest,Android,mobile
T1,Edge,latest,Windows 11,desktop
T1,Safari,latest,macOS,desktop
T1,WebView,latest-1,Android,mobile
Device matrix
tier,platform,model,os_version
T0,iOS,iPhone 14,17.x
T0,Android,Pixel 7,14.x
T1,Android,Galaxy A54,14.x
T1,iOS,iPad (mid-tier),17.x
Locale/script matrix
tier,locale,dir,notes
T0,en,ltr,baseline
T0,ar,rtl,mirroring
T0,ja,ltr,IME & CJK
T1,fr,ltr,plurals
T1,zh-Hans,ltr,CJK line breaks
Assistive tech
tier,os,screen_reader,version
T0,Windows,NVDA,latest
T1,Windows,JAWS,latest
T0,iOS,VoiceOver,latest
T0,Android,TalkBack,latest
Network profiles
tier,profile,down_mbps,up_mbps,rt_ms,loss_pct
T0,Wi-Fi,50,10,20,0
T1,4G,9,3,60,0.5
T1,3G,1.6,0.5,150,1
T1,CaptivePortal,0,0,999,0
Offline,Airplane,0,0,0,0
Templates
Matrix entry (PR snippet)
Device/Browser:
- Pixel 7 / Android 14 / Chrome 126 (mobile)
- iPhone 14 / iOS 17 / Safari 17 (mobile)
- Windows 11 / Chrome 126 (desktop)
Locales:
- en, ar (RTL), ja
Networks:
- Wi-Fi, 4G throttled, Captive Portal
Evidence:
- Screens (light/dark, RTL)
- HAR + waterfalls
- axe report
- Trace links (p95)
Bug reproduction (compatibility)
Env: <staging url>
Device/OS/Browser: <model, os, version>
Locale/Theme/Text size: <en|ar, light|dark, x1.3>
Network: <Wi-Fi|4G|CaptivePortal>
Steps: <1…n>
Expected: <short>
Actual: <short>
Artifacts: <screens, HAR, logs, trace id>
Sign-off
- T0 surfaces pass with evidence
- T1 spot-checks pass (or tracked)
- Known unsupported combos documented with UX fallback
- Matrix stored and linked; owners assigned
- Post-merge synthetic checks cover top journeys per tier