scrollStage2UntilHittable scrolled stage-2 with synthesized press(forDuration:thenDragTo:) finger-drags — inert on macOS (content-drag scrolling is iOS-only), so the loop burned its 20 s budget while the gallery frame never moved and btnPrintPage-0 could stay unhittable at the window's bottom edge.
Replaced both drag branches with the platform's scroll mechanism: scroll(byDeltaX:deltaY:) on a coordinate inside app.scrollViews["stage-2"] (deltaY: -60 — scroll toward the document bottom so content moves up, off the Dock zone). This restores the approach originally proposed in #132 (commit b525059), with a meaningful pixel magnitude instead of -1.
Changes
Tests/ICCeryUITests/Milestone3UITests.swift — scrollStage2UntilHittable: one wheel-scroll per poll iteration on stage-2; added a stage-2 existence wait; kept the poll-until-hittable loop, the windowBottom - 80 Dock-zone guard, the per-iteration button re-query, and the "never coordinate-click a stale frame" contract. Doc comment now states drags don't scroll a macOS ScrollView (dropping the inverted "scroll wheel is inert" claim).
Milestone3UITests/testPerPagePrint — passed (37.7 s); a single dy: -60 scroll made btnPrintPage-0 hittable and the spool line was recorded.
Full Milestone3UITests leg — 6 tests, 0 failures (209 s).
Side confirmation of the sign: XCUI's own auto scroll-to-visible used dy: -465.50 to reveal btnPrintAll in testSpoolFailureShowsPrintNotice.
Acceptance criteria
scrollStage2UntilHittable uses scroll(byDeltaX:deltaY:); no press(forDuration:thenDragTo:) remains
testPerPagePrint passes with btnPrintPage-0 becoming hittable via the scroll gesture
Full Milestone3UITests leg green
## Summary
Closes #215.
`scrollStage2UntilHittable` scrolled stage-2 with synthesized `press(forDuration:thenDragTo:)` finger-drags — inert on macOS (content-drag scrolling is iOS-only), so the loop burned its 20 s budget while the gallery frame never moved and `btnPrintPage-0` could stay unhittable at the window's bottom edge.
Replaced both drag branches with the platform's scroll mechanism: `scroll(byDeltaX:deltaY:)` on a coordinate inside `app.scrollViews["stage-2"]` (`deltaY: -60` — scroll toward the document bottom so content moves up, off the Dock zone). This restores the approach originally proposed in #132 (commit `b525059`), with a meaningful pixel magnitude instead of `-1`.
## Changes
- `Tests/ICCeryUITests/Milestone3UITests.swift` — `scrollStage2UntilHittable`: one wheel-scroll per poll iteration on `stage-2`; added a `stage-2` existence wait; kept the poll-until-hittable loop, the `windowBottom - 80` Dock-zone guard, the per-iteration button re-query, and the "never coordinate-click a stale frame" contract. Doc comment now states drags don't scroll a macOS ScrollView (dropping the inverted "scroll wheel is inert" claim).
- `testPerPagePrint` unchanged.
## Verification
Remote build host (macOS 12.7.6 x86_64, Xcode 14.2), mirrored `.gitea/workflows/macos.yml` (xcodegen → version.sh → build-for-testing → codesign frameworks → test-without-building):
- `Milestone3UITests/testPerPagePrint` — **passed** (37.7 s); a single `dy: -60` scroll made `btnPrintPage-0` hittable and the spool line was recorded.
- Full `Milestone3UITests` leg — **6 tests, 0 failures** (209 s).
- Side confirmation of the sign: XCUI's own auto scroll-to-visible used `dy: -465.50` to reveal `btnPrintAll` in `testSpoolFailureShowsPrintNotice`.
## Acceptance criteria
- [x] `scrollStage2UntilHittable` uses `scroll(byDeltaX:deltaY:)`; no `press(forDuration:thenDragTo:)` remains
- [x] `testPerPagePrint` passes with `btnPrintPage-0` becoming hittable via the scroll gesture
- [x] Full `Milestone3UITests` leg green
press(forDuration:thenDragTo:) is inert on macOS — content-drag
scrolling is iOS-only, so the helper burned its 20s budget with the
gallery frame never moving. The scroll wheel is the mechanism the
platform supports: one scroll(byDeltaX:deltaY:) call on a coordinate
inside app.scrollViews["stage-2"] per poll iteration, negative deltaY
to move content up off the Dock zone.
gronod
merged commit ed91ebf807 into develop2026-09-18 10:59:33 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Closes #215.
scrollStage2UntilHittablescrolled stage-2 with synthesizedpress(forDuration:thenDragTo:)finger-drags — inert on macOS (content-drag scrolling is iOS-only), so the loop burned its 20 s budget while the gallery frame never moved andbtnPrintPage-0could stay unhittable at the window's bottom edge.Replaced both drag branches with the platform's scroll mechanism:
scroll(byDeltaX:deltaY:)on a coordinate insideapp.scrollViews["stage-2"](deltaY: -60— scroll toward the document bottom so content moves up, off the Dock zone). This restores the approach originally proposed in #132 (commitb525059), with a meaningful pixel magnitude instead of-1.Changes
Tests/ICCeryUITests/Milestone3UITests.swift—scrollStage2UntilHittable: one wheel-scroll per poll iteration onstage-2; added astage-2existence wait; kept the poll-until-hittable loop, thewindowBottom - 80Dock-zone guard, the per-iteration button re-query, and the "never coordinate-click a stale frame" contract. Doc comment now states drags don't scroll a macOS ScrollView (dropping the inverted "scroll wheel is inert" claim).testPerPagePrintunchanged.Verification
Remote build host (macOS 12.7.6 x86_64, Xcode 14.2), mirrored
.gitea/workflows/macos.yml(xcodegen → version.sh → build-for-testing → codesign frameworks → test-without-building):Milestone3UITests/testPerPagePrint— passed (37.7 s); a singledy: -60scroll madebtnPrintPage-0hittable and the spool line was recorded.Milestone3UITestsleg — 6 tests, 0 failures (209 s).dy: -465.50to revealbtnPrintAllintestSpoolFailureShowsPrintNotice.Acceptance criteria
scrollStage2UntilHittableusesscroll(byDeltaX:deltaY:); nopress(forDuration:thenDragTo:)remainstestPerPagePrintpasses withbtnPrintPage-0becoming hittable via the scroll gestureMilestone3UITestsleg green