Component Versions
- axeDevToolsUIKit v3.4.0
- axeDevToolsXCUI v2.4.0
- axe-devtools-android v3.2.0
What's New?
React Native Automated Testing and Linting
We are excited to announce that as of this release, axe DevTools Mobile can be used to run accessibility tests in XCUI and Espresso for apps built with React Native! That's not all though, we've also added React Native rules to the free axe Accessibility Linter VSCode extension and axe DevTools Linter (formally known as the axe Linter Server)! These two tools go hand in hand, so your team can catch accessibility bugs as early in the development process as possible for React Native apps. [17298]
Pagination
To improve the load times of the axe DevTools Mobile Dashboard, we added pagination to the table of scans. Each page contains 50 scans, and there is a control below the table to navigate between pages. The summary banner will continue to report the accessibility score and the total number of issues remaining for all scans. Filtering and sorting will affect the total set of scans. The batch selection of scans is tied to each page, so the select all check box will only select the 50 scans on the current page. Additionally, we removed the ability to resize the table, but we made improvements to ensure that data for each scan is available at the fixed width. [17142]
WCAG 2.2 Touch Target Spacing Rules
Here at Deque, we are committed to providing the most valuable native mobile accessibility testing which includes covering the applicable WCAG success criteria. With WCAG 2.2 on the horizon, we have implemented rules on both iOS and Android to test for the proposed Level AA success criterion 2.5.8 Target Size (Minimum). These new rules are called Touch Target Spacing to distinguish from our existing Touch Target Size rules that are based on the Level AAA success criterion 2.5.5 Target Size. Please note that these new rules operate on more lenient requirements compared to the existing rules that align more closely with Apple and Google's recommendations. Because WCAG 2.2 is still in the Candidate Recommendation stage, these rules will report all results with the IGNORED status. Once WCAG 2.2 is finalized, these rules will be reinstated in an upcoming release. For more information on the requirements that the Touch Target Spacing rules test for, please see the remediation guides for iOS and Android.
axe DevTools Mobile for iOS
iPadOS Support
axeDevToolsUIKit v3.4.0 and axeDevTools v2.4.0 officially support testing applications running on iPadOS via either a simulator or physical device. In the dashboard, these scans will display the Apple icon in the table and on the scan summary page, and the individual issues will denote iPadOS. [18244]
Optimized Automation Build for XCUI Framework
In the November 2022 release, we introduced an optimized automation build of axeDevToolsUIKit that enabled unit testing without authentication or any other network requests. With this release, we are also offering an optimized automation build of axeDevToolsXCUI, so you can also perform UI tests that don't interact with any external networks. This build is only available through Deque's Artifactory, so please follow this guide for downloading the framework.
New rules for XCUI framework
We are constantly working to improve and expand our ruleset, so we are excited to share that two new rules have been added to the XCUI framework for iOS. Color Contrast and Screen Orientation were previously only included in axeDevToolsUIKit, but are now available in axeDevToolsXCUI as well.
Colliding Views Vision Enhancement
After integrating Apple's Vision framework into the Color Contrast rule last release, we saw the opportunity to use it in our Colliding Views rule as well. The updated rule now uses OCR to determine whether or not the text from overlapping views is colliding, thus reducing false positives.
Additional Features
- Added the ability to set a scan name when saving locally
- Updated the Login Screen API to be able to connect to a private instance
- The scan URL is now printed to the logs upon upload for easy access
axe DevTools Mobile for Android
Color Contrast Machine Learning Enhancement
In the February 2023 release, we announced that we incorporated Apple's Vision framework into our iOS Color Contrast rule to increase the accuracy and scope of the rule. Similarly, we are now leveraging Google's MLKit in our Android Color Contrast rule. This enables us to detect the color of text more precisely as well as test color contrast on images of text. Due to these enhancements, you may see new Color Contrast issues reported that we previously couldn't detect.
Compose Button Name Rule
In axe-devtools-android v3.2.0, we have combined the Compose Icon Button Name and Compose Text Button Name into a single rule called Compose Button Name. Existing scans will retain any results from the two deprecated rules, and they can still be filtered out using the Custom Rulesets feature in the settings of the axe DevTools Mobile Dashboard.
Additional Features
- Added the ability to add custom rules and scan dialogs using the Optimized Automation Build
- Ignore Rules capability now available for Compose
- New API available to reset ignored rules for both XML and Compose
Bug Fixes
axe DevTools Mobile for iOS
LoginViewController
was renamed toDequeLoginViewController
to avoid issues when apps have a controller of the same name [23412]- Screen Title rule now reports an issue instead of incomplete when there is no programmatic title and nothing available in the nav bar
- Login Screen now includes descriptions of disabled fields
- Fixed a bug with the
isVisibleToUser
property for alerts - Addressed an issue in the Color Contrast rule related to duplicated results for multiple lines of text
- Updated the formatting of the product name in the usage service to be consistent with other Deque products
- Reduced false positives in several rules related to pickers
axe DevTools Mobile for Android
- Compose TextField Name rule will now pass if the TextField includes an icon with a content description
- Resolved an issue with Proguard that caused users to be unable to resolve dependency collisions
- Screen title will now be formatted to a human-readable title instead of the class name
- Updated the formatting of the product name in the usage service to be consistent with other Deque products
axe DevTools Mobile Dashboard
- Android Hidden Informative View Focus and Hidden Active View Focus rule are now properly displayed as experimental
- Fixed an issue with the copy link to issue feature that blocked new read-only users from viewing issues
- Addressed several bugs related to the modal for editing tags on a scan in the table
- Improved the layout of the table to reduce the need for horizontal scrolling
- The access denied page is now responsive for various viewport sizes
- Created separate loaders for the table and the data in the summary banner
- Improved error handling for fetching announcements
- Added alt text for the close icon on the overlay that appears when scans are selected in the table
- Made improvements to the screen reader and keyboard navigation of the table
- Added a skip link to go directly to the table
- Fixed an issue where the access denied page wasn't displayed properly in some cases
- The exclamation point that would appear next to the number of scans has been removed to reduce confusion
- Some font styles have been updated
Known Issues
- 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.
- Rules will not run in web views or rendered PDFs. To test against HTML content, please utilize axe DevTools for Web. axe Monitor supports scanning PDFs for accessibility.
axe DevTools Mobile for iOS
axeDevToolsUIKit.xcframework
Views built with SwiftUI cannot be tested using this framework
Use the axeDevToolsXCUI framework in UITesting for SwiftUI views.
Custom rule support is available only in Swift
The custom rule API is not open to Objective-C.
The "Visible to User" filter may not work properly on side menus and alerts.
We are actively working on a fix and are expecting it in the next release.
False Positives: InScrollView, SupportsDynamicType
We are actively working on fixes for the following false positives and will update this list as fixes are released.
InScrollView
InScrollView may report issues for text within banner-behaving elements. To make these elements available to those that require larger text, use UILargeContentViewer
.
SupportsDynamicType
You may see false positives in the following scenarios:
- If using the
UIContentSizeCategoryDidChange
notification, the framework may incorrectly report that text does not respond to Dynamic Type in UITests. - If using
NotificationCenter.default.addObserver(forName:.., object:.., queue:.., using:..)
to respond to theUIContentSizeCategoryDidChange
notification. - If using
traitCollectionDidChange
on a text's parent view or view controller to respond to Dynamic Type.
axeDevToolsXCUI.xcframework
SwiftUI Picker and UIKit Picker
Picker views in SwiftUI and UIKit may cause the framework to get stuck on simulators or devices.
The "Visible to User" filter may not work properly on side menus and alerts.
We are actively working on a fix and are expecting it in the next release.
Landscape orientation is not formally supported at this time
This will be addressed in a later version.
False Positives: A11yElementFocusBox, InScrollView
We are actively working on fixes for the following false positives and will update this list as fixes are released.
A11yElementFocusBox
For views that are off-screen, this rule may incorrectly report the VoiceOver focus box is not encapsulating the view.
InScrollView
InScrollView may report issues for text within banner-behaving elements. To make these elements available to those that require larger text, use UILargeContentViewer
.
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.
Errors Compiling with Java8 Project and axe DevTools Android 3.1.0
Try the following imports:
implementation 'androidx.core:core-ktx:1.9.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'After importing the above library, if you see errors related to minSDK version for core-ktx library try the following in your project’s Android Manifest:
<uses-sdk tools:overrideLibrary="androidx.core" />
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)
If you encounter an error along the lines of `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)`, please contact us at helpdesk@deque.com or support.deque.com for assistance. Under certain conditions, there may be two Compose root nodes existing at the same time.
axe DevTools Mobile Dashboard
The table can't be sorted by number of issues
As of the April 2023 release, sorting by number of issues per scan has been disabled. This will be fixed in an upcoming release.
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