Drizz raises $2.7M in seed funding •
Featured on Forbes
Drizz raises $2.7M in seed funding •
Featured on Forbes
Logo
Schedule a demo
Blog page
>
Mobile Accessibility Testing: Android + iOS Guide

Mobile Accessibility Testing: Android + iOS Guide

Mobile accessibility testing verifies your app works for users of assistive technology on Android and iOS. Here are standards, automated and manual tests that catch different bugs, and where to run them.
Author:
Posted on:
August 14, 2026
Read time:

Mobile accessibility testing verifies that your app works for users of assistive technology  screen readers, switch control, voice control, dynamic type, and reduced-motion settings. It sits inside broader UI and functional test surface but has its own rules, its own bugs, and its own regulatory pressure.

Most teams treat accessibility as a compliance checkbox at release time. That's pattern that produces expensive bug lists two weeks before ship, and it's pattern this article is written against.

The rest of this piece covers what to test, which standards to test against on Android and iOS, and how to split automated from manual coverage so each layer catches what other misses.

What is mobile accessibility testing?

Mobile accessibility testing is a category of testing that verifies an app is usable by people who rely on assistive technology or non-default settings. That includes VoiceOver on iOS, TalkBack on Android, Switch Control, Voice Control, dynamic type sizes, high-contrast modes, and reduced motion.

The reference standard is W3C's Web Content Accessibility Guidelines (WCAG), which  despite "web" in name  applies to mobile apps in most legal and regulatory contexts, including EU Accessibility Act, ADA (US), and AODA (Ontario).

WCAG has four categories: Perceivable (users can see or hear content), Operable (users can interact with interface), Understandable (users can predict what will happen), and Robust (assistive technology can parse app). Each mobile screen should pass criteria across all four.

Mobile accessibility testing checks app against these criteria across two paths: automated tools that catch structural issues (missing labels, low contrast, small touch targets) and manual walkthroughs that catch experiential issues (VoiceOver reading order, TalkBack focus traps, dynamic-type overflow).

Which accessibility standards apply to Android and iOS apps?

Three standards define what "accessible" means on mobile. The overlap between them is where practical test suite lives.

  • WCAG 2.1 (and 2.2) Level AA. The baseline that most legal regimes reference. Covers contrast ratios (4.5:1 for normal text, 3:1 for large), keyboard operability, focus visibility, and consistent navigation.
  • Apple Accessibility programming guide. iOS-specific requirements: minimum 44×44pt touch targets, VoiceOver labels and hints, Dynamic Type support up to accessibility sizes, Reduce Motion respect.
  • Android Accessibility developer guide. Android-specific requirements: minimum 48×48dp touch targets, TalkBack content descriptions, focus order, sufficient contrast for text and interactive elements.

Regulations frequently cite WCAG, but enforcement usually looks at platform guidelines. An app that passes WCAG contrast requirements but ignores VoiceOver labels will still fail an iOS accessibility audit.

The practical scope: WCAG 2.1 Level AA plus platform-specific guidelines for whichever OS you're testing. Compliance-heavy teams also verify against WCAG 2.2 (published 2023) and industry-specific frameworks  fintech often references EN 301 549 in Europe or Section 508 in US.

What automated mobile accessibility tests should you run?

Automated accessibility tools catch structural issues that are objectively checkable. They're fast, they run in CI, and they should be first line of defense before human testing.

  • Contrast ratio checks. Foreground vs background color ratio on every text element and interactive element against its state (default, focused, disabled). WCAG 2.1 SC 1.4.3.
  • Touch target size. Every interactive element ≥ 44×44pt on iOS or 48×48dp on Android. Automated linters catch this pre-build; runtime scanners verify it post-render.
  • Content labels and descriptions. Every image, icon button, and non-text control has an accessible name that assistive tech can announce. Empty labels or duplicate labels are most common lint failure.
  • Semantic structure. Headings in order, no skipped levels, form fields associated with labels, focus order matching visual order.
  • Dynamic type support. Text scales to at least "Larger Text" accessibility setting without truncation.

