Skip to content
Merged
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
6 changes: 6 additions & 0 deletions .github/workflows/maestro.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,12 @@ jobs:
disable-animations: true
# logcat runs alongside so the lines before an emulator exit survive in the artifact.
script: |
adb wait-for-device
# The AVD boots with 3-button navigation, whose Back key sits over the bottom row of
# the chat list: a tap on a contact there backgrounded the app. Real devices use
# gestures, and the app is laid out edge-to-edge for them.
adb shell cmd overlay enable com.android.internal.systemui.navbar.gestural
adb shell cmd overlay list | grep -i navbar || true
adb logcat -v threadtime > "$GITHUB_WORKSPACE/logcat.txt" &
bundle exec fastlane android flipcash_maestro
env:
Expand Down
6 changes: 3 additions & 3 deletions maestro/buy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ tags:
---
# Fund-safe: drives the buy flow to the confirmation screen and stops (never confirms).
#
# v2 renames the direct buy to "Get" and only offers it on a currency the account does NOT
# hold — a held currency's info screen shows Give/Convert/Withdraw instead. So this enters
# through Discover rather than through the wallet's own deck.
# The direct buy is a "Buy In" tile on a currency the account does not hold and "Buy More" on
# one it does (it was "Get" before #1341); it opens the same swap flow, titled by the screen
# as "You Get" on the receipt. This enters through Discover rather than the wallet's own deck.
#
# The payment currency is also picked inline on the amount screen now (seeded with a default),
# so there is no pushed "Select Payment Currency" step between the amount and the receipt.
Expand Down
7 changes: 4 additions & 3 deletions maestro/coinbase_onramp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ tags:

# Add Dollars is a wallet action tile now, below the card deck and recent activity.
- runFlow: subflows/navigate_to_wallet.yaml
- scrollUntilVisible:
element: "Add Dollars"
direction: DOWN
- runFlow:
file: helpers/scroll_wallet_to_tile.yaml
env:
TILE: "Add Dollars"
- tapOn: "Add Dollars"
- extendedWaitUntil: { visible: { text: "Add Dollars With" }, timeout: 8000 }

Expand Down
7 changes: 4 additions & 3 deletions maestro/currency_creator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ tags:

# Currency creation is a wallet action tile now -- Discover no longer carries the promo.
- runFlow: subflows/navigate_to_wallet.yaml
- scrollUntilVisible:
element: "Create Your Own Currency"
direction: DOWN
- runFlow:
file: helpers/scroll_wallet_to_tile.yaml
env:
TILE: "Create Your Own Currency"
- tapOn: "Create Your Own Currency"
- extendedWaitUntil: { visible: { id: currency_creator_screen }, timeout: 8000 }
- assertVisible: "Create Your Currency"
Expand Down
7 changes: 4 additions & 3 deletions maestro/deposit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ tags:
- runFlow: subflows/login_with_deeplink.yaml
# Add Dollars is a wallet action tile now, below the card deck and recent activity.
- runFlow: subflows/navigate_to_wallet.yaml
- scrollUntilVisible:
element: "Add Dollars"
direction: DOWN
- runFlow:
file: helpers/scroll_wallet_to_tile.yaml
env:
TILE: "Add Dollars"

- tapOn: "Add Dollars"
- extendedWaitUntil:
Expand Down
25 changes: 25 additions & 0 deletions maestro/helpers/scroll_wallet_to_tile.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Scrolls the Wallet tab down until an action tile's label is in the tree. Requires env: TILE.
appId: com.flipcash.app.android
---
# scrollUntilVisible swipes from the screen centre, which is on the card deck, and the deck
# swallowed the drag on CI (the list never moved past the header). Drag in the left gutter
# instead, outside the cards; the tiles are the last rows, composed only once scrolled near.
- repeat:
while:
notVisible: "${TILE}"
times: 12
commands:
- swipe:
start: "2%, 80%"
end: "2%, 30%"
duration: 500
# The label can come into the tree while its row is still at the bottom edge, so keep going to
# the end of the list: that parks the last row (Add/Withdraw Dollars) as high as it can go.
# Extra swipes at the end are no-ops.
- repeat:
times: 2
commands:
- swipe:
start: "2%, 80%"
end: "2%, 30%"
duration: 500
4 changes: 2 additions & 2 deletions maestro/subflows/login_usdf_only.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ appId: com.flipcash.app.android
clearAppState: "true"
deeplink: ${USDF_ONLY_DEEPLINK}

