diff --git a/sidecar/src/main/kotlin/dev/sanderling/sidecar/DriverBackend.kt b/sidecar/src/main/kotlin/dev/sanderling/sidecar/DriverBackend.kt index 517d820..d91cf2a 100644 --- a/sidecar/src/main/kotlin/dev/sanderling/sidecar/DriverBackend.kt +++ b/sidecar/src/main/kotlin/dev/sanderling/sidecar/DriverBackend.kt @@ -530,11 +530,12 @@ class IosDriverBackend(private val udid: String) : DriverBackend { private fun withReconnect(block: () -> T): T { return try { block() - } catch (e: java.io.IOException) { - try { - driver.open() - warmup() - } catch (reconnectErr: Exception) { + } catch (e: Exception) { + val isIoFailure = generateSequence(e as Throwable) { it.cause } + .any { it is java.io.IOException } + if (!isIoFailure) throw e + try { driver.open(); warmup() } + catch (reconnectErr: Exception) { throw IllegalStateException("WDA reconnect failed: $reconnectErr", e) } block()