Tools that run these checks on Android include Accessibility Scanner app and Espresso Accessibility Checks library. On iOS, Xcode Accessibility Inspector runs static audits on a live simulator or connected device. Cross-platform runners like axe DevTools Mobile cover both.

Automated tools catch roughly well-defined subset of accessibility issues. They miss anything experiential  a screen reader reading wrong order, a focus trap in a modal, a form field that's technically labeled but label reads as gibberish out of context. Those failure modes need manual testing.

What manual mobile accessibility tests catch what automation misses?

Manual accessibility testing is what verifies app actually works for people it's supposed to serve. Automated linters can't feel app way an assistive-tech user does.

  • Screen reader walkthrough. Enable VoiceOver on iOS or TalkBack on Android. Complete each core flow  sign-in, primary transaction, settings  using only screen reader. Use Validate steps to assert on reading order, control announcements, and gesture responsiveness.
  • Keyboard and switch-control navigation. On iOS, use Switch Control; on Android, use an external Bluetooth keyboard. Every interactive element must be reachable and operable. No focus traps.
  • Dynamic type at accessibility sizes. Set text scaling to largest accessibility setting. Verify no truncation, no overlapping elements, no unreachable buttons.
  • Reduce Motion. Toggle OS setting. Animations that convey information should have a static fallback.
  • Color blindness simulation. Test each core flow through iOS's Color Filters or Android's Vision correction, especially for state indicators (red = error, green = success).
  • Real-user testing. The most reliable signal. Pay assistive-technology users to complete tasks in app and observe where they get stuck. Nothing replaces this.

Manual tests are slower and more expensive per run, which is why they belong at release-candidate stage rather than per PR. But they're only tests that catch majority of accessibility bugs that automated tools miss. Reviewers work through per-step report  screenshots, timestamps, and healed-step badge  to sign off.

Which mobile accessibility bugs matter most in practice?

Some accessibility bugs are blocking; others are annoyances. Prioritization affects triage speed and release decisions.

  • Missing or wrong content labels. An icon button that VoiceOver announces as "button" rather than "add to cart." Blocking  user can't complete flow. Drizz's authoring rules require targeting elements by their visible label, which surfaces missing labels as authoring-time signals rather than runtime surprises.
  • Focus traps. A modal that steals focus and doesn't return it, or a form that skips required fields. Blocking  user is stuck.
  • Contrast failures on primary CTAs. A checkout button that reads 3.9:1 against background instead of 4.5:1. Blocking for low-vision users, and a legal risk in regulated markets.
  • Touch targets under 44×44pt. A close button that's 28pt across. Blocking for users with motor impairment.
  • Dynamic type overflow. Buttons that clip their labels at largest accessibility size. Degrades but usually doesn't block.
  • Focus order that doesn't match visual order. VoiceOver jumps around screen unpredictably. Annoying but usually not blocking.
  • Missing state announcements. A toggle that flips without announcing new state. Confusing but recoverable.

Blocking bugs are release-blockers regardless of when they're found. Non-blocking bugs go into backlog with a severity label and a target release. The testing pyramid applies here too  earlier in release train you catch these, cheaper they are to fix. Drizz reports these with explicit pass / fail / passed-healed statuses so release gate is unambiguous.

How do you write a mobile accessibility test case?

Accessibility test cases follow same four-part structure as any mobile test case, but with assistive-tech state in preconditions.

  1. Preconditions. Screen reader state (VoiceOver / TalkBack on or off), text scaling setting, motion preference, color filter, and any relevant device state.
  2. Steps. The interaction sequence as an assistive-tech user would perform it. For screen reader tests, that means swipe navigation, double-tap activation, and rotor use  not touch coordinates.
  3. Expected result. The observable outcome for assistive-tech user. What does screen reader announce? Does focus land in right place? Is state change communicated?
  4. Cleanup. Restore default accessibility settings so subsequent tests don't inherit assistive-tech state.

