# SemanticsNodeInteraction

Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/SemanticsNodeInteraction.kt+class:androidx.compose.ui.test.SemanticsNodeInteraction) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0) Common/AllAndroid/JVM
- Cmn

  ```
  class SemanticsNodeInteraction
  ```

*** ** * ** ***

Represents a semantics node and the path to fetch it from the semantics tree. One can interact with this node by performing actions such as `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performClick()`, assertions such as `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHasClickAction()`, or navigate to other nodes such as `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).onChildren()`.

An instance of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` can be obtained from `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteractionsProvider#onNode(androidx.compose.ui.test.SemanticsMatcher,kotlin.Boolean)` and convenience methods that use a specific filter, such as `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteractionsProvider).onNodeWithText(kotlin.String,kotlin.Boolean,kotlin.Boolean,kotlin.Boolean)`.

Here you can see how you can locate a checkbox, click it and verify that it's checked:

```kotlin
import androidx.compose.ui.test.assertIsOn
import androidx.compose.ui.test.isToggleable
import androidx.compose.ui.test.performClick

composeTestRule.onNode(isToggleable()).performClick().assertIsOn()
```

`https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#useUnmergedTree()` is for tests with a special need to inspect implementation detail within children. For example:

```kotlin
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.assertLeftPositionInRootIsEqualTo
import androidx.compose.ui.test.assertTopPositionInRootIsEqualTo
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.unit.dp

composeTestRule.setContent {
    // Box is a semantically merging composable. All testTags of its
    // children are merged up into it in the merged semantics tree.
    Box(Modifier.testTag("box").padding(16.dp)) { Box(Modifier.testTag("icon").size(48.dp)) }
}

// Verify the position of the inner box. Without `useUnmergedTree`, the
// test would check the position of the outer box (which is `(0, 0)`)
// instead of the position of the inner box (which is `(16, 16)`).
composeTestRule
    .onNodeWithTag("icon", useUnmergedTree = true)
    .assertLeftPositionInRootIsEqualTo(16.dp)
    .assertTopPositionInRootIsEqualTo(16.dp)
```

## Summary

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#SemanticsNodeInteraction(androidx.compose.ui.test.TestContext,kotlin.Boolean,androidx.compose.ui.test.SemanticsMatcher)( testContext: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestContext, useUnmergedTree: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, matcher: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsMatcher )` | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#SemanticsNodeInteraction(androidx.compose.ui.test.TestContext,kotlin.Boolean,androidx.compose.ui.test.SemanticsSelector)( testContext: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestContext, useUnmergedTree: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, selector: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsSelector )` | Cmn |

| ### Public functions |
|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#assertDoesNotExist()()` Asserts that no item was found or that the item is no longer in the hierarchy. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#assertExists(kotlin.String)(errorMessageOnFail: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?)` Asserts that the component was found and is part of the component tree. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#assertIsDeactivated(kotlin.String)(errorMessageOnFail: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?)` Asserts that the component was found and it is deactivated. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsNode` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#fetchSemanticsNode(kotlin.String)(errorMessageOnFail: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?)` Returns the semantics node captured by this object. | Cmn |

| ### Extension functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performClick()()` Performs a click action on the element represented by the given semantics node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `@https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ExperimentalTestApi https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabel(kotlin.String)( label: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html )` Finds the `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` in the node's `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#CustomActions()` list whose label is equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabel(kotlin.String)` and then invokes it. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `@https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ExperimentalTestApi https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabelMatching(kotlin.String,kotlin.Function1)( predicateDescription: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, labelPredicate: (label: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` Finds the `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` in the node's `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#CustomActions()` list whose label satisfies a predicate function and then invokes it. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performFirstLinkClick(kotlin.Function1)( predicate: (https://developer.android.com/reference/kotlin/androidx/compose/ui/text/AnnotatedString.Range<https://developer.android.com/reference/kotlin/androidx/compose/ui/text/LinkAnnotation>) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` For a first link matching the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performFirstLinkClick(kotlin.Function1)` performs a click on it. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.[performGesture](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performGesture(kotlin.Function1))(block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/GestureScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` **This function is deprecated.** Replaced by performTouchInput | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performKeyInput(kotlin.Function1)(block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/KeyInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` Executes the key input gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performKeyInput(kotlin.Function1)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performMouseInput(kotlin.Function1)(block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MouseInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` Executes the mouse gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMouseInput(kotlin.Function1)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performMultiModalInput(kotlin.Function1)(block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MultiModalInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` Executes the multi-modal gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMultiModalInput(kotlin.Function1)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performRotaryScrollInput(kotlin.Function1)(block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/RotaryInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` Executes the rotary input specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performRotaryScrollInput(kotlin.Function1)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollTo()()` Scrolls the closest enclosing scroll parent by the smallest amount such that this node is fully visible in its viewport. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToIndex(kotlin.Int)(index: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Scrolls a scrollable container with items to the item with the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToIndex(kotlin.Int)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToKey(kotlin.Any)(key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html)` Scrolls a scrollable container with keyed items to the item with the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToKey(kotlin.Any)`, such as `https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyColumn.composable#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.compose.foundation.OverscrollEffect,androidx.compose.foundation.lazy.layout.LazyLayoutCacheWindow,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyRow.composable#LazyRow(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Horizontal,androidx.compose.ui.Alignment.Vertical,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.compose.foundation.OverscrollEffect,androidx.compose.foundation.lazy.layout.LazyLayoutCacheWindow,kotlin.Function1)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToNode(androidx.compose.ui.test.SemanticsMatcher)( matcher: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsMatcher )` Scrolls a scrollable container to the content that matches the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToNode(androidx.compose.ui.test.SemanticsMatcher)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performSemanticsAction(androidx.compose.ui.semantics.SemanticsPropertyKey)( key: https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsPropertyKey<https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/AccessibilityAction<() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html>> )` Provides support to call custom semantics actions on this node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `<T : () -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html> https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performSemanticsAction(androidx.compose.ui.semantics.SemanticsPropertyKey,kotlin.Function1)( key: https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsPropertyKey<https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/AccessibilityAction<T>>, invocation: (T) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Provides support to call custom semantics actions on this node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performTouchInput(kotlin.Function1)(block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TouchInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` Executes the touch gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTouchInput(kotlin.Function1)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performTrackpadInput(kotlin.Function1)(block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TrackpadInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` Executes the trackpad gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTrackpadInput(kotlin.Function1)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).requestFocus()()` Requests the focus system to give focus to this node by invoking the `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#RequestFocus()` semantics action. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).tryPerformAccessibilityChecks()()` Tries to perform accessibility checks on the current screen. | Cmn android |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap` | `@https://developer.android.com/reference/kotlin/androidx/annotation/RequiresApi(value = 26) https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).captureToImage(kotlin.Long)(timeoutMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)` Captures the underlying semantics node's surface into an `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap`. | android |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assert(androidx.compose.ui.test.SemanticsMatcher,kotlin.Function0)( matcher: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsMatcher, messagePrefixOnError: (() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? )` Asserts that the provided `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assert(androidx.compose.ui.test.SemanticsMatcher,kotlin.Function0)` is satisfied for this node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionContains(kotlin.String,kotlin.Boolean,kotlin.Boolean)( value: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, substring: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, ignoreCase: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` Asserts that the node's list of content descriptions contains the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionContains(kotlin.String,kotlin.Boolean,kotlin.Boolean)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionEquals(kotlin.Array)( vararg values: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html )` Asserts that the node's list of content descriptions contains exactly the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionEquals(kotlin.Array)` and nothing else. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHasClickAction()()` Asserts that the current semantics node has a click action. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHasNoClickAction()()` Asserts that the current semantics node has doesn't have a click action. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsDisplayed()()` Asserts that the current semantics node is displayed on screen. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsEnabled()()` Asserts that the current semantics node is enabled. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsFocused()()` Asserts that the current semantics node has a focus. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsNotDisplayed()()` Asserts that the current semantics node is not displayed on screen, including when the node is not composed, composed but not placed, or when none of its bounds are visible on screen after clipping is applied. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsNotEnabled()()` Asserts that the current semantics node is not enabled. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsNotFocused()()` Asserts that the current semantics node does not have a focus. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsNotSelected()()` Asserts that the current semantics node is not selected. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsOff()()` Asserts that the current semantics node is unchecked. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsOn()()` Asserts that the current semantics node is checked. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsSelectable()()` Asserts that the current semantics node is selectable. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsSelected()()` Asserts that the current semantics node is selected. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsToggleable()()` Asserts that the current semantics node is toggleable. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertRangeInfoEquals(androidx.compose.ui.semantics.ProgressBarRangeInfo)( value: https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/ProgressBarRangeInfo )` Asserts the node's range info equals the given value. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextContains(kotlin.String,kotlin.Boolean,kotlin.Boolean)( value: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, substring: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, ignoreCase: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` Asserts that the node's list of text values contains the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextContains(kotlin.String,kotlin.Boolean,kotlin.Boolean)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextEquals(kotlin.Array,kotlin.Boolean,kotlin.Boolean)( vararg values: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, includeEditableText: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, includeInputText: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` Asserts that the node's list of text values contains exactly the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextEquals(kotlin.Array,kotlin.Boolean,kotlin.Boolean)` and nothing else. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertValueEquals(kotlin.String)(value: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` Asserts the node's value equals the given value. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).isDisplayed()()` Returns true if the matched node is displayed on screen. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).isNotDisplayed()()` Returns true if the matched node is not displayed on screen, including when the node is not composed, composed but not placed, or when none of its bounds are visible on screen after clipping is applied. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHeightIsAtLeast(androidx.compose.ui.unit.Dp)(expectedMinHeight: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp)` Asserts that the layout of this node has height that is greater than or equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHeightIsAtLeast(androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)( expectedHeight: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp )` Asserts that the layout of this node has height equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertLeftPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)( expectedLeft: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp )` Asserts that the layout of this node has the left position in the root composable that is equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertLeftPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertLeftPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)( expectedLeft: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, expectedTop: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp )` Asserts that the layout of this node has position in the root composable that is equal to the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTopPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)( expectedTop: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp )` Asserts that the layout of this node has the top position in the root composable that is equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTopPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTopPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)( expectedHeight: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp )` Asserts that the touch bounds of this node has height equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)( expectedWidth: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp )` Asserts that the touch bounds of this node has width equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertWidthIsAtLeast(androidx.compose.ui.unit.Dp)(expectedMinWidth: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp)` Asserts that the layout of this node has width that is greater than or equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertWidthIsAtLeast(androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).assertWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)( expectedWidth: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp, tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp )` Asserts that the layout of this node has width equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).getAlignmentLinePosition(androidx.compose.ui.layout.AlignmentLine)( alignmentLine: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine )` Returns the position of an `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine`, or `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp#Unspecified()` if the line is not provided. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/DpRect` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).getBoundsInRoot()()` Returns the bounds of the layout of this node as clipped to the root. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect?` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).getFirstLinkBounds(kotlin.Function1)( predicate: (https://developer.android.com/reference/kotlin/androidx/compose/ui/text/AnnotatedString.Range<https://developer.android.com/reference/kotlin/androidx/compose/ui/text/LinkAnnotation>) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` Returns the bounds of the first link matching the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).getFirstLinkBounds(kotlin.Function1)`, or if that link spans multiple lines, returns the bounds of the first line of the link. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/DpRect` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).getUnclippedBoundsInRoot()()` Returns the bounds of the layout of this node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `@https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ExperimentalTestApi https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.[invokeGlobalAssertions](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).invokeGlobalAssertions())()` **This function is deprecated.** This API has been removed and its intended usage to run accessibility checks can now be done via \`SemanticsNodeInteraction.tryPerformAccessibilityChecks()\` | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performKeyPress(androidx.compose.ui.input.key.KeyEvent)(keyEvent: https://developer.android.com/reference/kotlin/androidx/compose/ui/input/key/KeyEvent)` Send the specified `https://developer.android.com/reference/kotlin/androidx/compose/ui/input/key/KeyEvent` to the focused component. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).printToLog(kotlin.String,kotlin.Int)(tag: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, maxDepth: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Prints all the semantics nodes information into logs (as debug level). | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).printToString(kotlin.Int)(maxDepth: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Prints all the semantics nodes information it holds into string. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteractionCollection` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).onAncestors()()` Returns all the ancestors of this node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).onChild()()` Returns exactly one child of this node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).onChildAt(kotlin.Int)(index: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Returns child of this node at the given index. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteractionCollection` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).onChildren()()` Returns children of this node at the moment of invocation, it only captures nodes that are currently present in the semantic tree. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteractionCollection` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).onDescendants()()` Returns all the descendants of this node in Depth-First Search order. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).onParent()()` Returns a parent of this node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).onSibling()()` Returns exactly one sibling of this node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteractionCollection` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).onSiblings()()` Returns all siblings of this node. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performImeAction()()` Sends to this node the IME action associated with it in a similar way to the IME. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performTextClearance()()` Clears the text in this node in similar way to IME. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performTextInput(kotlin.String)(text: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` Sends the given text to this node in similar way to IME. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performTextInputSelection(androidx.compose.ui.text.TextRange,kotlin.Boolean)( selection: https://developer.android.com/reference/kotlin/androidx/compose/ui/text/TextRange, relativeToOriginalText: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` Sends the given selection to this node in similar way to IME. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction.https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performTextReplacement(kotlin.String)(text: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` Replaces existing text with the given text in this node in similar way to IME. | Cmn |