# Launch lands on the Wallet tab, not the camera (homeRoute = AppRoute.Tabs.Wallet).
# A cold launch opens on the Chats tab (#1529), not the Wallet or the camera.
- extendedWaitUntil:
visible:
id: "wallet_screen"
id: "chats_screen"
4 changes: 2 additions & 2 deletions maestro/subflows/login_with_deeplink.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ appId: com.flipcash.app.android
clearAppState: "true"
deeplink: ${LOGIN_DEEPLINK}

# Launch lands on the Wallet tab, not the camera (homeRoute = AppRoute.Tabs.Wallet).
# A cold launch opens on the Chats tab (#1529), not the Wallet or the camera.
- extendedWaitUntil:
visible:
id: "wallet_screen"
id: "chats_screen"
7 changes: 4 additions & 3 deletions maestro/subflows/navigate_to_discovery.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ appId: com.flipcash.app.android
# There is no Discover tab: currency discovery is one of the wallet's action tiles.
- runFlow: navigate_to_wallet.yaml
# The tiles sit below the card deck and recent activity.
- scrollUntilVisible:
element: "Currency Leaderboard"
direction: DOWN
- runFlow:
file: ../helpers/scroll_wallet_to_tile.yaml
env:
TILE: "Currency Leaderboard"
- tapOn: "Currency Leaderboard"
- extendedWaitUntil:
visible:
Expand Down
7 changes: 4 additions & 3 deletions maestro/subflows/navigate_to_withdraw.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ appId: com.flipcash.app.android
---
# Withdraw Dollars is a wallet action tile now, below the card deck and recent activity.
- runFlow: navigate_to_wallet.yaml
- scrollUntilVisible:
element: "Withdraw Dollars"
direction: DOWN
- runFlow:
file: ../helpers/scroll_wallet_to_tile.yaml
env:
TILE: "Withdraw Dollars"
- tapOn: "Withdraw Dollars"
# No preselected mint, so the flow opens on the currency picker.
- extendedWaitUntil:
Expand Down
4 changes: 4 additions & 0 deletions maestro/subflows/open_tip_chat.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Chats tab → the contact's tip conversation. Requires env: CONTACT_NAME.
appId: com.flipcash.app.android
---
# An unset secret arrives as "" and would otherwise become an empty-regex tap on the status bar.
- assertTrue:
condition: ${typeof CONTACT_NAME !== 'undefined' && CONTACT_NAME.trim().length > 0}
label: "CONTACT_NAME is empty: set the MAESTRO_CONTACT_NAME and MAESTRO_CONTACT_PHONE secrets"
# The list is ordered by recency and carries the account's own self-tip chat, so index 0 is not
# stably the contact — open it by name.
- tapOn: { id: nav_chats }
Expand Down
13 changes: 7 additions & 6 deletions maestro/subflows/try_get_from_leaderboard.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Opens leaderboard row ${ROW} and, if that currency offers "Get", enters the buy flow.
# "Get" is only offered on a currency the account does NOT hold, and the leaderboard is live
# data, so the caller walks the first few rows until one lands on swap_screen.
# Opens leaderboard row ${ROW} and, if that currency offers a buy tile, enters the buy flow.
# The tile reads "Buy In" on a currency the account does not hold and "Buy More" on one it does
# (#1341 replaced "Get"); Dollars has neither. The leaderboard is live data, so the caller walks
# the first few rows until one lands on swap_screen.
appId: com.flipcash.app.android
---
- tapOn:
Expand All @@ -13,15 +14,15 @@ appId: com.flipcash.app.android

- runFlow:
when:
visible: "^Get$"
visible: "^Buy (In|More)$"
commands:
- tapOn: "^Get$"
- tapOn: "^Buy (In|More)$"
- extendedWaitUntil:
visible:
id: swap_screen
timeout: 8000

# Held currency — back out and let the caller try the next row.
# No buy tile (Dollars) — back out and let the caller try the next row.
- runFlow:
when:
notVisible:
Expand Down
7 changes: 4 additions & 3 deletions maestro/usdf_only_gate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@ tags:
- runFlow: subflows/navigate_to_wallet.yaml
- assertNotVisible: "Float"
# The action tiles sit below the (empty) deck and recent activity.
- scrollUntilVisible:
element: "Currency Leaderboard"
direction: DOWN
- runFlow:
file: helpers/scroll_wallet_to_tile.yaml
env:
TILE: "Currency Leaderboard"

- runFlow: subflows/navigate_to_discovery.yaml
- assertVisible:
Expand Down
Loading