Skip to content

Commit f2ef688

Browse files
authored
docs(ios): note idleTimeout: false guardrail + why swipe/mouseClick bypass performGesture (review nits) (#664)
1 parent 57cd3f3 commit f2ef688

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ extension RunnerTests {
3636
/// (the default) to run inside the scroll idle-timeout + quiescence-skip wrapper; synthesis
3737
/// gestures (pinch/rotate/transform) pass `false` because RunnerSynthesizedGesture governs its
3838
/// own timing. Returns the captured timing and the action's outcome.
39+
///
40+
/// NOTE: a new SYNTHESIS gesture must pass `idleTimeout: false` — the default `true` would wrap
41+
/// it in the scroll idle-timeout/quiescence-skip path and change its runtime behavior.
3942
private func performGesture(
4043
_ app: XCUIApplication,
4144
idleTimeout: Bool = true,
@@ -411,6 +414,8 @@ extension RunnerTests {
411414
}
412415
let touchFrame = resolvedTouchVisualizationFrame(app: activeApp, x: x, y: y)
413416
do {
417+
// mouseClick throws (it has no RunnerInteractionOutcome), so it keeps raw measureGesture
418+
// and only routes the success payload through gestureResponse.
414419
var clickError: Error?
415420
let timing = measureGesture {
416421
do {
@@ -580,6 +585,8 @@ extension RunnerTests {
580585
guard let direction = command.direction else {
581586
return Response(ok: false, error: ErrorPayload(message: "swipe requires direction"))
582587
}
588+
// swipe returns an optional frame (tvOS-only) rather than a RunnerInteractionOutcome, so it
589+
// keeps raw measureGesture and only routes the success payload through gestureResponse.
583590
var executedFrame: DragVisualizationFrame?
584591
let timing = measureGesture {
585592
withTemporaryScrollIdleTimeoutIfSupported(activeApp) {

0 commit comments

Comments
 (0)