You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f443d78
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: apple/runner/RUNNER_PROTOCOL.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -137,10 +137,10 @@ than silently applied:
137
137
`backInApp` is the only back command. On iOS the runner first reads the current tree, in the same
138
138
call, for the navigation bar's system back button: a button with the identifier `BackButton` inside a
139
139
navigation bar. It taps that button with a synthesized tap only when exactly one live, hittable
140
-
candidate is found in a readable tree, and two reads in a row of the bar state, started at least
141
-
0.05 s apart, agree and contain that button's frame; each round re-reads the buttons. The match
140
+
candidate is found in a readable tree, and two reads in a row of the bar state, with a 0.05 s pause
141
+
between them, agree and contain that button's frame; each round re-reads the buttons. The match
142
142
places the snapshot frames at the window's screen origin, because a placed iPad window reports them
143
-
from its own top-left, and allows 0.5 pt per edge for fractional frame values. No other button
143
+
from its own top-left. No other button
144
144
counts, whatever its label.
145
145
The bar state is the labels of each navigation bar's `BackButton` children, one list per bar in
146
146
bar order, and the frames of those buttons; one XCTest snapshot per bar. The still check before the
@@ -180,7 +180,7 @@ fills its screen; otherwise it refuses with `APP_SCREEN_UNRESOLVED`. Its failure
180
180
|`APP_SCREEN_WINDOW_UNRESOLVED`, `APP_SCREEN_UNRESOLVED`, `APP_SCREEN_CAPTURE_UNRENDERABLE`, `APP_SCREEN_OFF_LIT_PANEL`| The screen could not be sampled before the swipe. | Nothing |
181
181
|`BACK_SWIPE_NOT_DISPATCHED`| The swipe was refused before any touch went down, an XCTest query on the navigation bar hung before the tap, or the platform has no back command (visionOS; the daemon refuses it first). | Nothing |
182
182
|`BACK_SWIPE_NO_CHANGE`| The swipe was sent and the sampled grid (48×96 grayscale cells, with the top 7 rows always left out; in portrait they hold the status bar and Dynamic Island, and in landscape the iPhone status bar is hidden and the Dynamic Island sits at a side edge, outside those rows) changed in at most 1% of the remaining cells by more than 24 of 256 levels. | The swipe |
183
-
|`BACK_SWIPE_UNVERIFIED`| The swipe may have run, or the back button was tapped and the bar did not change within 1 s or a query on it hung; the outcome is unknown. | Possibly the swipe, or the tap |
183
+
|`BACK_SWIPE_UNVERIFIED`| The swipe may have run, or the back button was tapped and the bar's back buttons did not change within 1 s or a query on it hung; the outcome is unknown. | Possibly the swipe, or the tap |
184
184
185
185
The swipe is first resolved up to its contact. Then the settle window is a run of samples, with a
186
186
0.05 s pause between captures plus each capture's own time, that agree for as long as the gap the swipe will be credited across: a contact
'Show foreground app/activity (Android and HarmonyOS; iOS and macOS answer per session)';
288
288
constbackCommandDescription=
289
-
'Navigate back in the app or through system navigation. The in-app mode targets the app navigation stack; system targets platform back behavior. On iOS both modes press the navigation bar system back button (identifier BackButton) only when exactly one hittable one is found in a readable accessibility tree, and succeed only when the number of navigation bars, the number of back buttons, or a back button title then changes (a bar title or a moved back button alone never counts, so a pop that keeps the same back button title and bar count reports back_swipe_unverified); with no such button, two candidates, or an unreadable tree, they swipe from the left edge instead (on an iPad whose app window cannot be resolved, only while the app fills the screen) and succeed only when the app screen changes. Reason back_swipe_no_change: the swipe was sent and the screen did not change; a visible back or close control is an alternative. Reason back_swipe_unverified: the button was pressed but the navigation bar did not change within 1 s, or the swipe may or may not have navigated, because the screen kept changing before it or could not be sampled after it; the resulting screen is unconfirmed. Reason back_swipe_not_dispatched, or a screen that cannot be sampled before the swipe, means nothing was sent. An app with a left-edge drawer may open the drawer instead. A visible back or close control can be targeted directly by its ref.';
289
+
"Navigate back in the app or through system navigation. The in-app mode targets the app navigation stack; system targets platform back behavior. On iOS both modes press the navigation bar system back button (identifier BackButton) only when exactly one hittable one is found in a readable accessibility tree, and succeed only when the number of navigation bars, the number of back buttons, or a back button title then changes (a bar title or a moved back button alone never counts, so a pop that keeps the same back button title and bar count reports back_swipe_unverified); with no such button, two candidates, or an unreadable tree, they swipe from the left edge instead (on an iPad whose app window cannot be resolved, only while the app fills the screen) and succeed only when the app screen changes. Reason back_swipe_no_change: the swipe was sent and the screen did not change; a visible back or close control is an alternative. Reason back_swipe_unverified: the button was pressed but the navigation bar's back buttons did not change within 1 s, or the swipe may or may not have navigated, because the screen kept changing before it or could not be sampled after it; the resulting screen is unconfirmed. Reason back_swipe_not_dispatched, or a screen that cannot be sampled before the swipe, means nothing was sent. An app with a left-edge drawer may open the drawer instead. A visible back or close control can be targeted directly by its ref.";
290
290
consthomeCommandDescription=
291
291
'Send the selected device to its home screen. This leaves the app session open but moves the foreground away from the app.';
0 commit comments