axe DevTools Mobile June 2023 Release Notes
June 15, 2023
Component Versions
- axeDevToolsUIKit v3.5.0
- axeDevToolsXCUI v2.5.0
What's New?
axe DevTools Mobile for iOS
We've improved the issue descriptions that are displayed on the dashboard. They now will more precisely describe the exact issue detected, when available, instead of a general description of the rule.
The axeDevToolsXCUI framework now supports scanning apps while they are in landscape orientation.
Bug Fixes
axe DevTools Mobile for iOS
- Fixed false positives in A11yElementFocusBox rule for views that are partially offscreen
- Updated the Touch Target Spacing rule to incorporate changes in the WCAG success criterion as of Candidate Recommendation 3
- Offscreen text that isn't focusable will now be inapplicable for the Focusable Text rule
- WebViews will no longer raise In Scroll View issues because they are already scrollable
- Updated the Colliding Views rule to improve results when text is not properly processed with optical character recognition.
- Made various improvements to how UISearchBars are handled by the rules
axe DevTools Mobile Dashboard
- Preserve scan name and tags when uploading a previously exported scan [20293]
- Fixed an issue where users were unable to apply settings if two items were selected in the issue filtering and experimental rules sections [24629]
- Resolved an issue causing the charts on the scan summary page to flicker behind the issues found panes
- Fixed the bulk actions toolbar flickering when selecting scans in Firefox
- Addressed error that would occur when deleting multiple scans across multiple pages
- Made the announcements modal scrollable
- Disabled filtering, sorting, and uploading buttons while the table is loading
- Re-enabled sorting by issue count
- Ensured loaders are properly announced to screen readers
- iPadOS scans will now display results from experimental rules in the appropriate styling
- Abbreviated the app name in the table so that horizontal scrolling is less likely to occur [24404]
Updates
We announced the deprecation of the axe DevTools Mobile desktop app in the November 2022 release, therefore we have removed the connection API methods in this iOS frameworks release. If you are still using the desktop app and need support, please contact your Deque representative, submit a request at support.deque.com, or email helpdesk@deque.com.
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.
- 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.
False Positives: InScrollView, SupportsDynamicType, Colliding Views
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.
When a scrollable subview contains text, and that subview does not span to the edge of the screen's bounds, you will see failures for text located within the view's bounds.
axeDevToolsXCUI.xcframework
SwiftUI Picker and UIKit Picker
Picker views in SwiftUI and UIKit may cause the framework to get stuck on simulators or devices.
False Positives: A11yElementFocusBox, InScrollView, Colliding Views
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
.
Colliding Views
When a scrollable subview contains text, and that subview does not span to the edge of the screen's bounds, you will see failures for text located within the view's bounds.
False Negative: Focusable Text in iOS 13 through iOS 14.8.1
Elements marked as non-accessibility elements may not report proper 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.
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
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