Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion maestro/01-accounts/C000000-change-password.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,9 @@ tags:
- pressKey: Enter
- assertVisible: Invalid username or password
# Ensure new password works
- tapOn:
id: "passwordFormField.clearIcon"
- tapOn: Password
- eraseText
- inputText: ${SECOND_PASSWORD}
- pressKey: Enter

Expand Down
14 changes: 7 additions & 7 deletions maestro/01-accounts/C000001-switch-and-forget-account.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ tags:
id: "sideMenuButton"
- tapOn: "Logout"
- tapOn: "Exit PIN"
- assertVisible: ${USERNAME}
- assertVisible: ${USERNAME1}
- tapOn: "Username"
- eraseText
- inputText: ${USERNAME2}
Expand Down Expand Up @@ -79,7 +79,7 @@ tags:
id: "sideMenuButton"
- tapOn:
id: "downArrow"
- assertVisible: ${USERNAME}
- assertVisible: ${USERNAME1}
- assertVisible: ${USERNAME2}
- assertVisible: ${USERNAME3}

Expand All @@ -89,22 +89,22 @@ tags:
index: 0
- assertVisible: ${".*Forget Account.*"}
- tapOn: "Cancel"
- assertVisible: ${USERNAME}
- assertVisible: ${USERNAME1}
- assertVisible: ${USERNAME2}
- assertVisible: ${USERNAME3}
# Delete first account
- tapOn:
id: "sideMenuClose"
index: 1
- assertVisible: ${".*" + USERNAME + ".*"} # Username in confirmation modal
- assertVisible: ${".*" + USERNAME1 + ".*"} # Username in confirmation modal
- tapOn: "Forget"
- assertNotVisible: ${USERNAME}
- assertNotVisible: ${USERNAME1}
- tapOn: ${USERNAME2}

# View, forget, switch accounts from PIN login screen
- assertVisible: ${USERNAME2}
- tapOn: ${USERNAME2}
- assertNotVisible: ${USERNAME}
- assertNotVisible: ${USERNAME1}
- assertVisible: ${USERNAME2}
- assertVisible: ${USERNAME3}
- tapOn:
Expand Down Expand Up @@ -153,4 +153,4 @@ tags:
- assertNotVisible:
id: "userDropdownIcon"

- stopApp
- stopApp
4 changes: 2 additions & 2 deletions maestro/03-login/C190284-2fa-01.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down
1 change: 1 addition & 0 deletions maestro/03-login/C999002-pin-login.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ tags:
- extendedWaitUntil:
visible: ${MAESTRO_EDGE_UTXO_USERNAME}
timeout: 15000
- waitForAnimationToEnd

- tapOn: ${MAESTRO_EDGE_UTXO_PIN_1}
- tapOn: ${MAESTRO_EDGE_UTXO_PIN_2}
Expand Down
2 changes: 1 addition & 1 deletion maestro/07-wallets/C000029a-migrate-wallets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ env:
IMPORT_SEED: ${MAESTRO_EDGE_MAX_IMPORT_SEED}
tags:
- android
- C000029
- C000029a
---
- runFlow:
file: ../common/launch-cleared.yaml
Expand Down
36 changes: 18 additions & 18 deletions maestro/07-wallets/C000032-archive-and-restore-wallets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,38 +22,38 @@ tags:


# Archive wallets
- evalScript: ${var walletNames = ["My Bitcoin", "My Bitcoin Cash", "My Dash", "My Ether", "My Litecoin"]}
- evalScript: ${var index = 0}
- evalScript: ${output.walletNames = ["My Bitcoin", "My Bitcoin Cash", "My Dash", "My Ether", "My Litecoin"]}
- evalScript: ${output.index = 0}
- tapOn: Assets
- repeat:
times: ${walletNames.length - 1}
times: ${output.walletNames.length - 1}
commands:
- tapOn: ${walletNames[index]}
- tapOn: ${output.walletNames[output.index]}
- tapOn:
id: gearIcon
- tapOn: ".*Archive Wallet"
# Modal
- assertVisible: "Archive Wallet"
- assertVisible: ${"Are you sure you want to archive " + walletNames[index] + "?"}
- assertVisible: ${"Are you sure you want to archive " + output.walletNames[output.index] + "?"}
- assertVisible: Cancel
# Check if "My Ether" wallet
- runFlow:
when:
true: ${walletNames[index] == "My Ether"}
true: ${output.walletNames[output.index] == "My Ether"}
commands:
- assertVisible: "Archiving this wallet will also archive any enabled tokens for this wallet."
label: "Extra message for Ether wallets"
# Archive
- tapOn: Archive
- assertNotVisible: ${walletNames[index]}
- assertNotVisible: ${output.walletNames[output.index]}

- evalScript: ${index++}
- evalScript: ${output.index++}
label: "Archive all wallets except last"

# Unable to archive last wallet
- runFlow:
commands:
- longPressOn: ${walletNames[index]}
- longPressOn: ${output.walletNames[output.index]}
- tapOn: ".*Archive Wallet"
- assertVisible: "Cannot Archive Wallet"
- assertVisible: "At least one wallet required in this account."
Expand All @@ -80,13 +80,13 @@ tags:
- assertVisible: "Restore Wallets"

# Toggle on wallets to restore
- evalScript: ${var walletCurrencyCodes = ["BTC", "BCH", "DASH", "ETH", "LTC"]}
- evalScript: ${var index = 0}
- evalScript: ${output.walletCurrencyCodes = ["BTC", "BCH", "DASH", "ETH", "LTC"]}
- evalScript: ${output.index = 0}
- repeat:
times: ${walletCurrencyCodes.length - 1}
times: ${output.walletCurrencyCodes.length - 1}
commands:
- tapOn: ${walletCurrencyCodes[index]}
- evalScript: ${index++}
- tapOn: ${output.walletCurrencyCodes[output.index]}
- evalScript: ${output.index++}
- tapOn: Restore

# Modal
Expand All @@ -97,14 +97,14 @@ tags:

# Confirm restored and returned to assets screen
- assertVisible: "Total Balance.*"
- evalScript: ${var index = 0}
- evalScript: ${output.index = 0}
- repeat:
times: ${walletNames.length}
times: ${output.walletNames.length}
commands:
- scrollUntilVisible:
element: ${walletNames[index]}
element: ${output.walletNames[output.index]}
direction: DOWN
- evalScript: ${index++}
- evalScript: ${output.index++}

