Skip to content

fix(maestro): stabilize Graal state and C000045 - #6157

Open
EdgeClaws wants to merge 2 commits into
EdgeApp:developfrom
EdgeClaws:qa/maestro-graal-output-scope
Open

fix(maestro): stabilize Graal state and C000045#6157
EdgeClaws wants to merge 2 commits into
EdgeApp:developfrom
EdgeClaws:qa/maestro-graal-output-scope

Conversation

@EdgeClaws

@EdgeClaws EdgeClaws commented Aug 14, 2026

Copy link
Copy Markdown

Summary

  • Persist JavaScript values used across Maestro commands in output.* for GraalJS compatibility.
  • Normalize scalar-or-array ASSET_NAMES inputs at the shared helper boundaries.
  • Bound the shared import-wallet Next loop and fix iOS keyboard dismissal.
  • Add a stable manageTokensRow.<currencyCode> testID and use it for C000045's 1INCH row.
  • Temporarily skip C000045's returned-screen MOG assertion and use the current outer Save label; 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-syntax passed for both changed YAML files.
  • git diff --check passed.
  • TypeScript passed.
  • ESLint passed with 0 errors (existing repository warnings only).
  • Precommit passed: 98 Jest suites, 704 tests, and 107 snapshots.
  • iOS C000045 passed twice consecutively on the exact patched app.edge.develop build: 301s and 317s.
  • Android local-debug attempts did not reach the new selector because debug-only onboarding/runtime overlays and later test-server account creation blocked setup. Android selector verification remains for the testMaestro platform/full-suite gate.

Runtime evidence

  • iOS: iPhone 17e Simulator, iOS 26.5, local patched app.edge.develop from develop commit 924bfe518 plus this PR.
  • iOS JUnit: skills/qa-device-control/artifacts/runs/maestro-c000045-next-loop/pass8/results.xml and skills/qa-device-control/artifacts/runs/maestro-c000045-cross-platform-20260818/ios/results.xml (local QA artifacts).
  • Android: Pixel 6, Android 16, exact local patched debug APK; setup remained blocked before Manage Tokens and is not counted as selector evidence.

Remaining limitations

  • Run the shared testMaestro gate on Android and iOS after resetting the branch.
  • Restore the intermediate returned-screen MOG assertion once both linked Manage Tokens product bugs are complete.

Tracking


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) and add-wallets, create-account, and import-wallets follow that pattern; ASSET_NAMES is normalized to an array at helper boundaries.

import-wallets dismisses 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.

ManageTokensRow adds testID manageTokensRow.<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 drops ManageTokensRow from an exempt file list.

Reviewed by Cursor Bugbot for commit 7795512. Bugbot is set up for automated code reviews on this repo. Configure here.

@EdgeClaws
EdgeClaws force-pushed the qa/maestro-graal-output-scope branch 2 times, most recently from c78ab02 to d372862 Compare August 15, 2026 00:35
@EdgeClaws
EdgeClaws force-pushed the qa/maestro-graal-output-scope branch from d372862 to 7795512 Compare August 18, 2026 18:20
@EdgeClaws EdgeClaws changed the title fix(maestro): persist JavaScript state via output fix(maestro): stabilize Graal state and C000045 Aug 18, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7795512. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant