(
bridge: &NativeBridge,
udid: &str,
line: &str,
)
| 242 | } |
| 243 | |
| 244 | fn run_batch_step( |
| 245 | bridge: &NativeBridge, |
| 246 | udid: &str, |
| 247 | line: &str, |
| 248 | ) -> Result<&'static str, crate::error::AppError> { |
| 249 | let tokens = tokenize_step(line)?; |
| 250 | let Some(command) = tokens.first().map(String::as_str) else { |
| 251 | return Err(crate::error::AppError::bad_request("Empty batch step.")); |
| 252 | }; |
| 253 | match command { |
| 254 | "sleep" => { |
| 255 | let args = parse_step_options(&tokens[1..]); |
| 256 | let duration_ms = parse_batch_sleep_duration_ms( |
| 257 | &args, |
| 258 | tokens |
| 259 | .iter() |
| 260 | .skip(1) |
| 261 | .find(|token| !token.starts_with('-')) |
| 262 | .map(String::as_str), |
| 263 | )?; |
| 264 | sleep_ms(duration_ms); |
| 265 | Ok("sleep") |
| 266 | } |
| 267 | "tap" => { |
| 268 | let args = parse_step_options(&tokens[1..]); |
| 269 | let x = args.value("x").and_then(|value| value.parse::<f64>().ok()); |
| 270 | let y = args.value("y").and_then(|value| value.parse::<f64>().ok()); |
| 271 | let normalized = args.flag("normalized"); |
| 272 | let duration_ms = args |
| 273 | .value("duration-ms") |
| 274 | .and_then(|value| value.parse().ok()) |
| 275 | .unwrap_or(60); |
| 276 | let target = resolve_tap_target( |
| 277 | bridge, |
| 278 | udid, |
| 279 | TapTargetRequest { |
| 280 | x, |
| 281 | y, |
| 282 | normalized, |
| 283 | selector: batch_selector_from_args(&args), |
| 284 | wait_timeout_ms: args |
| 285 | .value("wait-timeout-ms") |
| 286 | .and_then(|value| value.parse().ok()) |
| 287 | .unwrap_or(0), |
| 288 | poll_interval_ms: args |
| 289 | .value("poll-interval-ms") |
| 290 | .and_then(|value| value.parse().ok()) |
| 291 | .unwrap_or(100), |
| 292 | }, |
| 293 | )?; |
| 294 | if bridge_simulator_is_tvos(bridge, udid) { |
| 295 | press_tvos_remote_key(bridge, udid, HID_KEY_ENTER)?; |
| 296 | } else if let Some(input) = target.input.as_ref() { |
| 297 | perform_tap_with_input(input, target.x, target.y, duration_ms)?; |
| 298 | } else { |
| 299 | perform_tap(bridge, udid, target.x, target.y, duration_ms)?; |
| 300 | } |
| 301 | Ok("tap") |
no test coverage detected