A good accessibility test case reads like a description of an assistive-tech user completing a task. It doesn't reference internal view hierarchies or accessibility identifiers directly  it references user-visible experience through assistive-tech layer.

The main way accessibility test cases fail is by only covering automated subset. A test that checks contrast ratio but never fires up VoiceOver is testing a checklist, not an experience.

When should mobile accessibility tests run in release pipeline?

Accessibility testing sits at three points in pipeline, each with different depth.

  1. Per-PR CI. Automated accessibility linters run on changed screens. Contrast, touch target, and missing-label checks. Blocks merge on lint failures.
  2. Nightly. Full automated accessibility scan across every screen in app. Reports go to a dashboard team triages next morning.
  3. Release candidate. Full manual accessibility pass: screen reader walkthroughs on core flows, keyboard navigation on all screens, dynamic type at accessibility sizes, real-user testing with assistive-tech users if scope allows. Human sign-off required.

Any change to a semantic hierarchy  new modal, new form, new interactive control  triggers an out-of-band accessibility review. Same for any theming or contrast change, and for any locale addition where text expansion could break layout at accessibility sizes.

For broader placement inside a mobile testing strategy, see device tier and release stage matrix that this fits inside  accessibility runs on head-tier devices, primarily, since assistive-tech behavior tracks OS defaults more than device hardware.

Conclusion

Mobile accessibility testing verifies an app against WCAG 2.1 Level AA plus Apple's Human Interface Guidelines on iOS and Android's Accessibility Guidelines on Android. The scope covers screen reader announcement, keyboard and switch-control operability, touch-target sizing, contrast, dynamic type, and reduced motion.

Automated tools handle structural subset  contrast, touch targets, missing labels, focus order. Manual walkthroughs handle experiential subset  screen reader reading order, focus traps, dynamic-type layout, real-user completion of core flows. Both layers are required; each catches what other cannot.

Pipeline placement follows cost. Automated linters run per PR. Full automated scans run nightly. Manual accessibility passes plus real-user testing where possible run on release candidates and after semantic or theme changes.

Blocking bugs  missing labels on primary actions, focus traps, contrast on CTAs  are release gates. Non-blocking bugs go into backlog with severity labels.

FAQs

What's difference between automated and manual mobile accessibility testing?

Automated testing catches structural issues  contrast ratios, touch-target sizes, missing content labels, focus order. Manual testing catches experiential issues  screen reader reading order, focus traps, dynamic-type layout, real-world completion of core flows by assistive-tech users. Automated tools miss most accessibility bugs; both layers are required.

Which WCAG level should a mobile app target on Android and iOS?

WCAG 2.1 Level AA is baseline that most legal regimes reference  EU Accessibility Act, ADA in US, AODA in Ontario. Enforcement adds platform guidelines: Apple's HIG on iOS (44pt targets, VoiceOver, Dynamic Type) and Android's Accessibility Guidelines (48dp targets, TalkBack, focus order). Regulated industries also cite EN 301 549 or Section 508.

How do you test mobile accessibility with VoiceOver and TalkBack?

Enable screen reader in system settings  VoiceOver on iOS, TalkBack on Android  then complete each core flow using only screen-reader gestures (swipe to navigate, double-tap to activate). Verify reading order matches visual order, announcements are meaningful ("add to cart," not "button"), no focus traps, and state changes are announced. Run on head-tier devices at RC stage.

What mobile accessibility bugs are release-blockers?

Missing or wrong content labels, focus traps, contrast failures on primary CTAs (below 4.5:1), and touch targets under 44×44pt on iOS or 48×48dp on Android. Each blocks assistive-tech users from completing flow and creates legal exposure in regulated markets. Non-blocking bugs  focus-order mismatches, missing state announcements  go into backlog with severity labels.

About the Author:

LinkedIn logo white letters in a blue rounded square background.
Schedule a demo