# Ensure restore is not tappable when none left to restore
- tapOn:
Expand Down
8 changes: 5 additions & 3 deletions maestro/07-wallets/C000034-detect-disable-tokens.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ tags:
# Complete import
- tapOn: Next
# Ensure receive token detected notification and tap on it
# After trying several wait/tap patterns, this polling loop has been the
# most dependable: the notification disappears after about 5 seconds, so
# poll while Total Balance remains visible; tapping it exits the loop.
- repeat:
while:
visible: "Total Balance.*"
Expand All @@ -55,9 +58,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
Expand Down
18 changes: 9 additions & 9 deletions maestro/07-wallets/C000036-autodetect-all-networks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ tags:
# All networks that support tokens (and import seed)
# EVMs: Only Sonic and Pulsechain (others tested via regular asset sync)
- evalScript: ${
var wallets = '[
"Coreum",
output.wallets = '[
"TX",
"Osmosis",
"Avalanche",
"Solana",
Expand All @@ -40,7 +40,7 @@ tags:
- runFlow:
file: ../common/import-wallets.yaml
env:
ASSET_NAMES: ${wallets}
ASSET_NAMES: ${output.wallets}
# label: "Import wallets"

- runFlow:
Expand All @@ -54,7 +54,7 @@ tags:

# Tokens matching the imported networks
- evalScript: ${
var tokens = [
output.tokens = [
"ATOM",
"JOE",
"PYTH",
Expand Down Expand Up @@ -94,17 +94,17 @@ tags:
# visible: ${".*New tokens were detected and enabled on " + WALLET_NAME + ".*"}
# timeout: 60000

- evalScript: ${var index = 0}
- evalScript: ${output.index = 0}
- repeat:
times: ${tokens.length}
times: ${output.tokens.length}
commands:
- scrollUntilVisible:
element: ${tokens[index]}
element: ${output.tokens[output.index]}
direction: UP
timeout: 20000
optional: true
- scrollUntilVisible:
element: ${tokens[index]}
element: ${output.tokens[output.index]}
direction: DOWN
timeout: 90000
- scrollUntilVisible:
Expand All @@ -114,7 +114,7 @@ tags:
timeout: 10000
optional: true
label: "Scroll to bottom."
- evalScript: ${index++}
- evalScript: ${output.index++}



Expand Down
34 changes: 18 additions & 16 deletions maestro/07-wallets/C000037-split-wallets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,41 +44,43 @@ 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
- evalScript: ${var newETHName = ".*My Ether \\(Split from My Base\\).*"}
- assertVisible: ${newETHName}
- 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}

# Rename modal
- tapOn:
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



Expand All @@ -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:
Expand All @@ -109,7 +111,7 @@ tags:
## Verify new wallets and balances
# ETH recovered
- scrollUntilVisible:
element: ${newETHName}
element: ${output.newETHName}
direction: DOWN
centerElement: true
timeout: 10000
Expand Down
20 changes: 10 additions & 10 deletions maestro/07-wallets/C000043-private-view-key.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,20 @@ tags:
# Monero/Zano (CryptoNote): 64-char hex
# Zcash/Pirate (zk-SNARKs): longer alphanumeric strings
- evalScript: ${
var walletFormats = {
output.walletFormats = {
"Monero":"[a-fA-F0-9]{64}",
"Pirate Chain":"[a-zA-Z0-9]{64,}",
"Zcash":"[a-zA-Z0-9]{64,}",
"Zano":"[a-fA-F0-9]{64}"
}
}
- evalScript: ${var walletNames = Object.keys(walletFormats)}
- evalScript: ${output.walletNames = Object.keys(output.walletFormats)}

# Create account with wallets that support private view key
- runFlow:
file: ../common/create-account.yaml
env:
NEW_WALLETS: ${JSON.stringify(walletNames)}
NEW_WALLETS: ${JSON.stringify(output.walletNames)}
label: "Add wallets with private view key support"

- runFlow:
Expand All @@ -43,17 +43,17 @@ tags:
- tapOn: Assets

# Loop over each wallet and test Private View Key
- evalScript: ${var index = 0}
- evalScript: ${output.index = 0}
- repeat:
times: ${walletNames.length}
times: ${output.walletNames.length}
commands:
# Wallet nickname often excludes extra words (e.g. "Pirate Chain" -> "Pirate")
- evalScript: ${var nickName = "My " + walletNames[index].split(" ")[0]}
- evalScript: ${output.nickName = "My " + output.walletNames[output.index].split(" ")[0]}
- scrollUntilVisible:
element: ${nickName}
element: ${output.nickName}
direction: DOWN
centerElement: true
- longPressOn: ${nickName}
- longPressOn: ${output.nickName}
- assertVisible: ".*Private View Key"
- tapOn: ".*Private View Key"
# Private View Key Modal
Expand All @@ -63,9 +63,9 @@ tags:
- assertVisible: "Copy"
# Validate view key format for this network
- assertVisible:
text: ${walletFormats[walletNames[index]]}
text: ${output.walletFormats[output.walletNames[output.index]]}
- tapOn:
id: "modal-close-button"
- evalScript: ${index++}
- evalScript: ${output.index++}

# - stopApp
Loading