diff --git a/uixt/android_device.go b/uixt/android_device.go index e7cc774c..efb243e8 100644 --- a/uixt/android_device.go +++ b/uixt/android_device.go @@ -114,6 +114,14 @@ func (dev *AndroidDevice) Setup() error { return nil } +func (dev *AndroidDevice) IsHealthy() (bool, error) { + state, err := dev.Device.State() + if err != nil { + return false, err + } + return state == gadb.StateOnline, nil +} + func (dev *AndroidDevice) Teardown() error { return nil } diff --git a/uixt/device.go b/uixt/device.go index 3ced174a..06aeab60 100644 --- a/uixt/device.go +++ b/uixt/device.go @@ -12,6 +12,8 @@ type IDevice interface { UUID() string NewDriver() (driver IDriver, err error) + IsHealthy() (bool, error) + Setup() error Teardown() error diff --git a/uixt/harmony_device.go b/uixt/harmony_device.go index 8725f471..1742f101 100644 --- a/uixt/harmony_device.go +++ b/uixt/harmony_device.go @@ -75,6 +75,10 @@ func (dev *HarmonyDevice) Setup() error { return nil } +func (dev *HarmonyDevice) IsHealthy() (bool, error) { + return true, nil +} + func (dev *HarmonyDevice) Teardown() error { return nil } diff --git a/uixt/ios_device.go b/uixt/ios_device.go index ba16502f..fda57fc8 100644 --- a/uixt/ios_device.go +++ b/uixt/ios_device.go @@ -184,6 +184,18 @@ func (dev *IOSDevice) Setup() error { return nil } +func (dev *IOSDevice) IsHealthy() (bool, error) { + startTimestamp := time.Now() + lockdown, err := ios.ConnectLockdownWithSession(dev.DeviceEntry) + if err != nil { + return false, err + } + defer lockdown.Close() + elapsed := time.Since(startTimestamp) + log.Info().Dur("elapsed", elapsed).Msg("connect lockdown") + return true, nil +} + func (dev *IOSDevice) Teardown() error { for _, listener := range dev.listeners { _ = listener.Close()