A one-file SwiftUI app with the same 64 rows shown three ways, and one .ad replay per way:
each opens the rows and runs scroll down --until 'id="row-60"'.
| Replay | Rows in | Result |
|---|---|---|
e2e/list.ad |
a List, pushed |
fails after 0 passes: "reached the end of the scrollable content" |
e2e/sheet.ad |
the same List in a .sheet |
fails after 0 passes, same message |
e2e/scrollview.ad |
a ScrollView + LazyVStack, pushed |
fails after 3 passes, same message, with rows 53–63 still below |
Plain scroll down reaches row-60 on all three: 7 flings for the list, 8 for the sheet, 4 for the
scroll view. So the content scrolls; only --until gives up.
./repro.sh # agent-device@latest, "iPhone 16"
./repro.sh 0.21.28 # a version
./repro.sh latest "iPhone 17 Pro"It builds Repro.xcodeproj (generated from project.yml by XcodeGen, committed so only Xcode is
needed), installs it on the simulator and runs the three replays.
The List reaches the tree as a collection with no [scrollable], which looks like why
--until stops before its first pass:
@e5 [collection]
@e6 [cell]
@e7 [text] "Section 0"
@e8 [cell]
@e9 [button] "Row 0"
The ScrollView is [scrollable], yet --until still stops at its third pass, while a fourth
plain scroll down moves it from rows 29–52 to rows 40–63:
@e5 [scroll-area] [scrollable]
@e6 [button] "Row 0"
- agent-device 0.21.28, 0.21.36 (latest), 0.21.37-nightly.20261103.128: the same three results
- iOS 26.5 simulator, iPhone 16
- Xcode 27.2 (27B52), macOS 27.0, Node 22.22.1