2026-02-28 13:38:59 +01:00
|
|
|
// MARK: - Wire Models
|
|
|
|
|
|
|
|
|
|
enum CommandType: String, Codable {
|
|
|
|
|
case tap
|
2026-03-23 16:01:52 +01:00
|
|
|
case mouseClick
|
2026-02-28 13:38:59 +01:00
|
|
|
case tapSeries
|
|
|
|
|
case longPress
|
|
|
|
|
case drag
|
|
|
|
|
case dragSeries
|
|
|
|
|
case type
|
|
|
|
|
case swipe
|
|
|
|
|
case findText
|
|
|
|
|
case snapshot
|
|
|
|
|
case screenshot
|
|
|
|
|
case back
|
|
|
|
|
case home
|
|
|
|
|
case appSwitcher
|
|
|
|
|
case alert
|
|
|
|
|
case pinch
|
|
|
|
|
case recordStart
|
|
|
|
|
case recordStop
|
|
|
|
|
case shutdown
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enum SwipeDirection: String, Codable {
|
|
|
|
|
case up
|
|
|
|
|
case down
|
|
|
|
|
case left
|
|
|
|
|
case right
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct Command: Codable {
|
|
|
|
|
let command: CommandType
|
|
|
|
|
let appBundleId: String?
|
|
|
|
|
let text: String?
|
|
|
|
|
let clearFirst: Bool?
|
|
|
|
|
let action: String?
|
|
|
|
|
let x: Double?
|
|
|
|
|
let y: Double?
|
2026-03-23 16:01:52 +01:00
|
|
|
let button: String?
|
2026-02-28 13:38:59 +01:00
|
|
|
let count: Double?
|
|
|
|
|
let intervalMs: Double?
|
|
|
|
|
let doubleTap: Bool?
|
|
|
|
|
let pauseMs: Double?
|
|
|
|
|
let pattern: String?
|
|
|
|
|
let x2: Double?
|
|
|
|
|
let y2: Double?
|
|
|
|
|
let durationMs: Double?
|
|
|
|
|
let direction: SwipeDirection?
|
|
|
|
|
let scale: Double?
|
|
|
|
|
let outPath: String?
|
|
|
|
|
let fps: Int?
|
|
|
|
|
let interactiveOnly: Bool?
|
|
|
|
|
let compact: Bool?
|
|
|
|
|
let depth: Int?
|
|
|
|
|
let scope: String?
|
|
|
|
|
let raw: Bool?
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct Response: Codable {
|
|
|
|
|
let ok: Bool
|
|
|
|
|
let data: DataPayload?
|
|
|
|
|
let error: ErrorPayload?
|
|
|
|
|
|
|
|
|
|
init(ok: Bool, data: DataPayload? = nil, error: ErrorPayload? = nil) {
|
|
|
|
|
self.ok = ok
|
|
|
|
|
self.data = data
|
|
|
|
|
self.error = error
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct DataPayload: Codable {
|
|
|
|
|
let message: String?
|
|
|
|
|
let found: Bool?
|
|
|
|
|
let items: [String]?
|
|
|
|
|
let nodes: [SnapshotNode]?
|
|
|
|
|
let truncated: Bool?
|
|
|
|
|
|
|
|
|
|
init(
|
|
|
|
|
message: String? = nil,
|
|
|
|
|
found: Bool? = nil,
|
|
|
|
|
items: [String]? = nil,
|
|
|
|
|
nodes: [SnapshotNode]? = nil,
|
|
|
|
|
truncated: Bool? = nil
|
|
|
|
|
) {
|
|
|
|
|
self.message = message
|
|
|
|
|
self.found = found
|
|
|
|
|
self.items = items
|
|
|
|
|
self.nodes = nodes
|
|
|
|
|
self.truncated = truncated
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct ErrorPayload: Codable {
|
|
|
|
|
let message: String
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct SnapshotRect: Codable {
|
|
|
|
|
let x: Double
|
|
|
|
|
let y: Double
|
|
|
|
|
let width: Double
|
|
|
|
|
let height: Double
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct SnapshotNode: Codable {
|
|
|
|
|
let index: Int
|
|
|
|
|
let type: String
|
|
|
|
|
let label: String?
|
|
|
|
|
let identifier: String?
|
|
|
|
|
let value: String?
|
|
|
|
|
let rect: SnapshotRect
|
|
|
|
|
let enabled: Bool
|
|
|
|
|
let hittable: Bool
|
|
|
|
|
let depth: Int
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct SnapshotOptions {
|
|
|
|
|
let interactiveOnly: Bool
|
|
|
|
|
let compact: Bool
|
|
|
|
|
let depth: Int?
|
|
|
|
|
let scope: String?
|
|
|
|
|
let raw: Bool
|
|
|
|
|
}
|