## Public constructors

### SemanticsNodeInteraction

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
SemanticsNodeInteraction(
    testContext: TestContext,
    useUnmergedTree: Boolean,
    matcher: SemanticsMatcher
)
```

### SemanticsNodeInteraction

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
SemanticsNodeInteraction(
    testContext: TestContext,
    useUnmergedTree: Boolean,
    selector: SemanticsSelector
)
```

## Public functions

### assertDoesNotExist

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun assertDoesNotExist(): Unit
```

Asserts that no item was found or that the item is no longer in the hierarchy.

This will synchronize with the UI and fetch all the nodes again to ensure it has latest data.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if the assert fails. |

### assertExists

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun assertExists(errorMessageOnFail: String? = null): SemanticsNodeInteraction
```

Asserts that the component was found and is part of the component tree.

This will synchronize with the UI and fetch all the nodes again to ensure it has latest data. If you are using `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#fetchSemanticsNode(kotlin.String)` you don't need to call this. In fact you would just introduce additional overhead.

| Parameters |
|---|---|
| `errorMessageOnFail: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | Error message prefix to be added to the message in case this asserts fails. This is typically used by operations that rely on this assert. Example prefix could be: "Failed to perform doOnClick.". |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if the assert fails. |

### assertIsDeactivated

Cmn Added in [1.6.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0)

```
fun assertIsDeactivated(errorMessageOnFail: String? = null): Unit
```

Asserts that the component was found and it is deactivated.

For example, the children of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotlin.Function2)` which are retained to be reused in future are considered deactivated.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if the assert fails. |

### fetchSemanticsNode

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun fetchSemanticsNode(errorMessageOnFail: String? = null): SemanticsNode
```

Returns the semantics node captured by this object.

Note: Accessing this object involves synchronization with your UI. If you are accessing this multiple times in one atomic operation, it is better to cache the result instead of calling this API multiple times.

This will fail if there is 0 or multiple nodes matching.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if 0 or multiple nodes found. |

## Extension functions

### SemanticsNodeInteraction.performClick

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performClick)

```
fun SemanticsNodeInteraction.performClick(): SemanticsNodeInteraction
```

Performs a click action on the element represented by the given semantics node. Depending on the platform this may be implemented by a touch click (tap), a mouse click, or another more appropriate method for that platform.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

### SemanticsNodeInteraction.performCustomAccessibilityActionWithLabel

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performCustomAccessibilityActionWithLabel)

```
@ExperimentalTestApi
fun SemanticsNodeInteraction.performCustomAccessibilityActionWithLabel(
    label: String
): SemanticsNodeInteraction
```

Finds the `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` in the node's `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#CustomActions()` list whose label is equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabel(kotlin.String)` and then invokes it.

To use your own logic to find the action to perform instead of matching on the full label, use `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabelMatching(kotlin.String,kotlin.Function1)`.

| Parameters |
|---|---|
| `label: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | The exact label of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` to perform. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | If no `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsNode` is found, or no `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` has `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabel(kotlin.String)`, or more than one `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` has `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabel(kotlin.String)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabelMatching(kotlin.String,kotlin.Function1)` |   |

### SemanticsNodeInteraction.performCustomAccessibilityActionWithLabelMatching

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performCustomAccessibilityActionWithLabelMatching)

```
@ExperimentalTestApi
fun SemanticsNodeInteraction.performCustomAccessibilityActionWithLabelMatching(
    predicateDescription: String? = null,
    labelPredicate: (label: String) -> Boolean
): SemanticsNodeInteraction
```

Finds the `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` in the node's `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#CustomActions()` list whose label satisfies a predicate function and then invokes it.

| Parameters |
|---|---|
| `predicateDescription: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | A description of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabelMatching(kotlin.String,kotlin.Function1)` that will be included in the error message if zero or \>1 actions match. |
| `labelPredicate: (label: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | A predicate function used to select the `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` to perform. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | If no `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsNode` is found, or no `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` matches `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabelMatching(kotlin.String,kotlin.Function1)`, or more than one `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/CustomAccessibilityAction` matches `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabelMatching(kotlin.String,kotlin.Function1)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performCustomAccessibilityActionWithLabel(kotlin.String)` |   |

### SemanticsNodeInteraction.performFirstLinkClick

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performFirstLinkClick)

```
fun SemanticsNodeInteraction.performFirstLinkClick(
    predicate: (AnnotatedString.Range<LinkAnnotation>) -> Boolean = { true }
): SemanticsNodeInteraction
```

For a first link matching the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performFirstLinkClick(kotlin.Function1)` performs a click on it.

