Repository navigation
Commit 8ffc692
committed
fix(apple-runner): refuse a macOS read of a stopped app instead of launching it
`notRunningRefusal` was `#if os(iOS)`, so on macOS a `.existingApp` read of a
session app that was not running fell through to `activateTarget` and bare-launched
it — which on macOS also takes the user's frontmost app away. The comment claiming
only iOS can read an app's state without launching it does not hold: measured on a
macOS host, a fresh `XCUIApplication(bundleIdentifier:)` for a stopped app answers
`.notRunning` and no process appears.
The macOS host lane now proves the refusal is reachable there (a user-level read, a
mutation's leading read, and the selector-resolving read) and that a command whose
job is to bring the app up still does.
Two measures from the same host lane settle what the other activation sites may do,
and are recorded where a reader will find them.
An app-targeted `screenshot` keeps its `activate()` because it is load-bearing for
what the pixels show: with a known window frame and a second window laid over it, a
backgrounded `screenshotRoot(app:).screenshot()` returned the occluding app's
windows inside the session window's own rect, and after `activate()` it returned the
session app's own content. This backend captures the region, not the window buffer.
A read has no such reason, and none was invented for it: a control captured the same
app foreground, background, and foreground again, and the name-matched rows whose
rect moved were 38 in the foreground-versus-background pair and 39 in the
foreground-versus-later-foreground pair, so the drift is time and relayout rather
than foreground state. Skipping the repair for reads would therefore rest on a
guarantee nothing measured supports, and on an activation the interaction paths still
need for XCTest's own event delivery, so it stays as it is.
Documents `AGENT_DEVICE_MACOS_APP_BACKEND` in versioned `help macos` and names in
the commands docs which macOS commands still activate the app or move the real
pointer.
Partial #32541 parent 24b2ce6 commit 8ffc692
7 files changed
Lines changed: 90 additions & 11 deletions
File tree
- apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests
- UnitTests
- packages/platform-apple/src/runner
- src/commands/schema
- website/docs/docs
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
429 | 429 | | |
430 | 430 | | |
431 | 431 | | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
432 | 442 | | |
433 | 443 | | |
434 | 444 | | |
| |||
Lines changed: 7 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
323 | 323 | | |
324 | 324 | | |
325 | 325 | | |
326 | | - | |
327 | | - | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
328 | 332 | | |
329 | | - | |
| 333 | + | |
330 | 334 | | |
331 | 335 | | |
332 | 336 | | |
| |||
Lines changed: 7 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
66 | | - | |
67 | | - | |
68 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
69 | 70 | | |
70 | 71 | | |
71 | 72 | | |
| |||
148 | 149 | | |
149 | 150 | | |
150 | 151 | | |
151 | | - | |
152 | | - | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
153 | 155 | | |
154 | 156 | | |
155 | 157 | | |
| |||
apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/UnitTests/RunnerTests+LifecycleTests.swift
Lines changed: 51 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
| 45 | + | |
45 | 46 | | |
46 | | - | |
| 47 | + | |
| 48 | + | |
47 | 49 | | |
48 | 50 | | |
49 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
739 | 739 | | |
740 | 740 | | |
741 | 741 | | |
742 | | - | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
743 | 749 | | |
744 | 750 | | |
745 | 751 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
348 | 348 | | |
349 | 349 | | |
350 | 350 | | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
351 | 355 | | |
352 | 356 | | |
353 | 357 | | |
| |||
0 commit comments