fix(ci): the smoke walk finds a button by what it says - #516
Merged
Conversation
Main's smoke gate has been red since the reward-endings merge. The walk waits for an enabled button carrying a label, and it found one by reading the button's direct child as a `Text`. `PrimaryButton` grew an optional trailing mark and wrapped its label in a `Row`, so the finder stopped matching — and every wait timed out against a button that was on screen the whole time. Five merges reported a broken app that was not broken. The finder now asks for what the walk actually needs: an enabled FilledButton anywhere above the label. How the button lays its label out is the button's business. The smoke job runs on main only, so no pull request could have caught this. A widget test now pins the same relationship — label, trailing mark, and the disabled case the walk exists to tell apart — and it runs on every pull request. Verified locally on the simulator with CI's own recipe: both smoke tests pass, and the Dart walk runs rather than passing vacuously.
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.
Main's smoke gate has been red for five merges. The app was never broken.
What happened
The walk waits for an enabled button carrying a label, and found one by reading the button's direct child as a
Text.PrimaryButtongrew an optional trailing mark in PR #503 and wrapped its label in aRow, so the finder stopped matching. Every wait then timed out against a button that was on screen — the failure dump names Meet Roasty while claiming it was never reached.Bisected: green at
cde2503, red at4af25bd, same signature every merge since. Proved rather than assumed — a throwaway probe confirmed the old predicate matches nothing today while the label is present.The fix
The finder asks for what the walk needs: an enabled
FilledButtonanywhere above the label. How the button arranges its label is the button's business.Why it went unnoticed
The smoke job runs on main only, so no pull request could catch it. A widget test now pins the same relationship — plain label, label beside a trailing mark, and the disabled case the walk exists to tell apart — and runs on every pull request. Whether the smoke job itself should also run on pull requests is a cost question I have left alone.
Checks: format, analyze, metrics, changelog gate and 2491 tests pass. The smoke itself was run locally on the simulator with CI's own recipe —
flutter build ios --simulatorthenxcodebuild test— and both tests pass with the Dart walk really executing.