A link in a Text composable is defined by a `https://developer.android.com/reference/kotlin/androidx/compose/ui/text/LinkAnnotation` of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/text/AnnotatedString`.

```kotlin
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performFirstLinkClick
import androidx.compose.ui.text.LinkAnnotation

// Example of clicking on a link in test
composeTestRule.onNodeWithText("YOUR_TEXT_WITH_LINK").performFirstLinkClick {
    (it.item as? LinkAnnotation.Url)?.url == "YOUR_URL"
}
```

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).getFirstLinkBounds(kotlin.Function1)` |   |

### SemanticsNodeInteraction.performGesture

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performGesture)

```
fun SemanticsNodeInteraction.[performGesture](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).performGesture(kotlin.Function1))(block: GestureScope.() -> Unit): SemanticsNodeInteraction
```

> [!CAUTION]
> **This function is deprecated.**   
> Replaced by performTouchInput, use this instead:
>
> ```kotlin
> performTouchInput(block)
> ```

Executes the (partial) gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performGesture(kotlin.Function1)`. The gesture doesn't need to be complete and can be resumed in a later invocation of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performGesture(kotlin.Function1)`. The event time is initialized to the current time of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MainTestClock`.

Be aware that if you split a gesture over multiple invocations of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performGesture(kotlin.Function1)`, everything that happens in between will run as if the gesture is still ongoing (imagine a finger still touching the screen).

All events that are injected from the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performGesture(kotlin.Function1)` are batched together and sent after `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performGesture(kotlin.Function1)` is complete. This method blocks while the events are injected. If an error occurs during execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performGesture(kotlin.Function1)` or injection of the events, all (subsequent) events are dropped and the error is thrown here.

Due to the batching of events, all events in a block are sent together and no recomposition will take place in between events. Additionally all events will be generated before any of the events take effect. This means that the screen coordinates of all events are resolved before any of the events can cause the position of the node being injected into to change. This has certain advantages, for example, in the cases of nested scrolling or dragging an element around, it prevents the injection of events into a moving target since all events are enqueued before any of them has taken effect.

Example of performing a click:

```kotlin
import androidx.compose.ui.test.click
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performGesture

composeTestRule.onNodeWithTag("myComponent").performGesture { click() }
```

| Parameters |
|---|---|
| `block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/GestureScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | A lambda with `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/GestureScope` as receiver that describes the gesture by sending all touch events. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

### SemanticsNodeInteraction.performKeyInput

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performKeyInput)

```
fun SemanticsNodeInteraction.performKeyInput(block: KeyInjectionScope.() -> Unit): SemanticsNodeInteraction
```

Executes the key input gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performKeyInput(kotlin.Function1)`. The gesture doesn't need to be complete and can be resumed in a later invocation of one of the `perform.*Input` methods. The event time is initialized to the current time of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MainTestClock`.

All events that are injected from the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performKeyInput(kotlin.Function1)` are batched together and sent after `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performKeyInput(kotlin.Function1)` is complete. This method blocks while the events are injected. If an error occurs during execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performKeyInput(kotlin.Function1)` or injection of the events, all (subsequent) events are dropped and the error is thrown here.

Due to the batching of events, all events in a block are sent together and no recomposition will take place in between events. Additionally all events will be generated before any of the events take effect. This means that the screen coordinates of all events are resolved before any of the events can cause the position of the node being injected into to change. This has certain advantages, for example, in the cases of nested scrolling or dragging an element around, it prevents the injection of events into a moving target since all events are enqueued before any of them has taken effect.

```kotlin
import androidx.compose.foundation.clickable
import androidx.compose.foundation.text.BasicText
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.input.InputMode.Companion.Keyboard
import androidx.compose.ui.input.InputModeManager
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.platform.LocalInputModeManager
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performKeyInput

var counter = 0
val focusRequester = FocusRequester()
lateinit var inputModeManager: InputModeManager
composeTestRule.setContent {
    inputModeManager = LocalInputModeManager.current
    BasicText(
        "ClickableText",
        modifier =
            Modifier.testTag("myClickable").focusRequester(focusRequester).clickable {
                counter++
            },
    )
}
composeTestRule.runOnIdle {
    inputModeManager.requestInputMode(Keyboard)
    focusRequester.requestFocus()
}

composeTestRule.onNodeWithTag("myClickable").performKeyInput { keyDown(Key.Enter) }

composeTestRule.runOnIdle { assert(counter == 0) }

composeTestRule.onNodeWithTag("myClickable").performKeyInput { keyUp(Key.Enter) }

composeTestRule.runOnIdle { assert(counter == 1) }
```

| Parameters |
|---|---|
| `block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/KeyInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | A lambda with `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/KeyInjectionScope` as receiver that describes the gesture by sending all key press events. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/KeyInjectionScope` |   |

### SemanticsNodeInteraction.performMouseInput

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performMouseInput)

```
fun SemanticsNodeInteraction.performMouseInput(block: MouseInjectionScope.() -> Unit): SemanticsNodeInteraction
```

Executes the mouse gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMouseInput(kotlin.Function1)`. The gesture doesn't need to be complete and can be resumed in a later invocation of one of the `perform.*Input` methods. The event time is initialized to the current time of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MainTestClock`.

Be aware that if you split a gesture over multiple invocations of `perform.*Input`, everything that happens in between will run as if the gesture is still ongoing (imagine a mouse button still being pressed).

All events that are injected from the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMouseInput(kotlin.Function1)` are batched together and sent after `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMouseInput(kotlin.Function1)` is complete. This method blocks while the events are injected. If an error occurs during execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMouseInput(kotlin.Function1)` or injection of the events, all (subsequent) events are dropped and the error is thrown here.

Due to the batching of events, all events in a block are sent together and no recomposition will take place in between events. Additionally all events will be generated before any of the events take effect. This means that the screen coordinates of all events are resolved before any of the events can cause the position of the node being injected into to change. This has certain advantages, for example, in the cases of nested scrolling or dragging an element around, it prevents the injection of events into a moving target since all events are enqueued before any of them has taken effect.

Example of performing a mouse click:

```kotlin
import androidx.compose.ui.test.click
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performMouseInput

composeTestRule.onNodeWithTag("myComponent").performMouseInput {
    // Click in the middle of the node
    click(center)
}
```

Example of scrolling the mouse wheel while the mouse button is pressed:

```kotlin
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performMouseInput

composeTestRule
    .onNodeWithTag("verticalScrollable")
    // Scroll downwards while keeping a button pressed:
    .performMouseInput {
        // Presses the primary mouse button
        press()
        // Scroll the scroll wheel by 6 units
        repeat(6) {
            advanceEventTime()
            scroll(1f)
        }
        // And release the mouse button
        advanceEventTime()
        release()
    }
```

| Parameters |
|---|---|
| `block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MouseInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | A lambda with `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MouseInjectionScope` as receiver that describes the gesture by sending all mouse events. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MouseInjectionScope` |   |

### SemanticsNodeInteraction.performMultiModalInput

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performMultiModalInput)

```
fun SemanticsNodeInteraction.performMultiModalInput(block: MultiModalInjectionScope.() -> Unit): SemanticsNodeInteraction
```

Executes the multi-modal gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMultiModalInput(kotlin.Function1)`. The gesture doesn't need to be complete and can be resumed in a later invocation of one of the `perform.*Input` methods. The event time is initialized to the current time of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MainTestClock`. If only a single modality is needed (e.g. touch, mouse, stylus, keyboard, etc), you should use the `perform.*Input` of that modality instead.

Functions for each modality can be called by invoking that modality's function, like `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MultiModalInjectionScope#touch(kotlin.Function1)` to inject touch events. This allows you to inject events for each modality.

Be aware that if you split a gesture over multiple invocations of `perform.*Input`, everything that happens in between will run as if the gesture is still ongoing (imagine a finger still touching the screen).

All events that are injected from the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMultiModalInput(kotlin.Function1)` are batched together and sent after `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMultiModalInput(kotlin.Function1)` is complete. This method blocks while the events are injected. If an error occurs during execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performMultiModalInput(kotlin.Function1)` or injection of the events, all (subsequent) events are dropped and the error is thrown here.

Due to the batching of events, all events in a block are sent together and no recomposition will take place in between events. Additionally all events will be generated before any of the events take effect. This means that the screen coordinates of all events are resolved before any of the events can cause the position of the node being injected into to change. This has certain advantages, for example, in the cases of nested scrolling or dragging an element around, it prevents the injection of events into a moving target since all events are enqueued before any of them has taken effect.

| Parameters |
|---|---|
| `block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MultiModalInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | A lambda with `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MultiModalInjectionScope` as receiver that describes the gesture by sending all multi modal events. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MultiModalInjectionScope` |   |

### SemanticsNodeInteraction.performRotaryScrollInput

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performRotaryScrollInput)

```
fun SemanticsNodeInteraction.performRotaryScrollInput(block: RotaryInjectionScope.() -> Unit): SemanticsNodeInteraction
```

Executes the rotary input specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performRotaryScrollInput(kotlin.Function1)`.

The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performRotaryScrollInput(kotlin.Function1)` receives a `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/RotaryInjectionScope` which provides access to rotary input injection functions, such as `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/RotaryInjectionScope#rotateToScrollVertically(kotlin.Float)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/RotaryInjectionScope#rotateToScrollHorizontally(kotlin.Float)`.

