How to set id in Jetpack Compose for Appium and UIAutomator (Xpath issue)
Asked Answered
C

0

6

I am using Jetpack Compose and Appium with UIAutomator. I would like to set a unique id for the Composables instead of showing the Xpath because of: Using XPath locators is not recommended and can lead to fragile tests. Ask your development team to provide unique accessibility locators instead.

Inside Android Studio under my Composable I have added:

Row(
  modifier = Modifier.semantics { testTagsAsResourceId = true }
    ...
    ) {
       Text(
         modifier = Modifier.semantics { testTag = "testTag" },

Now in Appium I can see that the resource-id = testTag, but the id is still showing the Xpath.

According to this article I should be able to set the id to the same as resource-id by using @AndroidFindBy and some class UiSelector but I do not understand how - should I add this annotation inside my Composable?

I read about a solution here but Espresso is not an option for me, unfortunately.

I also tried using:

modifier = Modifier.semantics { this.contentDescription = "testTag" },

And this actually changed the Xpath, but still it showed the warning above.

This is how I would like to have it (where id and resource-id has the same value): image from article

Carpous answered 3/1, 2023 at 15:40 Comment(1)
Modifier.semantics { this.contentDescription = "testTag" } seems to work if we set driver as driver.find_element(by = AppiumBy.ACCESSIBILITY_ID, value="testTag")Denysedenzil

© 2022 - 2024 — McMap. All rights reserved.