Component Versions
- iOS SDK & Analyzer (axeDevToolsXCUI v2.10.0)
- Android SDK (axe-devtools-android v5.4.0)
- Android Analyzer (axe Accessibility Analyzer v1.7.0)
How to update: iOS SDK, iOS Analyzer, Android SDK, Android Analyzer
What's New?
Usage Tracking
We've made it easier to enable tracking for your team's usage of axe DevTools Mobile. In the axe Account Portal's global settings, set "Usage Service" to "Enable" and enter your URL and Organization ID. You no longer need to add anything to the code. (Note: Usage tracking already configured via code for your automated tests will continue to work.) Contact helpdesk@deque.com for your Organization ID. How to enable the Usage Service | About the Usage Service
Export Scans in the axe Universal Format
You can now export scans from the axe DevTools Mobile Dashboard in the axe universal JSON format—a standard format used by all axe products. Use this format when you want to import your mobile accessibility results into another Deque product, such as axe Auditor, or when you want to programmatically aggregate accessibility results from multiple axe products using a consistent output from each product. How to export scans from the Dashboard | Mobile versus universal format
Android
- We've promoted the Inactive Accessible View and Focusable Text rules out of experimental status. After rigorous evaluation, we are confident in their results. If you have experimental rules turned off from the Dashboard settings, you'll start seeing results from these rules. If not, you'll continue to get results from these rules, but they will no longer appear in the "Experimental Results" section. About experimental rules | Configuring the Dashboard
iOS
- We are deprecating the Colliding Controls rule. Colliding controls are now covered under the WCAG-aligned, Touch Target Spacing rule. The results for Colliding Controls will now appear in "Ignored". We will remove the results entirely in an upcoming release.
Bug Fixes
Android
- We updated the Mobile Analyzer app to prevent crashing during setup on Android version 11 and below.
- We fixed an issue in the Mobile Analyzer app where an incorrect backend server URL caused the app setup to fail. This applies to private cloud or on premise customers only.
- We fixed a bug in the Label in Name rule that was causing the rule to incorrectly return a failure when the visible text was part of the accessible name.
- To prevent false positives, any component whose content is not fully on screen will no longer be analyzed by the Touch Target Size, Touch Target Spacing, or Color Contrast rules.
- To prevent false positives in the Label in Name, Nested Element Name, and Focusable Text rules, we will now flag certain scenarios as "Needs Review" rather than "Fail" when we cannot be 100% certain of a failure. You should review these issues to ensure the accessible text is available to assistive technology such as TalkBack or Voice Access.
iOS
- To prevent false positives, the Colliding Views rule will return "Needs Review" instead of "Fail" in all cases.
- The Usage Service was previously only tracking "login" events, and will now track both "login" and "scan" events.
Dashboard
- Fixed a bug where scans could not be exported when the app name contained a Unicode character.
Known Issues
If you're experiencing any of the below issues, please contact us at helpdesk@deque.com or support.deque.com. We will then be able to notify you once it's resolved or of an identified workaround if none is listed.
- axe DevTools Mobile automated testing runs on native iOS, native Android, and React Native applications. Please contact your Deque representative for accessibility testing solutions on your tech stack.
- While you may get some results from web views or rendered PDFs, we highly recommend testing using axe DevTools for Web or axe Monitor for the most comprehensive accessibility testing for the web.
axe DevTools Mobile for iOS
Error in Analyzer Project & Testing by Bundle ID in 2.8.1
Functionality with testing an application by bundle identifier was broken in version 2.8.1 which resulted in an error titled "No target application path specified via test configuration: ...". Update to 2.8.2 or the latest version to resolve the error. Update to the latest within the iOS Analyzer project.
Views off-screen may show results for SwiftUI apps tested in iOS 17
With version 2.8.0 (View Release Notes), results are no longer reported on views that are not visible, including off-screen or hidden by another view. We've discovered in SwiftUI applications being tested in iOS 17, some results still show. (#1383)
Supports Dynamic Type rule not working with iOS 15 Pro simulator
There is an issue affecting the iPhone 15 Pro simulator that prevents the Supports Dynamic Type rule from running. If you are opted in to the Supports Dynamic Type rule, you will not be able to test it using an iPhone 15 Pro simulator. A bug has been filed with Apple.
Rules against Nested Controls
While looking at an improvement for our rules, we found that in XCTest, nested controls are not returned in the accessibility tree. A bug has been filed with Apple. (#1110)
False Positive: In Scroll View, ActiveControlName
We are actively working on fixes for the following false positives and will update this list as fixes are released.
In Scroll View
May report issues for text within banner-behaving elements. To make these elements available to those that require larger text, use UILargeContentViewer
. (#622)
ActiveControlName
If an UIImageView has an `accessibilityIdentifier` set but is not focusable by VoiceOver, and it has focusable controls nested within it, ActiveControlName may report a false positive on the UIImageView. Removing the `accessibilityIdentifier` resolves the issue. A bug has been filed with Apple. (#1226)
False Negative: Image View Name, Focusable Text in iOS 13 through iOS 14.8.1
We are actively working on fixes for the following false negatives and will update this list as fixes are released.
Image View Name
If an UIImageView has an `accessibilityIdentifier` set but is not focusable by VoiceOver, ImageViewName may report a false negative on the UIImageView. Removing the `accessibilityIdentifier` resolves the issue. A bug has been filed with Apple. (#1226)
Focusable Text
Elements marked as non-accessibility elements may report improper results due to a bug in Apple's framework.
axe DevTools Mobile for Android
Crash when using Proguard
If your debug or test build is utilizing Proguard, follow the steps to ignore Deque in your Proguard settings.
Crash when `minifiedEnabled` is set to true
If minifying your build, you'll see a crash with an error log reporting an adapter could not be found when trying to login to the axe DevTools library. Disable minify for your debug builds with axe DevTools implemented. (#729)
Builds with r8 enabled throw an error
A build with r8 enabled may attempt to minify the axeDevTools library resulting in an error similar to:
Caused by: java.lang.NullPointerException: throw with null exception at g.b.b.a$a.a(Unknown Source:1) at g.b.b.a$a.a(Unknown Source:0) at g.b.b.a.a(AccessToken.java:190)To resolve this error add the following line to your ProGuard file to keep axeDevTools classes:
keep class com.deque.** { *; }
Error message similar to:
Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)
or: No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?
If you encounter an error along the lines of `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)` or `No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?`, please refer to Compose setTestTag API.
axe DevTools Mobile Dashboard
Missing Screenshot
If the screenshot is missing from the scan details page, your app may be preventing screenshots from being taken. Often this is for security reasons in your production application. Consider removing this requirement for your testing build to allow for full functionality in the axe DevTools Mobile Dashboard.
Some Android scan names are unformatted
Some Android scan names that are defaulted to the screen title will appear as the full class name including the bundle identifier. In a future release, this will be resolved so that the screen title is formatted into a more readable name. As a workaround, you can set the scan name from the dashboard or frameworks. (#1643)
axe DevTools Mobile for Appium
False Positive: Active View Name
Due to limitations in information available via the Appium platform, we've identified a false positive for Active View Name when using the labeledBy
property to provide a label for a button element. We are exploring solutions and expect a fix in a future release.
React Native & .NET MAUI: Label In Name & Label At Front
Due to limitations in information available via the Appium platform, we've identified the Label In Name & Label At Front rules aren't able to run for apps built with React Native. We are exploring solutions and expect a fix in a future release.
React Native: Inspect View Hierarchy Showing Past Screen
Sometimes the Appium page source property needs extra time to get updated between scans. If this happens, you'll see a previous screen's view hierarchy when using the inspect feature on the dashboard. To fix, add a small timeout before calling the page source API to prompt the accessibility scan. Example:
await driver.pause(1000); const result = await driver.getPageSource();