All events that are injected from the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performRotaryScrollInput(kotlin.Function1)` are batched together and sent after `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performRotaryScrollInput(kotlin.Function1)` is complete. This method blocks while the events are injected. If an error occurs during execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performRotaryScrollInput(kotlin.Function1)` or injection of the events, all (subsequent) events are dropped and the error is thrown here.

Example of performing a scroll with three events:

```kotlin
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performRotaryScrollInput

composeTestRule.onNodeWithTag("myComponent").performRotaryScrollInput {
    rotateToScrollVertically(3.0f)
    rotateToScrollVertically(10.0f)
    rotateToScrollVertically(2.0f)
}
```

| Parameters |
|---|---|
| `block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/RotaryInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | A lambda with `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/RotaryInjectionScope` as receiver that describes the gesture by sending all rotary scroll events. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/RotaryInjectionScope` |   |

### SemanticsNodeInteraction.performScrollTo

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performScrollTo)

```
fun SemanticsNodeInteraction.performScrollTo(): SemanticsNodeInteraction
```

Scrolls the closest enclosing scroll parent by the smallest amount such that this node is fully visible in its viewport. If this node is larger than the viewport, scrolls the scroll parent by the smallest amount such that this node fills the entire viewport. A scroll parent is a parent node that has the semantics action `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#ScrollBy()` (usually implemented by defining `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/package-summary#(androidx.compose.ui.semantics.SemanticsPropertyReceiver).scrollBy(kotlin.String,kotlin.Function2)`).

This action should be performed on the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is part of the scrollable content, not on the scrollable container.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if there is no scroll parent, or if a scroll is needed but `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MainTestClock#autoAdvance()` is set to `false`. Compose scroll actions rely on clock frames to execute scroll animations, so scrolling cannot make progress when clock auto-advancement is disabled. |

### SemanticsNodeInteraction.performScrollToIndex

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performScrollToIndex)

```
fun SemanticsNodeInteraction.performScrollToIndex(index: Int): SemanticsNodeInteraction
```

Scrolls a scrollable container with items to the item with the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToIndex(kotlin.Int)`.

Note that not all scrollable containers have item indices. For example, a `https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/scrollable.modifier#(androidx.compose.ui.Modifier).scrollable(androidx.compose.foundation.gestures.ScrollableState,androidx.compose.foundation.gestures.Orientation,kotlin.Boolean,kotlin.Boolean,androidx.compose.foundation.gestures.FlingBehavior,androidx.compose.foundation.interaction.MutableInteractionSource)` doesn't have items with an index, while `https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyColumn.composable#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.compose.foundation.OverscrollEffect,androidx.compose.foundation.lazy.layout.LazyLayoutCacheWindow,kotlin.Function1)` does.

This action should be performed on a `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is a scrollable container, not on a node that is part of the content of that container.

Throws an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node doesn't have `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#ScrollToIndex()` defined.

| Parameters |
|---|---|
| `index: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The index of the item to scroll to |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#hasScrollToIndexAction()` |   |

### SemanticsNodeInteraction.performScrollToKey

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performScrollToKey)

```
fun SemanticsNodeInteraction.performScrollToKey(key: Any): SemanticsNodeInteraction
```

Scrolls a scrollable container with keyed items to the item with the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToKey(kotlin.Any)`, such as `https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyColumn.composable#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.compose.foundation.OverscrollEffect,androidx.compose.foundation.lazy.layout.LazyLayoutCacheWindow,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyRow.composable#LazyRow(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Horizontal,androidx.compose.ui.Alignment.Vertical,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.compose.foundation.OverscrollEffect,androidx.compose.foundation.lazy.layout.LazyLayoutCacheWindow,kotlin.Function1)`.

This action should be performed on a `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is a scrollable container, not on a node that is part of the content of that container.

Throws an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node doesn't have `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#IndexForKey()` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#ScrollToIndex()` defined.

| Parameters |
|---|---|
| `key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html` | The key of the item to scroll to |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#hasScrollToKeyAction()` |   |

### SemanticsNodeInteraction.performScrollToNode

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performScrollToNode)

```
fun SemanticsNodeInteraction.performScrollToNode(
    matcher: SemanticsMatcher
): SemanticsNodeInteraction
```

Scrolls a scrollable container to the content that matches the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToNode(androidx.compose.ui.test.SemanticsMatcher)`. If the content isn't yet visible, the scrollable container will be scrolled from the start till the end till it finds the content we're looking for. It is not defined where in the viewport the content will be on success of this function, but it will be either fully within the viewport if it is smaller than the viewport, or it will cover the whole viewport if it is larger than the viewport. If it doesn't find the content, the scrollable will be left at the end of the content and an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` is thrown.

This action should be performed on a `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is a scrollable container, not on a node that is part of the content of that container. If the container is a lazy container, it must support the semantics actions `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#ScrollToIndex()`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#ScrollBy()`, and either `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#HorizontalScrollAxisRange()` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#VerticalScrollAxisRange()`, for example `https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyColumn.composable#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.compose.foundation.OverscrollEffect,androidx.compose.foundation.lazy.layout.LazyLayoutCacheWindow,kotlin.Function1)` and `https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyRow.composable#LazyRow(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Horizontal,androidx.compose.ui.Alignment.Vertical,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.compose.foundation.OverscrollEffect,androidx.compose.foundation.lazy.layout.LazyLayoutCacheWindow,kotlin.Function1)`. If the container is not lazy, it must support the semantics action `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#ScrollBy()`, for example, `https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Row.composable#Row(androidx.compose.ui.Modifier,androidx.compose.foundation.layout.Arrangement.Horizontal,androidx.compose.ui.Alignment.Vertical,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Column.composable#Column(androidx.compose.ui.Modifier,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,kotlin.Function1)`.

Throws an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the scrollable node doesn't support the necessary semantics actions.

| Parameters |
|---|---|
| `matcher: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsMatcher` | A matcher that identifies the content where the scrollable container needs to scroll to |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method. Note that this is *not* an interaction for the node that is identified by the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performScrollToNode(androidx.compose.ui.test.SemanticsMatcher)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#hasScrollToNodeAction()` |   |

### SemanticsNodeInteraction.performSemanticsAction

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performSemanticsAction)

```
fun SemanticsNodeInteraction.performSemanticsAction(
    key: SemanticsPropertyKey<AccessibilityAction<() -> Boolean>>
): SemanticsNodeInteraction
```

Provides support to call custom semantics actions on this node.

This method is for calling actions that have no parameters.

This will properly verify that the actions exists and provide clear error message in case it does not. It also handle synchronization and performing the action on the UI thread. This call is blocking until the action is performed

| Parameters |
|---|---|
| `key: https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsPropertyKey<https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/AccessibilityAction<() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html>>` | Key of the action to be performed. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | If the semantics action is not defined on this node. |

### SemanticsNodeInteraction.performSemanticsAction

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performSemanticsAction)

```
fun <T : () -> Boolean> SemanticsNodeInteraction.performSemanticsAction(
    key: SemanticsPropertyKey<AccessibilityAction<T>>,
    invocation: (T) -> Unit
): SemanticsNodeInteraction
```

Provides support to call custom semantics actions on this node.

This method is supposed to be used for actions with parameters.

This will properly verify that the actions exists and provide clear error message in case it does not. It also handle synchronization and performing the action on the UI thread. This call is blocking until the action is performed

| Parameters |
|---|---|
| `key: https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsPropertyKey<https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/AccessibilityAction<T>>` | Key of the action to be performed. |
| `invocation: (T) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | Place where you call your action. In the argument is provided the underlying action from the given Semantics action. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | If the semantics action is not defined on this node. |

### SemanticsNodeInteraction.performTouchInput

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performTouchInput)

```
fun SemanticsNodeInteraction.performTouchInput(block: TouchInjectionScope.() -> Unit): SemanticsNodeInteraction
```

Executes the touch gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTouchInput(kotlin.Function1)`. The gesture doesn't need to be complete and can be resumed in a later invocation of one of the `perform.*Input` methods. The event time is initialized to the current time of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MainTestClock`.

Be aware that if you split a gesture over multiple invocations of `perform.*Input`, everything that happens in between will run as if the gesture is still ongoing (imagine a finger still touching the screen).

All events that are injected from the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTouchInput(kotlin.Function1)` are batched together and sent after `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTouchInput(kotlin.Function1)` is complete. This method blocks while the events are injected. If an error occurs during execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTouchInput(kotlin.Function1)` or injection of the events, all (subsequent) events are dropped and the error is thrown here.

Due to the batching of events, all events in a block are sent together and no recomposition will take place in between events. Additionally, all events will be generated before any of the events take effect. This means that the screen coordinates of all events are resolved before any of the events can cause the position of the node being injected into to change. This has certain advantages, for example, in the cases of nested scrolling or dragging an element around, it prevents the injection of events into a moving target since all events are enqueued before any of them has taken effect.

Example of performing a swipe up:

