androidx.compose.ui.test.accessibility

Extension functions summary

Unit

Disables accessibility checks.

Unit

Enables accessibility checks using an accessibilityValidator that will be run before every action that is expected to change the UI.

Extension functions

disableAccessibilityChecks

@ExperimentalTestApi
@RequiresApi(value = 34)
fun ComposeUiTest.disableAccessibilityChecks(): Unit

Disables accessibility checks.

import androidx.compose.ui.test.ExperimentalTestApi import androidx.compose.ui.test.accessibility.disableAccessibilityChecks import androidx.compose.ui.test.accessibility.enableAccessibilityChecks import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onRoot import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performScrollToIndex import androidx.compose.ui.test.runComposeUiTest import androidx.compose.ui.test.tryPerformAccessibilityChecks import androidx.test.espresso.accessibility.AccessibilityChecks @Test @OptIn(ExperimentalTestApi::class) fun testWithAccessibilityChecks() = runComposeUiTest {  // Enable accessibility checks with default configuration:  enableAccessibilityChecks()  // When enabled, accessibility checks run automatically when performing an action:  onNodeWithText("Submit").performClick()  // You can also manually run accessibility checks:  onRoot().tryPerformAccessibilityChecks()  // When disabling accessibility checks..  disableAccessibilityChecks()  // .. they no longer run when performing an action:  onNodeWithTag("list").performScrollToIndex(15) }

enableAccessibilityChecks

@ExperimentalTestApi
@RequiresApi(value = 34)
fun ComposeUiTest.enableAccessibilityChecks(
    accessibilityValidator: AccessibilityValidator = AccessibilityValidator().setRunChecksFromRootView(true)
): Unit

Enables accessibility checks using an accessibilityValidator that will be run before every action that is expected to change the UI.

This requires API 34+ (Android U), and currently does not work on Robolectric.

import androidx.compose.ui.test.ExperimentalTestApi import androidx.compose.ui.test.accessibility.disableAccessibilityChecks import androidx.compose.ui.test.accessibility.enableAccessibilityChecks import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onRoot import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performScrollToIndex import androidx.compose.ui.test.runComposeUiTest import androidx.compose.ui.test.tryPerformAccessibilityChecks import androidx.test.espresso.accessibility.AccessibilityChecks @Test @OptIn(ExperimentalTestApi::class) fun testWithAccessibilityChecks() = runComposeUiTest {  // Enable accessibility checks with default configuration:  enableAccessibilityChecks()  // When enabled, accessibility checks run automatically when performing an action:  onNodeWithText("Submit").performClick()  // You can also manually run accessibility checks:  onRoot().tryPerformAccessibilityChecks()  // When disabling accessibility checks..  disableAccessibilityChecks()  // .. they no longer run when performing an action:  onNodeWithTag("list").performScrollToIndex(15) }
import androidx.activity.ComponentActivity import androidx.compose.ui.test.ExperimentalTestApi import androidx.compose.ui.test.accessibility.enableAccessibilityChecks import androidx.compose.ui.test.runAndroidComposeUiTest import androidx.test.espresso.accessibility.AccessibilityChecks @Test @OptIn(ExperimentalTestApi::class) fun testWithAccessibilityChecks() =  runAndroidComposeUiTest<ComponentActivity> {  // Configure your own AccessibilityValidator  val accessibilityValidator =  AccessibilityValidator().also {  it.setThrowExceptionFor(AccessibilityCheckResultType.ERROR)  }  // Enable accessibility checks with your own AccessibilityValidator:  enableAccessibilityChecks(accessibilityValidator)  }

If you have a hybrid application with both Compose and Views, and you use both Compose Test and Espresso, then you should set up accessibility checks in both frameworks and share the configuration in the following way:

import androidx.activity.ComponentActivity import androidx.compose.ui.test.ExperimentalTestApi import androidx.compose.ui.test.accessibility.enableAccessibilityChecks import androidx.compose.ui.test.runAndroidComposeUiTest import androidx.test.espresso.accessibility.AccessibilityChecks @Test @OptIn(ExperimentalTestApi::class) fun testWithAccessibilityChecks() =  runAndroidComposeUiTest<ComponentActivity> {  // Enable accessibility checks in both Espresso and Compose, and share the configuration  val accessibilityValidator = AccessibilityChecks.enable()  enableAccessibilityChecks(accessibilityValidator)  }