axe DevTools Mobile August 14, 2024 Release Notes

Link to axe DevTools Mobile August 14, 2024 Release Notes copied to clipboard

August 14, 2024

Component Versions

  • iOS SDK (axeDevToolsXCUI v2.12.3)
  • iOS Analyzer (axe-devtools-mobile-analyzer v1.2.0)
  • Android SDK (axe-devtools-android v5.5.2)
  • Android Analyzer (axe Accessibility Analyzer v1.8.4)
    How to update: iOS SDK, iOS Analyzer, Android SDK, Android Analyzer

What's New?

Dashboard

Improved Scan and Issue Detail Screens

We’ve updated the scan and issue detail screens in the axe DevTools Mobile Dashboard to make them easier to use and to set the stage for future enhancements. While the screens look different, the important functionality is still available. Have feedback? Please let us know by emailing mobile-feedback@deque.com

iOS

Rule Engine Embedded in Analyzer Project

We've removed the dependency on Swift Package Manager for retrieving axeDevToolsXCUI in the iOS Analyzer Xcode project. The latest version of the XCUI framework is now embedded in the Analyzer for each release. This change will make it easier to update the Analyzer project and ensure you have the latest rule engine.

Fixes

Android

  • Fixed an issue where the Analyzer app would crash when the device is restarted on Android API level 34
  • Enhancements and improvements to increase accuracy and reduce false positives for the Color Contrast and Touch Target Size rules
  • Usage data is now available in axe Reports

iOS

  • Improved how we detect if SwiftUI views are visible to the user which will reduce false positives and improve accuracy for various rules
  • Enhancements and improvements to increase accuracy and reduce false positives in the following rules: Inaccessible Action, Focusable Text, Screen Title, Nested Elements Name

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.

important
  • 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.

False Positive: LabelInName and LabelAtFront in SwiftUI & Cross Platform Apps

Some screens may report false positives with LabelInName and LabelAtFront due to an incorrect associatedText property being found (#1622)

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)

ImageView Name Rule Needs Review Results for UIKit Apps

In UIKit apps, an image without an `accessibilityLabel` is not focusable with assistive technology by default.
The properties we use to check focusability from Apple may be inaccurate when an `accessibilityIdentifier` is set on the image. Due to this unexpected behavior, results for ImageView Name issues in UIKit apps will report as Needs Review. A bug report has been filed with Apple. (#1633)

False Positive: In Scroll View, Label In Name, Label at Front, and v2.11.0 Image View Name & 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)

v2.11.0 Image View Name & 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. (#1633)

Label In Name and Label At Front
These two rules look for a control's visible label amongst nearby elements to help determine rule status. In some view hierarchies, the incorrect nearby text may be detected causing these rules to fail. (#1622)

axe DevTools Mobile for Android

Screenshot is displaying as a black box in the dashboard

To unlock full functionality of axe DevTools for Mobile, ensure screenshots are enabled. We recommend enabling screenshots on a debug or test version of your app that uses mock data to avoid security concerns. Checkout our guide for enabling screenshots in Android apps.

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.

Log message:MlKitContext has not been initialized

If you encounter this message, some rule results may not return as expected when that rule is utilizing artificial intelligence. Affected rules include Color Contrast, Focusable Text and Nested Element Name. (#841)

MAUI: Edit Text Name rule

Due to limitations of the MAUI app architecture rendering in the Android ecosystem, the Edit Text Name rule will show as Needs Review in the dashboard when a failure is suspected for SDK version 5.5.0 and up. Please confirm correct behavior manually for this case.

Native Android: Custom Dialogs / Modals

When you're implementing custom dialogs or modals that do not extend the native controls, you may get results for views behind the modal. In this case, we recommend not running our tool against these custom modals or dialogs and instead manually checking them to ensure they behave with assistive technology as desired.

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 Positives: Active View Name, Touch Target Spacing

We are actively working on fixes for the following false positives and will update this list as fixes are released.

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.

Touch Target Spacing on iOS platform for SwiftUI & React Native apps
Larger controls may fail Touch Target Spacing when they are greater than the minimum 24pt x 24pt requirement. (#411)

False Negative: Inaccessible Action on Android React Native

You may see contradictory results for this new rule when scanning React Native apps on the Android platform. Some views will have a nested button element resulting in a failure for the parent button, but a pass in the child button. (#407)

React Native: 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 & .NET MAUI: 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();
        

Limitation: Image View Name for Decorative Images in Android

Due to limitations in information available via the Appium platform, we've identified the Image View Name rule is unable to accurately test for decorative image success criteria in Android. Results for images without an accessible name will display as 'Needs Review' in the dashboard for further analysis.