Harden the Flutter E2E flows against CI timing flakiness - #36
Open
brionmario wants to merge 1 commit into
Open
Conversation
Signed-off-by: Brion <info@brionmario.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Purpose
The Flutter E2E suite is flaky. The nightly run on
mainfailed on 2026-09-11 and passed on 2026-09-10 against the same commit (3312feb) and the same server release (v1.0.1, unchanged since August), and the run on #35, which changes onlyAGENTS.md, failed both flows:Nothing in the SDK changed in that window, so these are timing failures rather than a regression.
The cause is that the Flutter flows never received the hardening the iOS and Android flows already carry. Comparing the three suites:
retryblockswaitForAnimationToEndios-sdksandroid-sdksflutter-sdksApproach
Port the two mitigations the sibling repositories already use, with the same structure and the same reasoning recorded in comments.
waitForAnimationToEndbefore the first input on each freshly rendered step.extendedWaitUntil ... visiblefires the instant the field is on screen, which on a loaded runner can be before the widget has finished settling. Typing into a field mid-settle binds an empty string even though the keystrokes display correctly, because the input is discarded when the widget finishes building under it.retryaround each fill-and-submit block. A slow runner can take long enough filling the form that the server's credentials-step challenge expires before submission. The form silently resets instead of authenticating, so the assertion that follows never sees its target. That is an expired challenge, not a regression, so the block retries rather than failing outright. Each retry callseraseTextbefore typing, because a failed submission can leave the previous attempt's text in the field rather than coming back blank.Applied to three places: the sign-in fill-and-submit in
signin.yaml, and both the registration and the subsequent sign-in fill-and-submit blocks insignup.yaml. Thethunderid-field-emailwait after registration also moves from 20s to 30s, matching iOS, since CI renders that step noticeably slower than a local machine.No product code changes, and no change to what the flows assert.
Related Issues
Related PRs
SDK parity
This brings
flutter-sdksin line with hardening thatios-sdksandandroid-sdksalready have, so no sibling pull requests are needed. The reverse direction is worth noting for a future change: the retry counts and timeouts now match across all three mobile suites, and should be kept that way.Checklist
breaking changelabel added.Security checks