fix(maestro): stabilize Graal state and C000045 - #6157
Conversation
c78ab02 to
d372862
Compare
d372862 to
7795512
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 7795512. Configure here.
| when: | ||
| true: ${!NO_COMPLETE} | ||
| commands: | ||
| - assertNotVisible: Next |
There was a problem hiding this comment.
Bounded Next loop races creation
Medium Severity
The new times: 10 guard plus assertNotVisible: Next races wallet creation on CreateWalletCompletionScene, where Next stays visible but disabled until done. Rapid optional taps can burn the budget before creation finishes; once exhausted, enabled Next still remains, so the assertion fails and nothing navigates away. Single-wallet imports can win the race; multi-wallet callers like C000036 are likely to flake or fail.
Reviewed by Cursor Bugbot for commit 7795512. Configure here.


Summary
output.*for GraalJS compatibility.ASSET_NAMESinputs at the shared helper boundaries.Nextloop and fix iOS keyboard dismissal.manageTokensRow.<currencyCode>testID and use it for C000045's 1INCH row.Savelabel; the later Assets and relogin MOG assertions remain.Why
Maestro 2.7 uses GraalJS, where local variables and reassigned environment values do not persist into later commands. C000045 also used a brittle third text-match index for 1INCH; retained iOS hierarchies proved only two selectable matches exist. The stable row ID fixes that selector cross-platform.
The returned-screen MOG assertion is temporarily removed because two filed product bugs prevent the intended intermediate behavior. The dependent QA task below records restoring it after those bugs are fixed.
Verification
maestro check-syntaxpassed for both changed YAML files.git diff --checkpassed.app.edge.developbuild: 301s and 317s.testMaestroplatform/full-suite gate.Runtime evidence
app.edge.developfrom develop commit924bfe518plus this PR.skills/qa-device-control/artifacts/runs/maestro-c000045-next-loop/pass8/results.xmlandskills/qa-device-control/artifacts/runs/maestro-c000045-cross-platform-20260818/ios/results.xml(local QA artifacts).Remaining limitations
testMaestrogate on Android and iOS after resetting the branch.Tracking
1217568524679355and1217568524499642.Note
Low Risk
Production impact is a Maestro-only testID on Manage Tokens rows; remaining changes are Maestro YAML and ESLint listing.
Overview
Maestro flows and shared helpers now store cross-command JavaScript state on
output.*instead of locals or reassigned env vars, matching GraalJS behavior in Maestro 2.7. Wallet suite YAML (C000032,C000036,C000037,C000043,C000044,C000046,C000048) andadd-wallets,create-account, andimport-walletsfollow that pattern;ASSET_NAMESis normalized to an array at helper boundaries.import-walletsdismisses the iOS seed keyboard by tapping the instruction paragraph (avoids multiline Enter issues), caps the post-import Next loop at 10 taps, and asserts Next is gone when completion is expected.ManageTokensRowaddstestIDmanageTokensRow.<currencyCode>. C000045 taps 1INCH via that ID instead of a brittle text index, confirms with Save, and drops the intermediate returned-screen MOG assertion (later Assets/relogin checks remain). ESLint config dropsManageTokensRowfrom an exempt file list.Reviewed by Cursor Bugbot for commit 7795512. Bugbot is set up for automated code reviews on this repo. Configure here.