Repository navigation
test(e2e): drag the nested pager slowly enough to beat the outer pager - #1162
Merged
troZee merged 2 commits intoOct 7, 2026
Merged
Conversation
On Android the inner pager disables the outer one through Compose state, which applies a frame after touch down. A swipe whose first move crosses touch slop before that frame goes to the outer pager. Drag 70% of the width over 2 s so the first moves stay under slop and the page lands without a fling.
krozniata
approved these changes
Oct 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the Android e2e failure on #1161 (
nested-pager-view.e2e.ts:26, outer pager lands on3-rd-pager-view).Stacked on #1161: it needs
@e2e-dev/mobile0.10, where a pathscreen.swipehonorsduration. Merge #1161 first and this diff shrinks to the one test file.ComposePagerView. OnACTION_DOWNthe inner pager disables the outer one by settingsameOrientationChildGestureState, a ComposemutableStateOf. The outerHorizontalPageronly reads it on its next recomposition.AndroidView, and nothing callsrequestDisallowInterceptTouchEvent. If the first move past touch slop arrives before that recomposition, the outer pager starts dragging and the inner one getsACTION_CANCEL.momentum: 'slow'only shortens the swipe (25% of the width). Its speed is still a fling: the first move is 67 px, 25 ms after touch down. Whether a frame lands in between is luck. The e2e bump in chore: updatee2eto latest versions #1161 shifted the timing so the test now loses almost every time.Logcat from a temporary
Log.dinComposePagerView(316= outer,252= inner), with the old swipe:The library could apply the block synchronously instead of through Compose state, which would also cover a quick real flick on a busy main thread. That belongs in a separate PR.
Test Plan
Ran it locally: yes. Pixel 7 API 36 emulator plus an iOS 26.5 simulator, release builds of the example app, on the #1161 dependency versions.
nested-pager-view.e2e.ts,--retries 0yeson every coreCompatibility