androidx.compose.ui.test.junit4.accessibility

Extension functions summary

Unit

Disables accessibility checks.

Unit

Disables accessibility checks.

Unit
@RequiresApi(value = 34)
<R : TestRule, A : ComponentActivity> AndroidComposeTestRule<R, A>.enableAccessibilityChecks(
    accessibilityValidator: AccessibilityValidator
)

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

Unit
@RequiresApi(value = 34)
ComposeTestRule.enableAccessibilityChecks(
    accessibilityValidator: AccessibilityValidator
)

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

Extension functions

disableAccessibilityChecks

@RequiresApi(value = 34)
fun <R : TestRule, A : ComponentActivity> AndroidComposeTestRule<R, A>.disableAccessibilityChecks(

): Unit

Disables accessibility checks.

disableAccessibilityChecks

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

Disables accessibility checks.

import androidx.compose.ui.test.junit4.accessibility.disableAccessibilityChecks
import androidx.compose.ui.test.junit4.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.tryPerformAccessibilityChecks
import androidx.test.espresso.accessibility.AccessibilityChecks

// Enable accessibility checks with default configuration:
composeTestRule.enableAccessibilityChecks()

// Accessibility checks are run automatically when performing an action:
composeTestRule.onNodeWithText("Submit").performClick()

// You can also manually run accessibility checks:
composeTestRule.onRoot().tryPerformAccessibilityChecks()

// When disabling accessibility checks..
composeTestRule.disableAccessibilityChecks()

// .. they no longer run when performing an action:
composeTestRule.onNodeWithTag("list").performScrollToIndex(15)
@RequiresApi(value = 34)
fun <R : TestRule, A : ComponentActivity> AndroidComposeTestRule<R, A>.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.junit4.accessibility.enableAccessibilityChecks
import androidx.test.espresso.accessibility.AccessibilityChecks

// Configure your own AccessibilityValidator
val accessibilityValidator =
    AccessibilityValidator().also {
        it.setThrowExceptionFor(AccessibilityCheckResultType.ERROR)
    }

// Enable accessibility checks with your own AccessibilityValidator:
androidComposeTestRule.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.compose.ui.test.junit4.accessibility.enableAccessibilityChecks
import androidx.test.espresso.accessibility.AccessibilityChecks

// Enable accessibility checks in both Espresso and Compose, and share the configuration
val accessibilityValidator = AccessibilityChecks.enable()
androidComposeTestRule.enableAccessibilityChecks(accessibilityValidator)
@RequiresApi(value = 34)
fun ComposeTestRule.enableAccessibilityChecks(
    accessibilityValidator: AccessibilityValidator = AccessibilityValidator().setRunChecksFromRootView(true)
): Unit

Enables accessibility checks 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.

Enabling accessibility checks is currently only supported for AndroidComposeTestRule. If you have a custom ComposeTestRule implementation that delegates to AndroidComposeTestRule, make sure to call this function on the AndroidComposeTestRule instead.

import androidx.compose.ui.test.junit4.accessibility.disableAccessibilityChecks
import androidx.compose.ui.test.junit4.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.tryPerformAccessibilityChecks
import androidx.test.espresso.accessibility.AccessibilityChecks

// Enable accessibility checks with default configuration:
composeTestRule.enableAccessibilityChecks()

// Accessibility checks are run automatically when performing an action:
composeTestRule.onNodeWithText("Submit").performClick()

// You can also manually run accessibility checks:
composeTestRule.onRoot().tryPerformAccessibilityChecks()

// When disabling accessibility checks..
composeTestRule.disableAccessibilityChecks()

// .. they no longer run when performing an action:
composeTestRule.onNodeWithTag("list").performScrollToIndex(15)