fun waitFor()

in remote-robot/src/main/kotlin/com/intellij/remoterobot/utils/RepeatUtils.kt [57:86]


fun <R> waitFor(
    duration: Duration,
    interval: Duration = Duration.ofSeconds(2),
    description: String? = null,
    errorMessage: String = "",
    functionWithCondition: () -> Pair<Boolean, R>
): R {
    var result: R? = null
    if (description != null) {
        return step("Waiting for $description") {
            if (repeatInTime(duration, interval, isLogEnabled = true) {
                    val (condition, functionResult) = functionWithCondition()
                    result = functionResult
                    return@repeatInTime condition
                }) {
                return@step result!!
            }
            throw WaitForConditionTimeoutException(duration, errorMessage)
        }
    } else {
        if (repeatInTime(duration, interval) {
                val (condition, functionResult) = functionWithCondition()
                result = functionResult
                return@repeatInTime condition
            }) {
            return result!!
        }
    }
    throw WaitForConditionTimeoutException(duration, errorMessage)
}