```kotlin
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performTouchInput
import androidx.compose.ui.test.swipeUp

composeTestRule.onNodeWithTag("myComponent").performTouchInput { swipeUp() }
```

Example of performing an off-center click:

```kotlin
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.test.click
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performTouchInput

composeTestRule.onNodeWithTag("myComponent").performTouchInput {
    click(percentOffset(.2f, .5f))
}
```

Example of doing an assertion during a click:

```kotlin
import androidx.compose.ui.test.assertHasClickAction
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performTouchInput

composeTestRule
    .onNodeWithTag("myComponent")
    .performTouchInput { down(topLeft) }
    .assertHasClickAction()
    .performTouchInput { up() }
```

Example of performing a click-and-drag:

```kotlin
import androidx.compose.ui.test.click
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performTouchInput
import androidx.compose.ui.test.swipeUp

composeTestRule.onNodeWithTag("myComponent").performTouchInput {
    click()
    advanceEventTime(100)
    swipeUp()
}
```

| Parameters |
|---|---|
| `block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TouchInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | A lambda with `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TouchInjectionScope` as receiver that describes the gesture by sending all touch events. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TouchInjectionScope` |   |

### SemanticsNodeInteraction.performTrackpadInput

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:performTrackpadInput)

```
fun SemanticsNodeInteraction.performTrackpadInput(block: TrackpadInjectionScope.() -> Unit): SemanticsNodeInteraction
```

Executes the trackpad gesture specified in the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTrackpadInput(kotlin.Function1)`. The gesture doesn't need to be complete and can be resumed in a later invocation of one of the `perform.*Input` methods. The event time is initialized to the current time of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MainTestClock`.

Be aware that if you split a gesture over multiple invocations of `perform.*Input`, everything that happens in between will run as if the gesture is still ongoing (imagine a trackpad button still being pressed).

All events that are injected from the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTrackpadInput(kotlin.Function1)` are batched together and sent after `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTrackpadInput(kotlin.Function1)` is complete. This method blocks while the events are injected. If an error occurs during execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performTrackpadInput(kotlin.Function1)` or injection of the events, all (subsequent) events are dropped and the error is thrown here.

Due to the batching of events, all events in a block are sent together and no recomposition will take place in between events. Additionally all events will be generated before any of the events take effect. This means that the screen coordinates of all events are resolved before any of the events can cause the position of the node being injected into to change. This has certain advantages, for example, in the cases of nested scrolling or dragging an element around, it prevents the injection of events into a moving target since all events are enqueued before any of them has taken effect.

Example of performing a trackpad click:

```kotlin
import androidx.compose.ui.test.click
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performTrackpadInput

composeTestRule.onNodeWithTag("myComponent").performTrackpadInput {
    // Click in the middle of the node
    click(center)
}
```

| Parameters |
|---|---|
| `block: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TrackpadInjectionScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | A lambda with `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TrackpadInjectionScope` as receiver that describes the gesture by sending all trackpad events. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TrackpadInjectionScope` |   |

### SemanticsNodeInteraction.requestFocus

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.kt+function:requestFocus)

```
fun SemanticsNodeInteraction.requestFocus(): SemanticsNodeInteraction
```

Requests the focus system to give focus to this node by invoking the `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#RequestFocus()` semantics action.

### SemanticsNodeInteraction.tryPerformAccessibilityChecks

Cmn android Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Actions.+function:tryPerformAccessibilityChecks)

```
fun SemanticsNodeInteraction.tryPerformAccessibilityChecks(): SemanticsNodeInteraction
```

Tries to perform accessibility checks on the current screen. This will only actually do something if (1) accessibility checks are enabled and (2) accessibility checks are implemented for the platform on which the test runs.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if accessibility problems are found |

### SemanticsNodeInteraction.captureToImage

android Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/AndroidImageHelpers.android.kt+function:captureToImage)

```
@RequiresApi(value = 26)
fun SemanticsNodeInteraction.captureToImage(timeoutMillis: Long): ImageBitmap
```

Captures the underlying semantics node's surface into an `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap`.

This can be used to capture nodes in a normal composable, as well as across multiple roots. Popups and Dialogs (if API \>= 28) are specific cases of this, where they can be captured together with their anchor.

For example, selecting the root node (via `onRoot()`) when a popup or dialog is present will detect multiple roots. In this scenario, the resulting image is cropped to the combined bounding box of all nodes across the different roots. If a Dialog is present among the roots, the image is cropped to the window's visible display frame.

| Parameters |
|---|---|
| `timeoutMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The maximum time (in ms) to wait for the drawing to complete. Default is 2000 ms. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if an attempt is made to capture a bitmap of a dialog before API 28. |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeTimeoutException` | if drawing does not complete within `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).captureToImage(kotlin.Long)`. |

### SemanticsNodeInteraction.assert

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assert)

```
fun SemanticsNodeInteraction.assert(
    matcher: SemanticsMatcher,
    messagePrefixOnError: (() -> String)? = null
): SemanticsNodeInteraction
```

Asserts that the provided `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assert(androidx.compose.ui.test.SemanticsMatcher,kotlin.Function0)` is satisfied for this node.

| Parameters |
|---|---|
| `matcher: https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsMatcher` | Matcher to verify. |
| `messagePrefixOnError: (() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null` | Prefix to be put in front of an error that gets thrown in case this assert fails. This can be helpful in situations where this assert fails as part of a bigger operation that used this assert as a precondition check. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if the matcher does not match or the node can no longer be found. |

### SemanticsNodeInteraction.assertContentDescriptionContains

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertContentDescriptionContains)

```
fun SemanticsNodeInteraction.assertContentDescriptionContains(
    value: String,
    substring: Boolean = false,
    ignoreCase: Boolean = false
): SemanticsNodeInteraction
```

Asserts that the node's list of content descriptions contains the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionContains(kotlin.String,kotlin.Boolean,kotlin.Boolean)`.

The `ContentDescription` property is represented as a list of strings. In the merged semantics tree (the default in Compose testing), this list often contains multiple descriptions merged from child nodes. This function evaluates whether any individual item in that list matches the provided `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionContains(kotlin.String,kotlin.Boolean,kotlin.Boolean)`.

By default, this requires an exact string match with at least one complete item in the list.

Typically, accessibility tooling will decide based on its heuristics which descriptions to announce.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node's value list does not contain `value`, or if the node has no value.

```kotlin
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Icon
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.ColorPainter
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.test.assertContentDescriptionContains
import androidx.compose.ui.test.onNodeWithTag

composeTestRule.setContent {
    // Explicitly merging descendants to demonstrate list semantics
    Row(Modifier.semantics(mergeDescendants = true) { testTag = "iconRow" }) {
        Icon(ColorPainter(Color.Red), contentDescription = "Navigate Up")
        Icon(ColorPainter(Color.Yellow), contentDescription = "Go Home")
    }
}

// The merged content description list is: ["Navigate Up", "Go Home"]

// "Navigate Up" is an exact match for one of the items in the list.
composeTestRule.onNodeWithTag("iconRow").assertContentDescriptionContains("Navigate Up")

// "Navigate" is a substring of an item in the list, and we explicitly enable substring
// matching.
composeTestRule
    .onNodeWithTag("iconRow")
    .assertContentDescriptionContains("Navigate", substring = true)
```

| Parameters |
|---|---|
| `value: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | Value to match against the items in the list of content descriptions. |
| `substring: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether this can be satisfied as a substring match of an item in the list of descriptions. Defaults to false. |
| `ignoreCase: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether case should be ignored. Defaults to false. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#ContentDescription()` |   |

### SemanticsNodeInteraction.assertContentDescriptionEquals

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertContentDescriptionEquals)

```
fun SemanticsNodeInteraction.assertContentDescriptionEquals(
    vararg values: String
): SemanticsNodeInteraction
```

Asserts that the node's list of content descriptions contains exactly the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionEquals(kotlin.Array)` and nothing else.

The `ContentDescription` property is represented as a list of strings. In the merged semantics tree (the default in Compose testing), this list often contains multiple descriptions merged from child nodes. This function evaluates the entire list.

The assertion will only pass if the node's list contains all the provided `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionEquals(kotlin.Array)`, and contains no additional items. Note that the order of the elements does not matter.

Typically, accessibility tooling will decide based on its heuristics which descriptions to announce.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node's descriptions don't contain all items from `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionEquals(kotlin.Array)`, or if the descriptions contain extra items that are not in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertContentDescriptionEquals(kotlin.Array)`.

```kotlin
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Icon
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.ColorPainter
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.test.assertContentDescriptionEquals
import androidx.compose.ui.test.onNodeWithTag

composeTestRule.setContent {
    // Explicitly merging descendants to demonstrate list semantics
    Row(Modifier.semantics(mergeDescendants = true) { testTag = "iconRow" }) {
        Icon(ColorPainter(Color.Red), contentDescription = "Navigate Up")
        Icon(ColorPainter(Color.Yellow), contentDescription = "Go Home")
    }
}

// The merged content description list is: ["Navigate Up", "Go Home"]

// We provide all items exactly as they appear in the merged list.
// Order does not matter.
composeTestRule
    .onNodeWithTag("iconRow")
    .assertContentDescriptionEquals("Go Home", "Navigate Up")
