Fixed
Status Update
Comments
ti...@google.com <ti...@google.com>
je...@google.com <je...@google.com> #2
I see your point, and I agree it needs to be addressed.
The changes you suggest are what I have in mind as well, except that for backwards compatibility reasons we can only deprecate the setter and not make it private entirely.
The new API would then look something like this
// commonMain (no changes)
fun enableAccessibilityChecks()
fun disableAccessibilityChecks()
// androidMain (deprecate setter, add enable method with parameter)
@set:Deprecated(Error)
var accessibilityValidator: AccessibilityValidator
fun enableAccessibilityChecks(accessibilityValidator: AccessibilityValidator)
cl...@google.com <cl...@google.com> #3
Added to our backlog
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
Author: Anastasia Soboleva <
Link:
Add ui-test-accessibility and ui-test-junit4-accessibility library
Expand for full commit details
Add ui-test-accessibility and ui-test-junit4-accessibility library
This allows us to remove the hard dependency on ATF inside ui-test and ui-test-junit.
Methods like enableAccessibilityChecks() and disableAccessibilityChecks() on ComposeUITest and ComposeTestRule moved to those packages correspondingly.
It also addresses the API usage feedback and adds accessibilityValidator as a parameter to the enableAccessibilityChecks which allows to easily configure and pass your own ATF validator.
Given that Android is the only platform right now supporting these checks, we made this API Android-only. Inside ui-test everything is ready to work on various platforms. If we decide to move the enableChecks APIs in these packages to KMP, we'll likely deprecate hidden the existing and add the new one, perhaps tweaking the jvm name if needed.
The integration point between the ui-test and ui-test-accessibility is a ComposeAccessibilityValidator that is made RestrictTo to avoid exposing API added in such short notice. In the future we can consider making it public.
Most of the tests, samples and documentation are moved as is adjusting for a slightly changed API.
Test: AccessibilityChecksTest
Test: verified running checks in a separate (foundation) module
Fixes: 391948233
Fixes: 391560768
Relnote: "Moved `enableAccessibilityChecks()` API that turns on the Accessibility Checks for Android to separate packages which are `compose:ui:ui-test-accessibility` if you're not using the TestRule and `compose:ui:ui-test-junit4-accessibility` when calling on TestRule"
Change-Id: I3c3183c7f06ced8c0ad4873b6262ea39e1ea1b16
Files:
- A
compose/ui/ui-test-accessibility/OWNERS
- A
compose/ui/ui-test-accessibility/api/current.txt
- A
compose/ui/ui-test-accessibility/api/res-current.txt
- A
compose/ui/ui-test-accessibility/api/restricted_current.txt
- A
compose/ui/ui-test-accessibility/build.gradle
- A
compose/ui/ui-test-accessibility/samples/build.gradle
- A
compose/ui/ui-test-accessibility/samples/src/main/java/androidx/compose/ui/test/accessibility/samples/AccessibilityChecksSamples.kt
- A
compose/ui/ui-test-accessibility/src/androidInstrumentedTest/kotlin/androidx/compose/ui/test/accessibility/AccessibilityChecksTest.kt
- A
compose/ui/ui-test-accessibility/src/androidMain/kotlin/androidx/compose/ui/test/accessibility/ComposeUiTestExt.android.kt
- A
compose/ui/ui-test-junit4-accessibility/OWNERS
- A
compose/ui/ui-test-junit4-accessibility/api/current.txt
- A
compose/ui/ui-test-junit4-accessibility/api/res-current.txt
- A
compose/ui/ui-test-junit4-accessibility/api/restricted_current.txt
- A
compose/ui/ui-test-junit4-accessibility/build.gradle
- A
compose/ui/ui-test-junit4-accessibility/samples/build.gradle
- A
compose/ui/ui-test-junit4-accessibility/samples/src/main/java/androidx/compose/ui/test/junit4/accessibility/samples/AccessibilityChecksSamples.kt
- A
compose/ui/ui-test-junit4-accessibility/src/androidMain/kotlin/androidx/compose/ui/test/junit4/accessibility/AndroidComposeTestRuleExt.android.kt
- A
compose/ui/ui-test-junit4-accessibility/src/androidMain/kotlin/androidx/compose/ui/test/junit4/accessibility/ComposeTestRuleExt.android.kt
- A
compose/ui/ui-test-junit4/api/current.ignore
- M
compose/ui/ui-test-junit4/api/current.txt
- A
compose/ui/ui-test-junit4/api/restricted_current.ignore
- M
compose/ui/ui-test-junit4/api/restricted_current.txt
- M
compose/ui/ui-test-junit4/src/androidMain/kotlin/androidx/compose/ui/test/junit4/AndroidComposeTestRule.android.kt
- M
compose/ui/ui-test-junit4/src/jvmMain/kotlin/androidx/compose/ui/test/junit4/ComposeTestRule.jvm.kt
- M
compose/ui/ui-test/api/current.txt
- M
compose/ui/ui-test/api/restricted_current.txt
- M
compose/ui/ui-test/build.gradle
- D
compose/ui/ui-test/samples/src/main/java/androidx/compose/ui/test/samples/AccessibilityChecksSamples.kt
- M
compose/ui/ui-test/src/androidInstrumentedTest/kotlin/androidx/compose/ui/test/AccessibilityChecksTest.kt
- M
compose/ui/ui-test/src/androidMain/kotlin/androidx/compose/ui/test/Actions.android.kt
- M
compose/ui/ui-test/src/androidMain/kotlin/androidx/compose/ui/test/ComposeUiTest.android.kt
- M
compose/ui/ui-test/src/androidMain/kotlin/androidx/compose/ui/test/TestContext.android.kt
- M
compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/ComposeUiTest.kt
- M
compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/TestContext.kt
- M
compose/ui/ui-test/src/commonStubsMain/kotlin/androidx/compose/ui/test/ComposeUiTest.commonStubs.kt
- M
docs-tip-of-tree/build.gradle
- M
settings.gradle
Hash: 36363496f5ff64683296c74b62b744da7f5a0a4c
Date: Mon Jan 27 09:02:33 2025
Description
Jetpack Compose version: 1.8.0-alpha08
Jetpack Compose component(s) used: ui-test
Just looking at the API, I would enable a11y checks as follows:
However this is not how the API was designed to be used because
enableAccessibilityChecks
creates a newAccessibilityValidator
ui-test-android-1.8.0-alpha08.../androidMain/androidx/compose/ui/test/ComposeUiTest.android.kt
Actually, this code:
would not work as expected either, as the validator would be replaced when the checks are enabled.
The correct snippet would be
We can definitely document this well, but I'd like to discuss if the API should be improved.
For example
enableAccessibilityChecks()
->enableAccessibilityChecks(accessibilityValidator: AccessibilityValidator = accessibilityValidator())
and make the setter for
accessibilityValidator
private.