-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Fix scrollUntilVisible in WidgetTester #159582
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
This pull request has been changed to a draft. The currently pending flutter-gold status will not be able to resolve until a new commit is pushed or the change is marked ready for review again. For more guidance, visit Writing a golden file test for Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
| assert(moveStep != Offset.zero); | ||
| assert(maxIteration > 0); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(from offline review with @Piinks) these asserts (plus the delta assert) look valid. Are they related to this change specifically or just good to have generally? And can we add tests for them in either case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I submitted the corresponding unit tests.
The assets are unrelated to this change. I just thought of an optimization that could be added when I saw the code, as I noticed that the Flutter documentation encourages us to use assertions.
| assert(maxScrolls > 0); |
Use asserts liberally to detect contract violations and verify invariants
assert() allows us to be diligent about correctness without paying a performance penalty in release mode, because Dart only evaluates asserts in debug mode.
However, I didn't realize that adding asserts also requires corresponding unit tests. Maybe in the future, I should try to submit code that is only related to the issue at hand.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The assertions seem valid to add, but maybe in a subsequent PR so it's easier to track and review.
Unit tests for them shouldn't be too difficult to add as well. Consider this PR that only added assertions for some test inspiration.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have reverted the asserts and the corresponding tests, and I may submit a new PR later.
victorsanni
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thanks for the PR.
Piinks
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM thank you!
| while (maxIteration > 0 && finder.evaluate().isEmpty) { | ||
| await drag(view, moveStep); | ||
| gesture ??= await startGesture(getCenter(view, warnIfMissed: true)); | ||
| await gesture.moveBy(moveStep); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are quite a lot of google testing failures. I wonder if there are things in the drag method that this refactor doesn't replace?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm guessing the tests this affects in Google were written to expect the behavior written in the bug. This might be difficult to change since it breaks existing test logic.
|
Maybe we need to introduce this as a new method or guard it behind a parameter to not break all the existing code? |
|
(triage): @hgraceb Are you interested in updating this to make it opt-in (e.g. as a new method or via a parameter). |
|
@goderbauer Sorry, I haven't had time to follow up on this issue recently because I've been job hunting. I might try to make some updates this week or next week. |
|
@victorsanni @goderbauer Hi, I tried to keep all the original code logic and only reuse the gesture, but the Google tests are still failing. I might need some more specific error examples to make further changes. Can someone help provide a portion of the failing test code? |
Most of the test failures are image diffs reflecting the previous behavior, as @Piinks mentioned. Can we make the behavior opt in as @goderbauer described? |
077be8c to
571f26d
Compare
| await tester.pumpWidget(buildFrame(true)); | ||
| await tester.pumpAndSettle(); | ||
| expect(target, findsNothing); | ||
| await tester.scrollUntilVisible(target, 20, scrollable: scrollable, continuous: true); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this test also check for the correct behavior when continuous = false?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@victorsanni I believe that in this case, there is no such thing as the correct behavior when continuous = false. The fact that all tests that did not pass continuous are currently passing is the correct behavior.
Roll Flutter from c1ffaa9 to b007899 (43 revisions) flutter/flutter@c1ffaa9...b007899 2025-01-29 tessertaha@gmail.com Fix `Tab` linear and elastic animation blink (flutter/flutter#162315) 2025-01-29 pateltirth454@gmail.com Pass-through `textInputAction` in `DropdownMenu` (flutter/flutter#162309) 2025-01-29 38378650+hgraceb@users.noreply.github.com Fix scrollUntilVisible in WidgetTester (flutter/flutter#159582) 2025-01-29 pateltirth454@gmail.com Pass-through `maxLines` in `DropdownMenu` (flutter/flutter#161903) 2025-01-29 gaganyadav80@gmail.com fix: appbar leading width is not square for custom toolbar height (flutter/flutter#161880) 2025-01-29 chinmaygarde@google.com [DisplayList] Don't call Skia Ganesh methods when its not available. (flutter/flutter#162345) 2025-01-29 reidbaker@google.com Update README.md to include googler post verification steps (flutter/flutter#162272) 2025-01-29 kevmoo@users.noreply.github.com [engine, web] return switch expressions in many places (flutter/flutter#162336) 2025-01-29 reidbaker@google.com Update README.md to not have engine link for android (flutter/flutter#162330) 2025-01-29 bkonyi@google.com Reland "[ Widget Previews ] Add support for detecting previews and generating code (#161911)"" (flutter/flutter#162337) 2025-01-29 34871572+gmackall@users.noreply.github.com Add instructions to download the Gradle wrapper to FGP readme, and add to gitignore (flutter/flutter#162332) 2025-01-29 matanlurey@users.noreply.github.com Fix tests to prepare for `--explicit-package-dependencies` and a bug. (flutter/flutter#162289) 2025-01-29 matanlurey@users.noreply.github.com Add a currently unused `runs_in_merge_queue` property to `Linux analyze`. (flutter/flutter#162335) 2025-01-28 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[ Widget Previews ] Add support for detecting previews and generating code (#161911)" (flutter/flutter#162327) 2025-01-28 58529443+srujzs@users.noreply.github.com Support hot restart for DDC library bundle format (flutter/flutter#162123) 2025-01-28 30870216+gaaclarke@users.noreply.github.com Started adjusting uvs to match pixel snapping. (flutter/flutter#162049) 2025-01-28 mohellebiabdessalem@gmail.com Refactor code inside flutter.groovy (flutter/flutter#160250) 2025-01-28 47866232+chunhtai@users.noreply.github.com Table implements redepth (flutter/flutter#162282) 2025-01-28 bkonyi@google.com [ Widget Previews ] Add support for detecting previews and generating code (flutter/flutter#161911) 2025-01-28 andrewrkolos@gmail.com remove dependency on `Usage` from `Pub` class (flutter/flutter#162279) 2025-01-28 engine-flutter-autoroll@skia.org Roll Packages from 258f6dc to 02c6fef (6 revisions) (flutter/flutter#162313) 2025-01-28 matanlurey@users.noreply.github.com Remove `scenario_app/android` and rename to `ios_scenario_app`. (flutter/flutter#160992) 2025-01-28 matanlurey@users.noreply.github.com Apparently it is illegal to use `stderr` in this project. (flutter/flutter#162294) 2025-01-28 aam@google.com Fix update_engine_version_test in presence of FLUTTER_PREBUILT_ENGINE_VERSION env vars. (flutter/flutter#162270) 2025-01-28 matanlurey@users.noreply.github.com Add missing `properties: ...` and move to presubmit. (flutter/flutter#162170) 2025-01-27 jonahwilliams@google.com [Impeller] make swapchain related external fence/semaphore extensions optional. (flutter/flutter#162205) 2025-01-27 49699333+dependabot[bot]@users.noreply.github.com Bump the all-github-actions group with 2 updates (flutter/flutter#162277) 2025-01-27 chinmaygarde@google.com Don't depend on Dart from FML. (flutter/flutter#162271) 2025-01-27 chinmaygarde@google.com [DisplayList] Move nested canvas enums into their own TU. (flutter/flutter#162037) 2025-01-27 importRyan@gmail.com Avoid iOS text selection crash by returning nil range (flutter/flutter#161996) 2025-01-27 mohellebiabdessalem@gmail.com fix `felt` link to point to flutter repo instead of the engine repo (flutter/flutter#161423) 2025-01-27 matanlurey@users.noreply.github.com Enable the Android Engine OpenGLES/Vulkan suites. (flutter/flutter#162258) 2025-01-27 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Fix debug build for CanvasKit (flutter/flutter#162198) 2025-01-27 engine-flutter-autoroll@skia.org Roll Packages from 3d3ab7b to 258f6dc (19 revisions) (flutter/flutter#162254) 2025-01-25 matanlurey@users.noreply.github.com Pin `customer_testing` to the SHA specified in `tests.version` (flutter/flutter#162048) 2025-01-25 matanlurey@users.noreply.github.com Formalize `update_engine_version.{sh|ps1}`. (flutter/flutter#162118) 2025-01-25 pateltirth454@gmail.com Rename 'SelectionChangedCause.scribble' to 'SelectionChangedCause.stylusHandwriting' (flutter/flutter#161518) 2025-01-25 jacksongardner@google.com Don't install xcode when doing `local_engine` web builds on mac. (flutter/flutter#162164) 2025-01-25 matanlurey@users.noreply.github.com Force Impeller backend for `android_engine_test`, and test both OpenGLES and Vulkan (flutter/flutter#162089) 2025-01-24 jonahwilliams@google.com [Impeller] when a command pool has many unused buffers, reset with release resources flag. (flutter/flutter#162171) 2025-01-24 mdebbar@google.com [web] Remove HTML renderer from framework tests (flutter/flutter#162038) 2025-01-24 jonahwilliams@google.com [Impeller] Skip clip entity replay that cannot impact current clip. (flutter/flutter#162113) 2025-01-24 de.frankenapps@gmail.com Update Android integration test package for newer AGP (flutter/flutter#161856) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: ...
Roll Flutter from c1ffaa9 to b007899 (43 revisions) flutter/flutter@c1ffaa9...b007899 2025-01-29 tessertaha@gmail.com Fix `Tab` linear and elastic animation blink (flutter/flutter#162315) 2025-01-29 pateltirth454@gmail.com Pass-through `textInputAction` in `DropdownMenu` (flutter/flutter#162309) 2025-01-29 38378650+hgraceb@users.noreply.github.com Fix scrollUntilVisible in WidgetTester (flutter/flutter#159582) 2025-01-29 pateltirth454@gmail.com Pass-through `maxLines` in `DropdownMenu` (flutter/flutter#161903) 2025-01-29 gaganyadav80@gmail.com fix: appbar leading width is not square for custom toolbar height (flutter/flutter#161880) 2025-01-29 chinmaygarde@google.com [DisplayList] Don't call Skia Ganesh methods when its not available. (flutter/flutter#162345) 2025-01-29 reidbaker@google.com Update README.md to include googler post verification steps (flutter/flutter#162272) 2025-01-29 kevmoo@users.noreply.github.com [engine, web] return switch expressions in many places (flutter/flutter#162336) 2025-01-29 reidbaker@google.com Update README.md to not have engine link for android (flutter/flutter#162330) 2025-01-29 bkonyi@google.com Reland "[ Widget Previews ] Add support for detecting previews and generating code (#161911)"" (flutter/flutter#162337) 2025-01-29 34871572+gmackall@users.noreply.github.com Add instructions to download the Gradle wrapper to FGP readme, and add to gitignore (flutter/flutter#162332) 2025-01-29 matanlurey@users.noreply.github.com Fix tests to prepare for `--explicit-package-dependencies` and a bug. (flutter/flutter#162289) 2025-01-29 matanlurey@users.noreply.github.com Add a currently unused `runs_in_merge_queue` property to `Linux analyze`. (flutter/flutter#162335) 2025-01-28 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[ Widget Previews ] Add support for detecting previews and generating code (#161911)" (flutter/flutter#162327) 2025-01-28 58529443+srujzs@users.noreply.github.com Support hot restart for DDC library bundle format (flutter/flutter#162123) 2025-01-28 30870216+gaaclarke@users.noreply.github.com Started adjusting uvs to match pixel snapping. (flutter/flutter#162049) 2025-01-28 mohellebiabdessalem@gmail.com Refactor code inside flutter.groovy (flutter/flutter#160250) 2025-01-28 47866232+chunhtai@users.noreply.github.com Table implements redepth (flutter/flutter#162282) 2025-01-28 bkonyi@google.com [ Widget Previews ] Add support for detecting previews and generating code (flutter/flutter#161911) 2025-01-28 andrewrkolos@gmail.com remove dependency on `Usage` from `Pub` class (flutter/flutter#162279) 2025-01-28 engine-flutter-autoroll@skia.org Roll Packages from 258f6dc to 02c6fef (6 revisions) (flutter/flutter#162313) 2025-01-28 matanlurey@users.noreply.github.com Remove `scenario_app/android` and rename to `ios_scenario_app`. (flutter/flutter#160992) 2025-01-28 matanlurey@users.noreply.github.com Apparently it is illegal to use `stderr` in this project. (flutter/flutter#162294) 2025-01-28 aam@google.com Fix update_engine_version_test in presence of FLUTTER_PREBUILT_ENGINE_VERSION env vars. (flutter/flutter#162270) 2025-01-28 matanlurey@users.noreply.github.com Add missing `properties: ...` and move to presubmit. (flutter/flutter#162170) 2025-01-27 jonahwilliams@google.com [Impeller] make swapchain related external fence/semaphore extensions optional. (flutter/flutter#162205) 2025-01-27 49699333+dependabot[bot]@users.noreply.github.com Bump the all-github-actions group with 2 updates (flutter/flutter#162277) 2025-01-27 chinmaygarde@google.com Don't depend on Dart from FML. (flutter/flutter#162271) 2025-01-27 chinmaygarde@google.com [DisplayList] Move nested canvas enums into their own TU. (flutter/flutter#162037) 2025-01-27 importRyan@gmail.com Avoid iOS text selection crash by returning nil range (flutter/flutter#161996) 2025-01-27 mohellebiabdessalem@gmail.com fix `felt` link to point to flutter repo instead of the engine repo (flutter/flutter#161423) 2025-01-27 matanlurey@users.noreply.github.com Enable the Android Engine OpenGLES/Vulkan suites. (flutter/flutter#162258) 2025-01-27 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Fix debug build for CanvasKit (flutter/flutter#162198) 2025-01-27 engine-flutter-autoroll@skia.org Roll Packages from 3d3ab7b to 258f6dc (19 revisions) (flutter/flutter#162254) 2025-01-25 matanlurey@users.noreply.github.com Pin `customer_testing` to the SHA specified in `tests.version` (flutter/flutter#162048) 2025-01-25 matanlurey@users.noreply.github.com Formalize `update_engine_version.{sh|ps1}`. (flutter/flutter#162118) 2025-01-25 pateltirth454@gmail.com Rename 'SelectionChangedCause.scribble' to 'SelectionChangedCause.stylusHandwriting' (flutter/flutter#161518) 2025-01-25 jacksongardner@google.com Don't install xcode when doing `local_engine` web builds on mac. (flutter/flutter#162164) 2025-01-25 matanlurey@users.noreply.github.com Force Impeller backend for `android_engine_test`, and test both OpenGLES and Vulkan (flutter/flutter#162089) 2025-01-24 jonahwilliams@google.com [Impeller] when a command pool has many unused buffers, reset with release resources flag. (flutter/flutter#162171) 2025-01-24 mdebbar@google.com [web] Remove HTML renderer from framework tests (flutter/flutter#162038) 2025-01-24 jonahwilliams@google.com [Impeller] Skip clip entity replay that cannot impact current clip. (flutter/flutter#162113) 2025-01-24 de.frankenapps@gmail.com Update Android integration test package for newer AGP (flutter/flutter#161856) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: ...
Roll Flutter from c1ffaa9 to b007899 (43 revisions) flutter/flutter@c1ffaa9...b007899 2025-01-29 tessertaha@gmail.com Fix `Tab` linear and elastic animation blink (flutter/flutter#162315) 2025-01-29 pateltirth454@gmail.com Pass-through `textInputAction` in `DropdownMenu` (flutter/flutter#162309) 2025-01-29 38378650+hgraceb@users.noreply.github.com Fix scrollUntilVisible in WidgetTester (flutter/flutter#159582) 2025-01-29 pateltirth454@gmail.com Pass-through `maxLines` in `DropdownMenu` (flutter/flutter#161903) 2025-01-29 gaganyadav80@gmail.com fix: appbar leading width is not square for custom toolbar height (flutter/flutter#161880) 2025-01-29 chinmaygarde@google.com [DisplayList] Don't call Skia Ganesh methods when its not available. (flutter/flutter#162345) 2025-01-29 reidbaker@google.com Update README.md to include googler post verification steps (flutter/flutter#162272) 2025-01-29 kevmoo@users.noreply.github.com [engine, web] return switch expressions in many places (flutter/flutter#162336) 2025-01-29 reidbaker@google.com Update README.md to not have engine link for android (flutter/flutter#162330) 2025-01-29 bkonyi@google.com Reland "[ Widget Previews ] Add support for detecting previews and generating code (#161911)"" (flutter/flutter#162337) 2025-01-29 34871572+gmackall@users.noreply.github.com Add instructions to download the Gradle wrapper to FGP readme, and add to gitignore (flutter/flutter#162332) 2025-01-29 matanlurey@users.noreply.github.com Fix tests to prepare for `--explicit-package-dependencies` and a bug. (flutter/flutter#162289) 2025-01-29 matanlurey@users.noreply.github.com Add a currently unused `runs_in_merge_queue` property to `Linux analyze`. (flutter/flutter#162335) 2025-01-28 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[ Widget Previews ] Add support for detecting previews and generating code (#161911)" (flutter/flutter#162327) 2025-01-28 58529443+srujzs@users.noreply.github.com Support hot restart for DDC library bundle format (flutter/flutter#162123) 2025-01-28 30870216+gaaclarke@users.noreply.github.com Started adjusting uvs to match pixel snapping. (flutter/flutter#162049) 2025-01-28 mohellebiabdessalem@gmail.com Refactor code inside flutter.groovy (flutter/flutter#160250) 2025-01-28 47866232+chunhtai@users.noreply.github.com Table implements redepth (flutter/flutter#162282) 2025-01-28 bkonyi@google.com [ Widget Previews ] Add support for detecting previews and generating code (flutter/flutter#161911) 2025-01-28 andrewrkolos@gmail.com remove dependency on `Usage` from `Pub` class (flutter/flutter#162279) 2025-01-28 engine-flutter-autoroll@skia.org Roll Packages from 258f6dc to 02c6fef (6 revisions) (flutter/flutter#162313) 2025-01-28 matanlurey@users.noreply.github.com Remove `scenario_app/android` and rename to `ios_scenario_app`. (flutter/flutter#160992) 2025-01-28 matanlurey@users.noreply.github.com Apparently it is illegal to use `stderr` in this project. (flutter/flutter#162294) 2025-01-28 aam@google.com Fix update_engine_version_test in presence of FLUTTER_PREBUILT_ENGINE_VERSION env vars. (flutter/flutter#162270) 2025-01-28 matanlurey@users.noreply.github.com Add missing `properties: ...` and move to presubmit. (flutter/flutter#162170) 2025-01-27 jonahwilliams@google.com [Impeller] make swapchain related external fence/semaphore extensions optional. (flutter/flutter#162205) 2025-01-27 49699333+dependabot[bot]@users.noreply.github.com Bump the all-github-actions group with 2 updates (flutter/flutter#162277) 2025-01-27 chinmaygarde@google.com Don't depend on Dart from FML. (flutter/flutter#162271) 2025-01-27 chinmaygarde@google.com [DisplayList] Move nested canvas enums into their own TU. (flutter/flutter#162037) 2025-01-27 importRyan@gmail.com Avoid iOS text selection crash by returning nil range (flutter/flutter#161996) 2025-01-27 mohellebiabdessalem@gmail.com fix `felt` link to point to flutter repo instead of the engine repo (flutter/flutter#161423) 2025-01-27 matanlurey@users.noreply.github.com Enable the Android Engine OpenGLES/Vulkan suites. (flutter/flutter#162258) 2025-01-27 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Fix debug build for CanvasKit (flutter/flutter#162198) 2025-01-27 engine-flutter-autoroll@skia.org Roll Packages from 3d3ab7b to 258f6dc (19 revisions) (flutter/flutter#162254) 2025-01-25 matanlurey@users.noreply.github.com Pin `customer_testing` to the SHA specified in `tests.version` (flutter/flutter#162048) 2025-01-25 matanlurey@users.noreply.github.com Formalize `update_engine_version.{sh|ps1}`. (flutter/flutter#162118) 2025-01-25 pateltirth454@gmail.com Rename 'SelectionChangedCause.scribble' to 'SelectionChangedCause.stylusHandwriting' (flutter/flutter#161518) 2025-01-25 jacksongardner@google.com Don't install xcode when doing `local_engine` web builds on mac. (flutter/flutter#162164) 2025-01-25 matanlurey@users.noreply.github.com Force Impeller backend for `android_engine_test`, and test both OpenGLES and Vulkan (flutter/flutter#162089) 2025-01-24 jonahwilliams@google.com [Impeller] when a command pool has many unused buffers, reset with release resources flag. (flutter/flutter#162171) 2025-01-24 mdebbar@google.com [web] Remove HTML renderer from framework tests (flutter/flutter#162038) 2025-01-24 jonahwilliams@google.com [Impeller] Skip clip entity replay that cannot impact current clip. (flutter/flutter#162113) 2025-01-24 de.frankenapps@gmail.com Update Android integration test package for newer AGP (flutter/flutter#161856) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: ...
Fixes #143921.
The single
moveByevent may be consumed whenonTapis present.Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.