```

| Parameters |
|---|---|
| `vararg values: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | List of values to match (the order does not matter). |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#ContentDescription()` |   |

### SemanticsNodeInteraction.assertHasClickAction

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertHasClickAction)

```
fun SemanticsNodeInteraction.assertHasClickAction(): SemanticsNodeInteraction
```

Asserts that the current semantics node has a click action.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is doesn't have a click action.

### SemanticsNodeInteraction.assertHasNoClickAction

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertHasNoClickAction)

```
fun SemanticsNodeInteraction.assertHasNoClickAction(): SemanticsNodeInteraction
```

Asserts that the current semantics node has doesn't have a click action.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node has a click action.

### SemanticsNodeInteraction.assertIsDisplayed

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsDisplayed)

```
fun SemanticsNodeInteraction.assertIsDisplayed(): SemanticsNodeInteraction
```

Asserts that the current semantics node is displayed on screen.

Specifically, the node must be composed, placed and at least a portion of its bounds must be visible on screen after clipping is applied.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is not displayed.

### SemanticsNodeInteraction.assertIsEnabled

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsEnabled)

```
fun SemanticsNodeInteraction.assertIsEnabled(): SemanticsNodeInteraction
```

Asserts that the current semantics node is enabled.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is not enabled or does not define the property at all.

### SemanticsNodeInteraction.assertIsFocused

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsFocused)

```
fun SemanticsNodeInteraction.assertIsFocused(): SemanticsNodeInteraction
```

Asserts that the current semantics node has a focus.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is not in the focus or does not defined the property at all.

### SemanticsNodeInteraction.assertIsNotDisplayed

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsNotDisplayed)

```
fun SemanticsNodeInteraction.assertIsNotDisplayed(): SemanticsNodeInteraction
```

Asserts that the current semantics node is not displayed on screen, including when the node is not composed, composed but not placed, or when none of its bounds are visible on screen after clipping is applied.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | If the node is displayed. |

### SemanticsNodeInteraction.assertIsNotEnabled

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsNotEnabled)

```
fun SemanticsNodeInteraction.assertIsNotEnabled(): SemanticsNodeInteraction
```

Asserts that the current semantics node is not enabled.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is enabled or does not defined the property at all.

### SemanticsNodeInteraction.assertIsNotFocused

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsNotFocused)

```
fun SemanticsNodeInteraction.assertIsNotFocused(): SemanticsNodeInteraction
```

Asserts that the current semantics node does not have a focus.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is in the focus or does not defined the property at all.

### SemanticsNodeInteraction.assertIsNotSelected

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsNotSelected)

```
fun SemanticsNodeInteraction.assertIsNotSelected(): SemanticsNodeInteraction
```

Asserts that the current semantics node is not selected.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is selected or not selectable.

### SemanticsNodeInteraction.assertIsOff

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsOff)

```
fun SemanticsNodeInteraction.assertIsOff(): SemanticsNodeInteraction
```

Asserts that the current semantics node is unchecked.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is checked, indeterminate, or not toggleable.

### SemanticsNodeInteraction.assertIsOn

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsOn)

```
fun SemanticsNodeInteraction.assertIsOn(): SemanticsNodeInteraction
```

Asserts that the current semantics node is checked.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is not unchecked, indeterminate, or not toggleable.

### SemanticsNodeInteraction.assertIsSelectable

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsSelectable)

```
fun SemanticsNodeInteraction.assertIsSelectable(): SemanticsNodeInteraction
```

Asserts that the current semantics node is selectable.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is not selectable.

### SemanticsNodeInteraction.assertIsSelected

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsSelected)

```
fun SemanticsNodeInteraction.assertIsSelected(): SemanticsNodeInteraction
```

Asserts that the current semantics node is selected.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is unselected or not selectable.

### SemanticsNodeInteraction.assertIsToggleable

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertIsToggleable)

```
fun SemanticsNodeInteraction.assertIsToggleable(): SemanticsNodeInteraction
```

Asserts that the current semantics node is toggleable.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node is not toggleable.

### SemanticsNodeInteraction.assertRangeInfoEquals

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertRangeInfoEquals)

```
fun SemanticsNodeInteraction.assertRangeInfoEquals(
    value: ProgressBarRangeInfo
): SemanticsNodeInteraction
```

Asserts the node's range info equals the given value.

For further details please check `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#ProgressBarRangeInfo()`. Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node's value is not equal to `value`, or if the node has no value

### SemanticsNodeInteraction.assertTextContains

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertTextContains)

```
fun SemanticsNodeInteraction.assertTextContains(
    value: String,
    substring: Boolean = false,
    ignoreCase: Boolean = false
): SemanticsNodeInteraction
```

Asserts that the node's list of text values contains the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextContains(kotlin.String,kotlin.Boolean,kotlin.Boolean)`.

This will also search in `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#EditableText()` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#InputText()`.

The `Text` property is represented as a list of strings. In the merged semantics tree (the default in Compose testing), this list often contains multiple text items merged from child nodes. This function evaluates whether any individual item in that list matches the provided `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextContains(kotlin.String,kotlin.Boolean,kotlin.Boolean)`.

By default, this requires an exact string match with at least one complete item in the list.

Typically, accessibility tooling will decide based on its heuristics which ones to use.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node's value list does not contain `value`, or if the node has no value.

```kotlin
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Text
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.semantics.text
import androidx.compose.ui.test.assertTextContains
import androidx.compose.ui.test.onNodeWithTag

composeTestRule.setContent {
    // Explicitly merging descendants to demonstrate list semantics
    Row(Modifier.semantics(mergeDescendants = true) { testTag = "textRow" }) {
        Text("Hello")
        Text("World")
    }
}

// The merged text list is: ["Hello", "World"]

// "Hello" is an exact match for one of the items in the list.
composeTestRule.onNodeWithTag("textRow").assertTextContains("Hello")

// "Hel" is a substring of an item in the list, and we explicitly enable substring matching.
composeTestRule.onNodeWithTag("textRow").assertTextContains("Hel", substring = true)
```

| Parameters |
|---|---|
| `value: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | Value to match against the items in the list of text values. |
| `substring: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether this can be satisfied as a substring match of an item in the list of text. Defaults to false. |
| `ignoreCase: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether case should be ignored. Defaults to false. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#Text()` |   |

### SemanticsNodeInteraction.assertTextEquals

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertTextEquals)

```
fun SemanticsNodeInteraction.assertTextEquals(
    vararg values: String,
    includeEditableText: Boolean = true,
    includeInputText: Boolean = false
): SemanticsNodeInteraction
```

Asserts that the node's list of text values contains exactly the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextEquals(kotlin.Array,kotlin.Boolean,kotlin.Boolean)` and nothing else.

By default, this searches in `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#Text()` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#EditableText()`. To also evaluate `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#InputText()` (which holds the raw user input of fields like passwords, bypassing visual transformations), set `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextEquals(kotlin.Array,kotlin.Boolean,kotlin.Boolean)` to `true`.

The `Text` property is represented as a list of strings. In the merged semantics tree (the default in Compose testing), this list often contains multiple text items merged from child nodes. This function evaluates the entire list.

The assertion will only pass if the node's list contains all the provided `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextEquals(kotlin.Array,kotlin.Boolean,kotlin.Boolean)`, and contains no additional items. Note that the order of the elements does not matter.

Typically, accessibility tooling will decide based on its heuristics which ones to use.

Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node's text values don't contain all items from `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextEquals(kotlin.Array,kotlin.Boolean,kotlin.Boolean)`, or if the text values contain extra items that are not in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTextEquals(kotlin.Array,kotlin.Boolean,kotlin.Boolean)`.

```kotlin
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Text
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.inputText
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.semantics.text
import androidx.compose.ui.test.assertTextEquals
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.text.AnnotatedString

composeTestRule.setContent {
    // Explicitly merging descendants to demonstrate list semantics
    Row(Modifier.semantics(mergeDescendants = true) { testTag = "textRow" }) {
        Text("First Name:")
        Text("Compose")
    }

    // Simulating a password field where the visual text is masked,
    // but the raw user input is stored in InputText.
    Box(
        Modifier.semantics {
            text = AnnotatedString("(000) 123-4567")
            inputText = AnnotatedString("0001234567")
            testTag = "phoneField"
        }
    )
}

// The merged text list is: ["First Name:", "Compose"]

// We provide all items exactly as they appear in the merged list.
composeTestRule.onNodeWithTag("textRow").assertTextEquals("Compose", "First Name:")

// By default, assertTextEquals evaluates Text (and EditableText),
// but ignores InputText. The evaluated list is simply ["(000) 123-4567"].
composeTestRule.onNodeWithTag("phoneField").assertTextEquals("(000) 123-4567")

// We explicitly opt in to evaluating the InputText property.
composeTestRule
    .onNodeWithTag("phoneField")
    .assertTextEquals("0001234567", "(000) 123-4567", includeInputText = true)
```

| Parameters |
|---|---|
| `vararg values: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | List of values to match (the order does not matter). |
| `includeEditableText: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = true` | Whether to also assert against the editable text. Defaults to true. |
| `includeInputText: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | Whether to also assert against the un-transformed input text. Defaults to false. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#Text()` |   |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#EditableText()` |   |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#InputText()` |   |

