Auto-generate screen reader accessibility reports
Automatically generate comprehensive screen reader accessibility reports to help you understand how native screen readers interpret your app’s user interface.
Screen Reader Automation is currently in the Beta phase and is available on Android devices under the Ultimate plan. To get access, contact BrowserStack Support. For more details on the Ultimate plan, check the pricing page.
When conducting automated App Accessibility tests on your app, you can generate a screen reader accessibility report to evaluate how native screen readers interpret and navigate through your app’s user interface.
The report includes detailed insights such as the screen reader’s spoken output, the focus order of the UI elements, and relevant accessibility metadata. These insights help you identify and fix potential barriers for users who rely on screen readers or other assistive technologies.
Supported apps
You can generate screen reader accessibility reports for the following app types:
| Platform | File format | Screen reader |
|---|---|---|
| Android |
.apk .aab
|
TalkBack |
How screen reader reports help
Screen reader reports improve your app’s accessibility by providing the following insights:
- Automated report generation: Integrates seamlessly into your test automation runs, enabling continuous accessibility checks across builds.
- Focus checks: Ensures that all relevant elements receive focus during screen reader navigation.
- Spoken output checks: Verifies that the screen reader’s spoken output for each element is accurate and meaningful.
- Reading order checks: Verifies that the screen reader follows a logical order when reading elements.
- Accessibility metadata verification: Confirms that all UI elements expose correct labels, roles, and states to assistive technologies.
Generate a screen reader report on BrowserStack App Accessibility testing
To generate a screen reader report during an App Accessibility testing session:
To enable accessibility testing, set the accessibility capability to true in your test suite configuration file.
In the test suite configuration file, configure the screenReaderAutomation capability under accessibilityOptions to enable screen reader report generation:
-
Generate report: Set
autoReporttotrueto enable report generation. -
Enable linear navigation (optional): Set
linearNavigationtotrueto traverse scrollable content. By default, this is disabled and the report captures elements visible in the initial viewport. Enabling this mode might result in longer test execution times. See Coverage modes for details. -
Set linear navigation timeout (optional): Configure
linearNavigationTimeoutto control traversal time for screens with extensive scrollable content. See Linear navigation timeout for configuration options.
For example, depending on your test suite framework, include the following configuration:
...
accessibility: true # Enable accessibility testing.
accessibilityOptions:
screenReaderAutomation:
autoReport: true # Enable report generation
linearNavigation: true # Optional: Enable linear navigation (default: false)
linearNavigationTimeout: 300000 # Optional: Set timeout in ms (default: 300000)
...
BrowserStack still supports the legacy screenReaderAutomationReport: true format, but it does not support linear navigation mode. We recommend using the new screenReaderAutomation configuration to access the full capabilities of automated screen reader testing.
...
services: [
['browserstack', {
...
accessibility: true, // Enable accessibility testing.
accessibilityOptions: {
screenReaderAutomation: {
autoReport: true, // Enable report generation
linearNavigation: true, // Optional: Enable linear navigation (default: false)
linearNavigationTimeout: 300000 // Optional: Set timeout in ms (default: 300000)
}
}
...
}]
]
...
BrowserStack still supports the legacy screenReaderAutomationReport: true format, but it does not support linear navigation mode. We recommend using the new screenReaderAutomation configuration to access the full capabilities of automated screen reader testing.
curl -u "USERNAME:ACCESS_KEY" \
-X POST "https://api-cloud.browserstack.com/app-automate/espresso/v2/build" \
-d '{
"app": "bs://$app_id",
"testSuite": "bs://$test_suite_id",
"devices": ["Samsung S24-14.0", "Google Pixel 8-14.0", "Samsung S21-11.0"],
"deviceLogs": true,
"project": "$PROJECT_NAME",
"accessibility": true,
"accessibilityOptions": {
"screenReaderAutomation": {
"autoReport": true,
"linearNavigation": true,
"linearNavigationTimeout": 300000
}
}
}' \
-H "Content-Type: application/json"
BrowserStack still supports the legacy screenReaderAutomationReport: true format, but it does not support linear navigation mode. We recommend using the new screenReaderAutomation configuration to access the full capabilities of automated screen reader testing.
Run your App Accessibility test.
Generating screen reader accessibility reports operates independently from automated App Accessibility tests. Setting the screenReaderAutomation capability only generates reports on how screen readers interpret your app’s UI. To test your app for accessibility issues, see automated App Accessibility testing.
Coverage modes
Screen reader accessibility reports can be generated in two modes:
-
Standard mode (default): Captures elements visible in the initial viewport. This mode is ideal for quick accessibility checks in CI/CD pipelines, screens with minimal scrolling, and rapid iterative testing during development. Set
linearNavigation: falseor exclude the parameter to use standard mode. -
Linear navigation mode: Captures the complete screen reader traversal path, including elements in scrollable containers, carousels, and off-screen content. This mode replicates the full experience of a screen reader user navigating through your app and provides complete coverage. Use this mode for comprehensive accessibility validation before release, screens with infinite scroll or long lists, and complete traversal verification matching real user experience. Set
linearNavigation: trueto enable linear navigation mode.
The following table compares the two modes to help you choose the right one for your testing requirements:
| Aspect | Standard mode | Linear navigation mode |
|---|---|---|
| Coverage | Elements visible in initial viewport only | Complete traversal including scrollable content |
| Performance | Faster test execution (~2-3 minutes per screen) | Longer test execution time (varies based on content complexity and configured timeout) |
| Use case | Quick accessibility checks for simple screens | Comprehensive validation for complex scrollable UIs |
| Snapshots captured | Single snapshot per screen | Multiple snapshots per screen as content scrolls |
| Best for | Screens with minimal scrolling | Infinite scroll, carousels, long lists |
Linear navigation timeout
The linearNavigationTimeout parameter controls the maximum time allowed for the screen reader automation to traverse and capture elements during a single linear navigation session. This applies only when linear navigation mode is enabled and is particularly important for screens with extensive scrollable content.
The total execution time for linear navigation may exceed the timeout value, as it includes additional processing overhead such as screenshot capture, element analysis, and report generation. The timeout specifically limits the active traversal phase.
| Parameter | Value |
|---|---|
| Default | 5 minutes (300000 ms) |
| Minimum | 5 minutes (300000 ms) If you set a value below this limit, the system displays a warning and automatically adjusts the value to 5 minutes. |
| Maximum | 8 minutes (480000 ms) If you set a value above this limit, the system displays a warning and automatically adjusts the value to 8 minutes. |
Screen reader report checks
Screen reader automation performs the following accessibility checks on your app’s user interface:
| Check | Description |
|---|---|
| Focus order for interactive elements | Ensure interactive elements are focused by the screen reader |
| Focus order for non-interactive elements | Ensure non-interactive elements are focused by the screen reader |
| Meaningful reading order | Reading sequence follows a logical visual order |
| Meaningful spoken output | Spoken text is meaningful for focused elements |
| Meaningful spoken output for images | Images have meaningful spoken text |
| Duplicate state info | State information is not repeated in spoken output |
| Duplicate type info | Element type is not repeated in spoken output |
| Missing visible label | Visible label is present in spoken output |
The “Meaningful reading order” check is not available when linear navigation mode is enabled. All other checks are performed in both standard and linear navigation modes.
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
Thank you for your valuable feedback!