Mobile keywords ignored timeout when run using Kobiton

When I call Mobile.verifyElementExist or Mobile.tap with a timeout of 15 seconds, it’s usually long enough for it to also wait for the page to load (2-3 seconds) and then finding the object in the loaded page.

But when I run my tests using kobiton, it failed early before the timeout; as if it’s given up as soon as it has finished scanning the loading page.

I thought of using delay between actions settings but it’s unavailable in the katalon version that I’m using.

Katalon ver that I’m using: 10.2.4 because 10.4.x version has on prem kobiton issues and 11.x version has login using proxy issues.

hi @Mich778

the timeout parameter relies on Appium implicit wait, but the cloud side sometimes overrides or ignores it

the most reliable workaround is to stop relying on the timeout argument and use a custom retry loop instead. wrap your check in something like this:

boolean found = false
int maxRetries = 5
int retryDelay = 3

for (int i = 0; i < maxRetries; i++) {
    found = Mobile.verifyElementExist(findTestObject('yourObject'), 1, FailureHandling.OPTIONAL)
    if (found) break
    Mobile.delay(retryDelay)
}

if (!found) {
    Mobile.comment('Element never appeared')
    // handle failure
}
Mobile.tap(findTestObject('yourObject'), 5)

hope this help

Use a custom retry loop, not the built-in timeout alone.

Reliable Pattern

boolean found = false
int retries = 5
int waitSec = 3

for (int i = 0; i < retries; i++) {
    found = Mobile.verifyElementExist(findTestObject('yourObject'), 1, FailureHandling.OPTIONAL)
    if (found) break
    Mobile.delay(waitSec)
}

if (!found) {
    KeywordUtil.markFailed("Element never appeared")
}
Mobile.tap(findTestObject('yourObject'), 5)

Why

cloud execution can return before the full app state is ready, so the timeout argument is not always enough on its own.

Extra Checks

  • Use a short verify timeout inside the loop, then retry.
  • Keep locators stable and avoid depending on page load timing.
  • If possible, add an app-state wait before the tap, not just after navigation.

@Mich778 this solution will work, try this and let us know