diff --git a/packages/patrol/CHANGELOG.md b/packages/patrol/CHANGELOG.md index c5a2f400f..4400a6b32 100644 --- a/packages/patrol/CHANGELOG.md +++ b/packages/patrol/CHANGELOG.md @@ -2,6 +2,7 @@ - Bump Gradle version in the example app so it's possible to build them on the latest JDK 23 (#2503) +- Fix `$.native.tap()` not working with `Selector` having `instance` set. (#2501) ## 3.14.0 diff --git a/packages/patrol/android/src/main/kotlin/pl/leancode/patrol/AutomatorServer.kt b/packages/patrol/android/src/main/kotlin/pl/leancode/patrol/AutomatorServer.kt index 32b5392fc..d039689b4 100644 --- a/packages/patrol/android/src/main/kotlin/pl/leancode/patrol/AutomatorServer.kt +++ b/packages/patrol/android/src/main/kotlin/pl/leancode/patrol/AutomatorServer.kt @@ -168,16 +168,24 @@ class AutomatorServer(private val automation: Automator) : NativeAutomatorServer override fun tap(request: TapRequest) { if (request.selector != null) { + // Remove instance before creating bySelector, as it's not supported + var selector2 = request.selector.copy(instance = null) + val bySelector = selector2.toBySelector() + automation.tap( uiSelector = request.selector.toUiSelector(), - bySelector = request.selector.toBySelector(), + bySelector = bySelector, index = request.selector.instance?.toInt() ?: 0, timeout = request.timeoutMillis ) } else if (request.androidSelector != null) { + // Remove instance before creating bySelector, as it's not supported + var androidSelector2 = request.androidSelector.copy(instance = null) + val bySelector = androidSelector2.toBySelector() + automation.tap( uiSelector = request.androidSelector.toUiSelector(), - bySelector = request.androidSelector.toBySelector(), + bySelector = bySelector, index = request.androidSelector.instance?.toInt() ?: 0, timeout = request.timeoutMillis )