### SemanticsNodeInteraction.assertValueEquals

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:assertValueEquals)

```
fun SemanticsNodeInteraction.assertValueEquals(value: String): SemanticsNodeInteraction
```

Asserts the node's value equals the given value.

For further details please check `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#StateDescription()`. Throws `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if the node's value is not equal to `value`, or if the node has no value

### SemanticsNodeInteraction.isDisplayed

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:isDisplayed)

```
fun SemanticsNodeInteraction.isDisplayed(): Boolean
```

Returns true if the matched node is displayed on screen.

Specifically, the node must be composed, placed and at least a portion of its bounds must be visible on screen after clipping is applied. If no matching node is found, returns false. If multiple nodes match, throws an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html`.

```kotlin
import androidx.compose.ui.test.isDisplayed
import androidx.compose.ui.test.onNodeWithTag

val interaction = composeTestRule.onNodeWithTag("test")
composeTestRule.waitUntil { interaction.isDisplayed() }
```

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | If multiple nodes match this `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsDisplayed()` |   |

### SemanticsNodeInteraction.isNotDisplayed

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Assertions.kt+function:isNotDisplayed)

```
fun SemanticsNodeInteraction.isNotDisplayed(): Boolean
```

Returns true if the matched node is not displayed on screen, including when the node is not composed, composed but not placed, or when none of its bounds are visible on screen after clipping is applied.

Returns false if a matching node is currently displayed.

```kotlin
import androidx.compose.ui.test.isNotDisplayed
import androidx.compose.ui.test.onNodeWithTag

val interaction = composeTestRule.onNodeWithTag("test")
composeTestRule.waitUntil { interaction.isNotDisplayed() }
```

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | If multiple nodes match this `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertIsNotDisplayed()` |   |

### SemanticsNodeInteraction.assertHeightIsAtLeast

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertHeightIsAtLeast)

```
fun SemanticsNodeInteraction.assertHeightIsAtLeast(expectedMinHeight: Dp): SemanticsNodeInteraction
```

Asserts that the layout of this node has height that is greater than or equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHeightIsAtLeast(androidx.compose.ui.unit.Dp)`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if comparison fails. |

### SemanticsNodeInteraction.assertHeightIsEqualTo

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertHeightIsEqualTo)

```
fun SemanticsNodeInteraction.assertHeightIsEqualTo(
    expectedHeight: Dp,
    tolerance: Dp = Dp.Unspecified
): SemanticsNodeInteraction
```

Asserts that the layout of this node has height equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`.

| Parameters |
|---|---|
| `expectedHeight: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | The expected height of the layout. |
| `tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = Dp.Unspecified` | The tolerance within which the values should be treated as equal. Defaults to the tolerance configured in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig`, or `0.5.dp` if unspecified. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if comparison fails. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig` |   |

### SemanticsNodeInteraction.assertLeftPositionInRootIsEqualTo

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertLeftPositionInRootIsEqualTo)

```
fun SemanticsNodeInteraction.assertLeftPositionInRootIsEqualTo(
    expectedLeft: Dp,
    tolerance: Dp = Dp.Unspecified
): SemanticsNodeInteraction
```

Asserts that the layout of this node has the left position in the root composable that is equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertLeftPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertLeftPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`.

| Parameters |
|---|---|
| `expectedLeft: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | The left (x) position to assert. |
| `tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = Dp.Unspecified` | The tolerance within which the values should be treated as equal. Defaults to the tolerance configured in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig`, or `0.5.dp` if unspecified. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if comparison fails. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig` |   |

### SemanticsNodeInteraction.assertPositionInRootIsEqualTo

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertPositionInRootIsEqualTo)

```
fun SemanticsNodeInteraction.assertPositionInRootIsEqualTo(
    expectedLeft: Dp,
    expectedTop: Dp,
    tolerance: Dp = Dp.Unspecified
): SemanticsNodeInteraction
```

Asserts that the layout of this node has position in the root composable that is equal to the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`.

| Parameters |
|---|---|
| `expectedLeft: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | The left (x) position to assert. |
| `expectedTop: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | The top (y) position to assert. |
| `tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = Dp.Unspecified` | The tolerance within which the values should be treated as equal. Defaults to the tolerance configured in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig`, or `0.5.dp` if unspecified. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if comparison fails. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig` |   |

### SemanticsNodeInteraction.assertTopPositionInRootIsEqualTo

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertTopPositionInRootIsEqualTo)

```
fun SemanticsNodeInteraction.assertTopPositionInRootIsEqualTo(
    expectedTop: Dp,
    tolerance: Dp = Dp.Unspecified
): SemanticsNodeInteraction
```

Asserts that the layout of this node has the top position in the root composable that is equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTopPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTopPositionInRootIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`.

| Parameters |
|---|---|
| `expectedTop: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | The top (y) position to assert. |
| `tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = Dp.Unspecified` | The tolerance within which the values should be treated as equal. Defaults to the tolerance configured in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig`, or `0.5.dp` if unspecified. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if comparison fails. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig` |   |

### SemanticsNodeInteraction.assertTouchHeightIsEqualTo

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertTouchHeightIsEqualTo)

```
fun SemanticsNodeInteraction.assertTouchHeightIsEqualTo(
    expectedHeight: Dp,
    tolerance: Dp = Dp.Unspecified
): SemanticsNodeInteraction
```

Asserts that the touch bounds of this node has height equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchHeightIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`.

| Parameters |
|---|---|
| `expectedHeight: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | The expected touch height of the layout. |
| `tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = Dp.Unspecified` | The tolerance within which the values should be treated as equal. Defaults to the tolerance configured in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig`, or `0.5.dp` if unspecified. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if comparison fails. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig` |   |

### SemanticsNodeInteraction.assertTouchWidthIsEqualTo

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertTouchWidthIsEqualTo)

```
fun SemanticsNodeInteraction.assertTouchWidthIsEqualTo(
    expectedWidth: Dp,
    tolerance: Dp = Dp.Unspecified
): SemanticsNodeInteraction
```

Asserts that the touch bounds of this node has width equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertTouchWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`.

| Parameters |
|---|---|
| `expectedWidth: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | The expected touch width of the layout. |
| `tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = Dp.Unspecified` | The tolerance within which the values should be treated as equal. Defaults to the tolerance configured in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig`, or `0.5.dp` if unspecified. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig` |   |

### SemanticsNodeInteraction.assertWidthIsAtLeast

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertWidthIsAtLeast)

```
fun SemanticsNodeInteraction.assertWidthIsAtLeast(expectedMinWidth: Dp): SemanticsNodeInteraction
```

Asserts that the layout of this node has width that is greater than or equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertWidthIsAtLeast(androidx.compose.ui.unit.Dp)`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if comparison fails. |

### SemanticsNodeInteraction.assertWidthIsEqualTo

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:assertWidthIsEqualTo)

```
fun SemanticsNodeInteraction.assertWidthIsEqualTo(
    expectedWidth: Dp,
    tolerance: Dp = Dp.Unspecified
): SemanticsNodeInteraction
```

Asserts that the layout of this node has width equal to `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)` within the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).assertWidthIsEqualTo(androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp)`.

| Parameters |
|---|---|
| `expectedWidth: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | The expected width of the layout. |
| `tolerance: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp = Dp.Unspecified` | The tolerance within which the values should be treated as equal. Defaults to the tolerance configured in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig`, or `0.5.dp` if unspecified. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if comparison fails. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig` |   |

### SemanticsNodeInteraction.getAlignmentLinePosition

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:getAlignmentLinePosition)

```
fun SemanticsNodeInteraction.getAlignmentLinePosition(
    alignmentLine: AlignmentLine
): Dp
```

Returns the position of an `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine`, or `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp#Unspecified()` if the line is not provided.

### SemanticsNodeInteraction.getBoundsInRoot

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:getBoundsInRoot)

```
fun SemanticsNodeInteraction.getBoundsInRoot(): DpRect
```

Returns the bounds of the layout of this node as clipped to the root. The bounds are relative to the root composable.

### SemanticsNodeInteraction.getFirstLinkBounds

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:getFirstLinkBounds)

```
fun SemanticsNodeInteraction.getFirstLinkBounds(
    predicate: (AnnotatedString.Range<LinkAnnotation>) -> Boolean = { true }
): Rect?
```

Returns the bounds of the first link matching the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).getFirstLinkBounds(kotlin.Function1)`, or if that link spans multiple lines, returns the bounds of the first line of the link.

A link in a Text composable is defined by a `https://developer.android.com/reference/kotlin/androidx/compose/ui/text/LinkAnnotation` of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/text/AnnotatedString`.

The bounds are in the text node's coordinate system.

You can pass an offset from within the bounds to injection methods to operate them on the link, for example `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.TouchInjectionScope).click(androidx.compose.ui.geometry.Offset)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/MouseInjectionScope#moveTo(androidx.compose.ui.geometry.Offset,kotlin.Long)`.

