From 3d43a229a878523441afec79646240aa2d40f227 Mon Sep 17 00:00:00 2001 From: EdgeClaws <268039199+EdgeClaws@users.noreply.github.com> Date: Wed, 19 Aug 2026 19:49:22 -0700 Subject: [PATCH 1/9] fix(maestro): correct C000029a tag to stop silent skip The tag was C000029 but the flow is C000029a; a C000029a tag-filtered run silently skipped it. Match the tag to the test ID. Co-Authored-By: Claude Opus 4.8 --- maestro/07-wallets/C000029a-migrate-wallets.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maestro/07-wallets/C000029a-migrate-wallets.yaml b/maestro/07-wallets/C000029a-migrate-wallets.yaml index e166e442070..f858e1e29b8 100644 --- a/maestro/07-wallets/C000029a-migrate-wallets.yaml +++ b/maestro/07-wallets/C000029a-migrate-wallets.yaml @@ -17,7 +17,7 @@ env: IMPORT_SEED: ${MAESTRO_EDGE_MAX_IMPORT_SEED} tags: - android -- C000029 +- C000029a --- - runFlow: file: ../common/launch-cleared.yaml From 822af96b95ce8e8e433247ff7de878551d164754 Mon Sep 17 00:00:00 2001 From: EdgeClaws <268039199+EdgeClaws@users.noreply.github.com> Date: Fri, 21 Aug 2026 14:41:36 -0700 Subject: [PATCH 2/9] fix(maestro): repair C000045 token flow --- eslint.config.mjs | 1 - maestro/07-wallets/C000045-add-edit-tokens.yaml | 13 +++++-------- maestro/common/import-wallets.yaml | 17 ++++++++++++++--- src/components/themed/ManageTokensRow.tsx | 6 +++++- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index e817da3e660..f454a7dd026 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -359,7 +359,6 @@ export default [ 'src/components/themed/LineTextDivider.tsx', 'src/components/themed/MainButton.tsx', - 'src/components/themed/ManageTokensRow.tsx', 'src/components/themed/MenuTabs.tsx', 'src/components/themed/ModalParts.tsx', 'src/components/themed/PinDots.tsx', diff --git a/maestro/07-wallets/C000045-add-edit-tokens.yaml b/maestro/07-wallets/C000045-add-edit-tokens.yaml index 4024e06edde..57c78be9025 100644 --- a/maestro/07-wallets/C000045-add-edit-tokens.yaml +++ b/maestro/07-wallets/C000045-add-edit-tokens.yaml @@ -50,9 +50,8 @@ tags: - pressKey: Enter # First time token warning modal -- tapOn: - text: "1INCH.*" - index: 2 +- tapOn: + id: manageTokensRow.1INCH - assertVisible: "ETH Needed to Send Tokens" - tapOn: "ETH is required to pay the mining fees when sending tokens. The associated ETH wallet must contain a sufficient.*" - tapOn: "Please confirm your understanding below:" @@ -117,11 +116,9 @@ tags: timeout: 15000 # Save token - tapOn: Save - - assertVisible: ".*MOG.*" - - + # Confirm -- tapOn: Done +- tapOn: Save # Ensure tokens are visible - scrollUntilVisible: @@ -177,4 +174,4 @@ tags: # - tapOn: ".*Add / Edit Tokens" # # Tap on 'edit' icon # - tapOn: "" -# - tapOn: Delete \ No newline at end of file +# - tapOn: Delete diff --git a/maestro/common/import-wallets.yaml b/maestro/common/import-wallets.yaml index 463b9230e49..4d0e0ccaee2 100644 --- a/maestro/common/import-wallets.yaml +++ b/maestro/common/import-wallets.yaml @@ -47,11 +47,15 @@ env: - hideKeyboard - tapOn: "Enter your.*" # Drop keyboard - iOS +# Do not press Enter/Return: seed field is multiline, returnKeyType=none, +# blurOnSubmit=false. Tapping the field label also fails to dismiss. Tap the +# non-interactive instruction paragraph (Maestro iOS keyboard workaround). - runFlow: when: platform: iOS commands: - - tapOn: "Private Key or Private Seed" + - tapOn: + text: "^Enter your private seed, private key, or active key to verify and restore the associated wallet$" - tapOn: Next @@ -91,11 +95,18 @@ env: # tap on next until it becomes tapable and works to see "assets" button # skip if NO_COMPLETE is true (for autodetect tokens flow test) +# Bound the loop so a still-visible Next cannot hang the suite forever. - repeat: + times: 10 while: visible: Next true: ${!NO_COMPLETE} commands: - - tapOn: + - tapOn: text: Next - optional: true \ No newline at end of file + optional: true +- runFlow: + when: + true: ${!NO_COMPLETE} + commands: + - assertNotVisible: Next diff --git a/src/components/themed/ManageTokensRow.tsx b/src/components/themed/ManageTokensRow.tsx index 36cf7555bf1..2720cdbd45a 100644 --- a/src/components/themed/ManageTokensRow.tsx +++ b/src/components/themed/ManageTokensRow.tsx @@ -83,7 +83,11 @@ export const ManageTokensRowComponent: React.FC = props => { }) return ( - + Date: Fri, 21 Aug 2026 14:45:44 -0700 Subject: [PATCH 3/9] fix(maestro): stabilize C000034 token selection --- maestro/07-wallets/C000034-detect-disable-tokens.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/maestro/07-wallets/C000034-detect-disable-tokens.yaml b/maestro/07-wallets/C000034-detect-disable-tokens.yaml index 7b63b1741eb..adb44a47fda 100644 --- a/maestro/07-wallets/C000034-detect-disable-tokens.yaml +++ b/maestro/07-wallets/C000034-detect-disable-tokens.yaml @@ -55,9 +55,8 @@ tags: - assertVisible: "Auto Detected Tokens" - assertVisible: "All Tokens" - tapOn: - text: ${TOKEN_NAME + ".*"} - index: 1 - - tapOn: Done + id: ${"manageTokensRow." + TOKEN_NAME} + - tapOn: Save - assertNotVisible: ${TOKEN_NAME} # # Skip testing resync behavior until changed - expected NOT to rediscover tokens from a resync From 9ca037738dbad2aa6baa1518c018d6a4fee91220 Mon Sep 17 00:00:00 2001 From: EdgeClaws <268039199+EdgeClaws@users.noreply.github.com> Date: Tue, 18 Aug 2026 23:45:05 -0700 Subject: [PATCH 4/9] fix(maestro): follow wallet settings rename flow --- maestro/07-wallets/C000046-rename-wallet.yaml | 16 +++++++++------- src/components/modals/WalletSettingsModal.tsx | 2 ++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/maestro/07-wallets/C000046-rename-wallet.yaml b/maestro/07-wallets/C000046-rename-wallet.yaml index 490b0f37d54..943edfcd50f 100644 --- a/maestro/07-wallets/C000046-rename-wallet.yaml +++ b/maestro/07-wallets/C000046-rename-wallet.yaml @@ -20,19 +20,21 @@ tags: - tapOn: Assets - longPressOn: ${WALLET_NAME} -- tapOn: ".*Rename" -# Modal -- assertVisible: Rename Wallet +- tapOn: + id: "walletListMenu_walletSettings" +# Wallet Settings modal +- assertVisible: Wallet Settings - assertVisible: id: "modal-close-button" - tapOn: - id: "undefined.clearIcon" + id: "walletSettingsNameInput.clearIcon" - inputRandomText # Copy new name and save - copyTextFrom: - id: "undefined.textInput" + id: "walletSettingsNameInput.textInput" - evalScript: ${output.newWalletName = maestro.copiedText} -- tapOn: Submit +- tapOn: + id: "walletSettingsDoneButton" - assertVisible: ${output.newWalletName} # Arbitrary wait to ensure wallet state is saved to sync server (~30 seconds) @@ -54,4 +56,4 @@ tags: file: ../common/dismiss-modals.yaml - tapOn: Assets -- assertVisible: ${output.newWalletName} \ No newline at end of file +- assertVisible: ${output.newWalletName} diff --git a/src/components/modals/WalletSettingsModal.tsx b/src/components/modals/WalletSettingsModal.tsx index e7af313301e..ce0f3b71b6a 100644 --- a/src/components/modals/WalletSettingsModal.tsx +++ b/src/components/modals/WalletSettingsModal.tsx @@ -157,6 +157,7 @@ export const WalletSettingsModal: React.FC = props => { scroll > = props => { Date: Fri, 21 Aug 2026 14:46:01 -0700 Subject: [PATCH 5/9] fix(maestro): repair C000037 split wallet flow --- maestro/07-wallets/C000037-split-wallets.yaml | 28 ++++++++++--------- .../scenes/CreateWalletEditNameScene.tsx | 3 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/maestro/07-wallets/C000037-split-wallets.yaml b/maestro/07-wallets/C000037-split-wallets.yaml index 74e6d602b88..378fc57d017 100644 --- a/maestro/07-wallets/C000037-split-wallets.yaml +++ b/maestro/07-wallets/C000037-split-wallets.yaml @@ -44,18 +44,21 @@ tags: - longPressOn: "My Base" # Verify split option is available and tap it -- tapOn: ".*Split Wallet" +- tapOn: + id: walletListMenu_split # Select Ethereum as target -- assertVisible: Create Wallet From Seed +- assertVisible: Split Wallet - assertVisible: Search Wallets -- tapOn: ".*Ethereum" -- tapOn: Next +- tapOn: + id: "createWalletRow.create-wallet:ethereum-ethereum" +- tapOn: + id: nextButton # Next scene - assertVisible: Split Wallet -- assertVisible: This action creates wallets from pre-existing wallets. -- assertVisible: Tap on wallet to edit name +- assertVisible: EVM-compatible networks share the.*existing address. +- assertVisible: Tap on wallet to edit settings - evalScript: ${output.newETHName = ".*My Ether \\(Split from My Base\\).*"} - assertVisible: ${output.newETHName} @@ -64,21 +67,20 @@ tags: text: ${"ETH.*"} index: 0 - tapOn: - id: "undefined.clearIcon" + id: "walletSettingsNameInput.clearIcon" - inputRandomText ## Unable to target text input field to test changing name # - copyTextFrom: # id: "undefined.textInput" # - evalScript: ${var newETHName = maestro.copiedText} -# - tapOn: Submit -- assertVisible: Submit +# - tapOn: Done +- assertVisible: Done - tapOn: id: "modal-close-button" # Button shares name with scene title -- tapOn: - text: Split Wallet - index: 1 +- tapOn: + id: splitWalletConfirmButton @@ -98,7 +100,7 @@ tags: # - assertVisible: Split Wallet # - assertVisible: This action creates wallets from pre-existing wallets. -# - assertVisible: Tap on wallet to edit name +# - assertVisible: Tap on wallet to edit settings # - evalScript: ${var newBTCName = ".*My Bitcoin \\(Split from My Litecoin\\).*"} # - assertVisible: ${newBTCName} # - tapOn: diff --git a/src/components/scenes/CreateWalletEditNameScene.tsx b/src/components/scenes/CreateWalletEditNameScene.tsx index 456227d9b68..1e891fded53 100644 --- a/src/components/scenes/CreateWalletEditNameScene.tsx +++ b/src/components/scenes/CreateWalletEditNameScene.tsx @@ -441,7 +441,8 @@ const CreateWalletEditNameComponent: React.FC = props => { ) : ( From d4f9a1be95e4bc8ebe446cbebe9de060a62a7d5b Mon Sep 17 00:00:00 2001 From: EdgeClaws <268039199+EdgeClaws@users.noreply.github.com> Date: Fri, 21 Aug 2026 02:39:37 -0700 Subject: [PATCH 6/9] fix(maestro): select Coreum by stable row id --- .../C000036-autodetect-all-networks.yaml | 4 ++-- maestro/common/import-wallets.yaml | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/maestro/07-wallets/C000036-autodetect-all-networks.yaml b/maestro/07-wallets/C000036-autodetect-all-networks.yaml index fe228d3d64b..4b3b83db6c4 100644 --- a/maestro/07-wallets/C000036-autodetect-all-networks.yaml +++ b/maestro/07-wallets/C000036-autodetect-all-networks.yaml @@ -24,7 +24,7 @@ tags: # EVMs: Only Sonic and Pulsechain (others tested via regular asset sync) - evalScript: ${ output.wallets = '[ - "Coreum", + "COREUM", "Osmosis", "Avalanche", "Solana", @@ -147,4 +147,4 @@ tags: # XRPL - RLUSD # Tron - SUN -# Algorand - USDC -- conflict but only default token on algorand and algorand does not support import \ No newline at end of file +# Algorand - USDC -- conflict but only default token on algorand and algorand does not support import diff --git a/maestro/common/import-wallets.yaml b/maestro/common/import-wallets.yaml index 4d0e0ccaee2..2b67dd9dc31 100644 --- a/maestro/common/import-wallets.yaml +++ b/maestro/common/import-wallets.yaml @@ -28,9 +28,20 @@ env: # Escape parentheses for regex matching - "Bitcoin (no Segwit)" breaks flow otherwise - evalScript: ${output.assetName = output.assetName.replace(/\(/g, '\\(').replace(/\)/g, '\\)')} - - tapOn: - text: ${".*" + output.assetName} - index: 1 # First index is thesearch bar + # Coreum's iOS accessibility tree exposes the row only by its stable ID. + - runFlow: + when: + true: ${output.assetName == "COREUM"} + commands: + - tapOn: + id: "createWalletRow.create-wallet:coreum-coreum" + - runFlow: + when: + true: ${output.assetName != "COREUM"} + commands: + - tapOn: + text: ${".*" + output.assetName} + index: 1 # First index is the search bar - evalScript: ${output.index++} - tapOn: Next From 8540298e525bf8877742840d5566d3d1e17bd2ab Mon Sep 17 00:00:00 2001 From: EdgeClaws <268039199+EdgeClaws@users.noreply.github.com> Date: Thu, 20 Aug 2026 23:39:44 -0700 Subject: [PATCH 7/9] fix(maestro): assert current split wallet title --- maestro/07-wallets/C000048-split-all-evm.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maestro/07-wallets/C000048-split-all-evm.yaml b/maestro/07-wallets/C000048-split-all-evm.yaml index d4274c6e698..6d6157d65ec 100644 --- a/maestro/07-wallets/C000048-split-all-evm.yaml +++ b/maestro/07-wallets/C000048-split-all-evm.yaml @@ -34,7 +34,7 @@ tags: - tapOn: ".*Split Wallet" # Verify split wallet scene -- assertVisible: Create Wallet From Seed +- assertVisible: Split Wallet - assertVisible: Search Wallets # Define expected EVM networks (ordered by appearance) From 9f545a9ce9015a1a3d3b6273b6f1e575ed15d208 Mon Sep 17 00:00:00 2001 From: EdgeClaws <268039199+EdgeClaws@users.noreply.github.com> Date: Fri, 21 Aug 2026 14:46:28 -0700 Subject: [PATCH 8/9] fix(maestro): update C190284 2FA prompt --- maestro/03-login/C190284-2fa-01.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maestro/03-login/C190284-2fa-01.yaml b/maestro/03-login/C190284-2fa-01.yaml index b299bb51ed8..44159ec374c 100644 --- a/maestro/03-login/C190284-2fa-01.yaml +++ b/maestro/03-login/C190284-2fa-01.yaml @@ -23,8 +23,8 @@ tags: visible: "Username and password are correct. This device cannot log in because\ \ it does not have the right 2-factor code." timeout: 15000 -- assertVisible: "Enter Backup Code" -- tapOn: "Enter Backup Code" +- assertVisible: "Enter 2FA code" +- tapOn: "Enter 2FA code" - inputText: ${MAESTRO_EDGE_2FA_BACKUP_CODE} - assertVisible: "Submit" From 13edaa04ced9f6b9e7505fc104d69ab201f167e9 Mon Sep 17 00:00:00 2001 From: EdgeClaws <268039199+EdgeClaws@users.noreply.github.com> Date: Fri, 21 Aug 2026 14:46:36 -0700 Subject: [PATCH 9/9] fix(maestro): update C999003 help flow --- maestro/13-settings/C999003-help-logged-in.yaml | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/maestro/13-settings/C999003-help-logged-in.yaml b/maestro/13-settings/C999003-help-logged-in.yaml index 722d742511e..9638d944f57 100644 --- a/maestro/13-settings/C999003-help-logged-in.yaml +++ b/maestro/13-settings/C999003-help-logged-in.yaml @@ -32,12 +32,11 @@ tags: - assertVisible: "Thanks for using Edge!" - assertVisible: "Knowledge Base" - assertVisible: "Live Chat" -- assertVisible: "Submit a Support Ticket" - assertVisible: "Call for Assistance" - assertVisible: "Visit Official Site" - tapOn: "Knowledge Base" - extendedWaitUntil: - visible: "Edge Help Center home page" + visible: ".*Troubleshooting for Edge related issues.*" timeout: 15000 - assertVisible: id: "chevronBack" @@ -48,18 +47,13 @@ tags: - tapOn: "Live Chat" # Ensure it opens to correct page AND chat is open - assertVisible: ".*support\\.edge\\.app.*" -- assertVisible: "Options menu" +- assertVisible: ".*Need Help\\? Reach Out via Our Chat Bubble!.*" +# Call button opens in phone app - launchApp: stopApp: false - extendedWaitUntil: - visible: "Submit a Support Ticket" + visible: "Call for Assistance" timeout: 15000 -- tapOn: "Submit a Support Ticket" -- assertVisible: "Submit a Request" -- tapOn: - id: "chevronBack" -# Call button opens in phone app -- tapOn: "Help" - tapOn: "Call for Assistance" # Optional for iOS simulator (unable to open phone app) - extendedWaitUntil: @@ -78,4 +72,3 @@ tags: id: "chevronBack" - stopApp -