Skip to content
Closed
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
1 change: 0 additions & 1 deletion eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
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
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
5 changes: 2 additions & 3 deletions maestro/07-wallets/C000034-detect-disable-tokens.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions maestro/07-wallets/C000036-autodetect-all-networks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ tags:
# EVMs: Only Sonic and Pulsechain (others tested via regular asset sync)
- evalScript: ${
output.wallets = '[
"Coreum",
"COREUM",
"Osmosis",
"Avalanche",
"Solana",
Expand Down Expand Up @@ -147,4 +147,4 @@ tags:
# XRPL - RLUSD
# Tron - SUN

# Algorand - USDC -- conflict but only default token on algorand and algorand does not support import
# Algorand - USDC -- conflict but only default token on algorand and algorand does not support import
28 changes: 15 additions & 13 deletions maestro/07-wallets/C000037-split-wallets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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}

Expand All @@ -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



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 Down
13 changes: 5 additions & 8 deletions maestro/07-wallets/C000045-add-edit-tokens.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:"
Expand Down Expand Up @@ -117,11 +116,9 @@ tags:
timeout: 15000
# Save token
- tapOn: Save
- assertVisible: ".*MOG.*"



# Confirm
- tapOn: Done
- tapOn: Save

# Ensure tokens are visible
- scrollUntilVisible:
Expand Down Expand Up @@ -177,4 +174,4 @@ tags:
# - tapOn: ".*Add / Edit Tokens"
# # Tap on 'edit' icon
# - tapOn: ""
# - tapOn: Delete
# - tapOn: Delete
16 changes: 9 additions & 7 deletions maestro/07-wallets/C000046-rename-wallet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -54,4 +56,4 @@ tags:
file: ../common/dismiss-modals.yaml

- tapOn: Assets
- assertVisible: ${output.newWalletName}
- assertVisible: ${output.newWalletName}
2 changes: 1 addition & 1 deletion maestro/07-wallets/C000048-split-all-evm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
15 changes: 4 additions & 11 deletions maestro/13-settings/C999003-help-logged-in.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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:
Expand All @@ -78,4 +72,3 @@ tags:
id: "chevronBack"

- stopApp

34 changes: 28 additions & 6 deletions maestro/common/import-wallets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -47,11 +58,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

Expand Down Expand Up @@ -91,11 +106,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
optional: true
- runFlow:
when:
true: ${!NO_COMPLETE}
commands:
- assertNotVisible: Next
2 changes: 2 additions & 0 deletions src/components/modals/WalletSettingsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ export const WalletSettingsModal: React.FC<Props> = props => {
scroll
>
<ModalFilledTextInput
testID="walletSettingsNameInput"
autoCorrect={false}
autoFocus={false}
value={name}
Expand Down Expand Up @@ -208,6 +209,7 @@ export const WalletSettingsModal: React.FC<Props> = props => {
<ModalButtons
primary={{
label: lstrings.string_done_cap,
testID: 'walletSettingsDoneButton',
onPress: handleSubmit,
disabled: isSubmitting,
spinner: isSubmitting
Expand Down
3 changes: 2 additions & 1 deletion src/components/scenes/CreateWalletEditNameScene.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,8 @@ const CreateWalletEditNameComponent: React.FC<Props> = props => {
<ButtonsView
primary={{
label: lstrings.fragment_wallets_split_wallet,
onPress: handleSplit
onPress: handleSplit,
testID: 'splitWalletConfirmButton'
}}
/>
) : (
Expand Down
6 changes: 5 additions & 1 deletion src/components/themed/ManageTokensRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,11 @@ export const ManageTokensRowComponent: React.FC<Props> = props => {
})

return (
<Pressable style={styles.row} onPress={handleToggle}>
<Pressable
style={styles.row}
testID={`manageTokensRow.${token.currencyCode}`}
onPress={handleToggle}
>
<CryptoIcon
marginRem={[0, 0.5, 0, 0]} // We don't need left margins because there's no border. This component effectively is the left "border"
sizeRem={2}
Expand Down