```kotlin
import androidx.compose.ui.test.getFirstLinkBounds
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performMouseInput
import androidx.compose.ui.text.LinkAnnotation

// Example of hovering over the first link in test
val firstLinkBounds =
    composeTestRule.onNodeWithText("YOUR_TEXT_WITH_LINK").getFirstLinkBounds {
        (it.item as? LinkAnnotation.Url)?.url == "YOUR_URL"
    }

composeTestRule.onNodeWithText("YOUR_TEXT_WITH_LINK").performMouseInput {
    moveTo(firstLinkBounds!!.center)
}
```

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).performFirstLinkClick(kotlin.Function1)` |   |

### SemanticsNodeInteraction.getUnclippedBoundsInRoot

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/BoundsAssertions.kt+function:getUnclippedBoundsInRoot)

```
fun SemanticsNodeInteraction.getUnclippedBoundsInRoot(): DpRect
```

Returns the bounds of the layout of this node. The bounds are relative to the root composable.

### SemanticsNodeInteraction.invokeGlobalAssertions

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/GlobalAssertions.kt+function:invokeGlobalAssertions)

```
@ExperimentalTestApi
fun SemanticsNodeInteraction.[invokeGlobalAssertions](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#(androidx.compose.ui.test.SemanticsNodeInteraction).invokeGlobalAssertions())(): SemanticsNodeInteraction
```

> [!CAUTION]
> **This function is deprecated.**   
> This API has been removed and its intended usage to run accessibility checks can now be done via \`SemanticsNodeInteraction.tryPerformAccessibilityChecks()\`, use this instead:
>
> ```kotlin
> tryPerformAccessibilityChecks()
> ```

Executes all of the assertions registered by `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#addGlobalAssertion(kotlin.String,kotlin.Function1)`. This may be useful in a custom test action.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` | the `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction` that is the receiver of this method |

### SemanticsNodeInteraction.performKeyPress

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/KeyInputHelpers.kt+function:performKeyPress)

```
fun SemanticsNodeInteraction.performKeyPress(keyEvent: KeyEvent): Boolean
```

Send the specified `https://developer.android.com/reference/kotlin/androidx/compose/ui/input/key/KeyEvent` to the focused component.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the event was consumed. False otherwise. |

### SemanticsNodeInteraction.printToLog

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Output.kt+function:printToLog)

```
fun SemanticsNodeInteraction.printToLog(
    tag: String,
    maxDepth: Int = Int.MAX_VALUE
): Unit
```

Prints all the semantics nodes information into logs (as debug level).

By default this also prints all the sub-hierarchy. This can be changed by setting a custom max depth in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).printToLog(kotlin.String,kotlin.Int)`.

Note that this will fetch the latest snapshot of nodes it sees in the hierarchy for the IDs it collected before. So the output can change over time if the tree changes.

| Parameters |
|---|---|
| `tag: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | The tag to be used in the log messages. |
| `maxDepth: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html = Int.MAX_VALUE` | Max depth of the nodes in hierarchy to print. Zero will print just this node. Must not be negative. |

### SemanticsNodeInteraction.printToString

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Output.kt+function:printToString)

```
fun SemanticsNodeInteraction.printToString(maxDepth: Int = Int.MAX_VALUE): String
```

Prints all the semantics nodes information it holds into string.

By default this also prints all the sub-hierarchy. This can be changed by setting a custom max depth in `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).printToString(kotlin.Int)`.

Note that this will fetch the latest snapshot of nodes it sees in the hierarchy for the IDs it collected before. So the output can change over time if the tree changes.

| Parameters |
|---|---|
| `maxDepth: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html = Int.MAX_VALUE` | Max depth of the nodes in hierarchy to print. Zero will print just this node. Must not be negative. |

### SemanticsNodeInteraction.onAncestors

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Selectors.kt+function:onAncestors)

```
fun SemanticsNodeInteraction.onAncestors(): SemanticsNodeInteractionCollection
```

Returns all the ancestors of this node.

Example: For the following tree

```kotlin
|-A
  |-B
    |-C <- this node
```

Returns B, A

### SemanticsNodeInteraction.onChild

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Selectors.kt+function:onChild)

```
fun SemanticsNodeInteraction.onChild(): SemanticsNodeInteraction
```

Returns exactly one child of this node.

Use this only if this node has exactly one child.

Any subsequent operation on its result will expect exactly one element found (unless `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#assertDoesNotExist()` is used) and will throw `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if none or more than one element is found.

### SemanticsNodeInteraction.onChildAt

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Selectors.kt+function:onChildAt)

```
fun SemanticsNodeInteraction.onChildAt(index: Int): SemanticsNodeInteraction
```

Returns child of this node at the given index.

This is just a shortcut for "children`https://developer.android.com/reference/kotlin/androidx/compose/ui/test/package-summary#(androidx.compose.ui.test.SemanticsNodeInteraction).onChildAt(kotlin.Int)`".

### SemanticsNodeInteraction.onChildren

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Selectors.kt+function:onChildren)

```
fun SemanticsNodeInteraction.onChildren(): SemanticsNodeInteractionCollection
```

Returns children of this node at the moment of invocation, it only captures nodes that are currently present in the semantic tree.

This is especially relevant for lazy layouts like 'LazyColumn' or 'LazyRow' where only a subset of items are currently composed and exist in the tree. Therefore, this function will only return those currently composed items, not all the items in the backing data set.

### SemanticsNodeInteraction.onDescendants

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Selectors.kt+function:onDescendants)

```
fun SemanticsNodeInteraction.onDescendants(): SemanticsNodeInteractionCollection
```

Returns all the descendants of this node in Depth-First Search order.

Example: For the following tree

```kotlin
|-A <- this node
  |-B
    |-C
  |-D
    |-E
```

Returns B, C, D, E

### SemanticsNodeInteraction.onParent

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Selectors.kt+function:onParent)

```
fun SemanticsNodeInteraction.onParent(): SemanticsNodeInteraction
```

Returns a parent of this node.

Any subsequent operation on its result will expect exactly one element found (unless `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#assertDoesNotExist()` is used) and will throw `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if none or more than one element is found.

### SemanticsNodeInteraction.onSibling

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Selectors.kt+function:onSibling)

```
fun SemanticsNodeInteraction.onSibling(): SemanticsNodeInteraction
```

Returns exactly one sibling of this node.

Use this only if this node has exactly one sibling.

Any subsequent operation on its result will expect exactly one element found (unless `https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction#assertDoesNotExist()` is used) and will throw `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` if none or more than one element is found.

### SemanticsNodeInteraction.onSiblings

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/Selectors.kt+function:onSiblings)

```
fun SemanticsNodeInteraction.onSiblings(): SemanticsNodeInteractionCollection
```

Returns all siblings of this node.

Example: For the following tree

```kotlin
|-A
  |-B1
  |-B2 <- this node
  |-B3
```

Returns B1, B3

### SemanticsNodeInteraction.performImeAction

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/TextActions.kt+function:performImeAction)

```
fun SemanticsNodeInteraction.performImeAction(): Unit
```

Sends to this node the IME action associated with it in a similar way to the IME.

The node needs to define its IME action in semantics via `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/package-summary#(androidx.compose.ui.semantics.SemanticsPropertyReceiver).onImeAction(androidx.compose.ui.text.input.ImeAction,kotlin.String,kotlin.Function0)`.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-assertion-error/index.html` | if the node does not support input or does not define IME action. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if the node did is not an editor or would not be able to establish an input connection (e.g. does not define `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsProperties#ImeAction()` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/SemanticsActions#OnImeAction()` or is not focused). |

### SemanticsNodeInteraction.performTextClearance

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/TextActions.kt+function:performTextClearance)

```
fun SemanticsNodeInteraction.performTextClearance(): Unit
```

Clears the text in this node in similar way to IME.

### SemanticsNodeInteraction.performTextInput

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/TextActions.kt+function:performTextInput)

```
fun SemanticsNodeInteraction.performTextInput(text: String): Unit
```

Sends the given text to this node in similar way to IME.

| Parameters |
|---|---|
| `text: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | Text to send. |

### SemanticsNodeInteraction.performTextInputSelection

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/TextActions.kt+function:performTextInputSelection)

```
fun SemanticsNodeInteraction.performTextInputSelection(
    selection: TextRange,
    relativeToOriginalText: Boolean = true
): Unit
```

Sends the given selection to this node in similar way to IME.

| Parameters |
|---|---|
| `selection: https://developer.android.com/reference/kotlin/androidx/compose/ui/text/TextRange` | the selection to send |
| `relativeToOriginalText: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = true` | `true` if the selection is relative to the untransformed, original text. `false` if it is relative to the visual text following any transformations. |

### SemanticsNodeInteraction.performTextReplacement

Cmn Artifact: [androidx.compose.ui:ui-test](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/test/TextActions.kt+function:performTextReplacement)

```
fun SemanticsNodeInteraction.performTextReplacement(text: String): Unit
```

Replaces existing text with the given text in this node in similar way to IME.

This does not reflect text selection. All the text gets cleared out and new inserted.

| Parameters |
|---|---|
| `text: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | Text to send. |