mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-04 20:17:09 +00:00
feat(companion): add appState, eraseText, pressKey runner handlers
The Go runner transport already calls these methods; the in-device runner implemented them only latently. They become load-bearing on the device path, where the hybrid's legacy-companion fallback is absent. Backward compatible: the simulator hybrid never calls them.
This commit is contained in:
1 parent
e04631d4c9
commit
99ae7c9294
3 files changed
+70
No files matched your search
@@ -31,6 +31,29 @@ enum AppLifecycle {
|
||||
}
|
||||
}
|
||||
|
||||
// state reports the app's run state in the vocabulary the Go transport maps
|
||||
// to a process state: foreground, background, or notRunning. On the
|
||||
// simulator the hybrid never calls it; on device it backs ForegroundApp.
|
||||
static func state(bundleIdentifier: String) -> String {
|
||||
var result = "notRunning"
|
||||
let collect = {
|
||||
switch XCUIApplication(bundleIdentifier: bundleIdentifier).state {
|
||||
case .runningForeground:
|
||||
result = "foreground"
|
||||
case .runningBackground, .runningBackgroundSuspended:
|
||||
result = "background"
|
||||
default:
|
||||
result = "notRunning"
|
||||
}
|
||||
}
|
||||
if Thread.isMainThread {
|
||||
collect()
|
||||
} else {
|
||||
DispatchQueue.main.sync(execute: collect)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// onMainCatching runs automation work on the main thread and converts a
|
||||
// framework assertion into a thrown error so the server survives it.
|
||||
private static func onMainCatching(_ work: @escaping () -> Void) throws {
|
||||
|
||||
Reference in new issue
Block a user