Skip to content

test: improve TabBarComponent retry logic to reduce trade smoke flakiness#28144

Draft
dylanbutler1 wants to merge 1 commit intomainfrom
fix/trade-ios-smoke-tabbar-retry-v2
Draft

test: improve TabBarComponent retry logic to reduce trade smoke flakiness#28144
dylanbutler1 wants to merge 1 commit intomainfrom
fix/trade-ios-smoke-tabbar-retry-v2

Conversation

@dylanbutler1
Copy link
Copy Markdown
Contributor

Description

The trade-ios-smoke-1 CI job has been flaky since ~Feb 26. Investigation traced one contributing cause to tapAccountsMenu() (formerly tapSettings() via PR #26568), which wrapped a multi-step navigation sequence (wallet tap → assert wallet → hamburger tap → assert menu) in a single executeWithRetry block. When any intermediate step failed, the retry restarted the entire sequence from scratch, potentially tapping wallet mid-navigation and leaving the app in a broken state.

This PR makes three improvements to TabBarComponent:

  1. Split tapAccountsMenu() into two separately retried steps: First calls this.tapWallet() (which already has its own retry + validation pattern), then retries only the hamburger→accounts menu step independently. A failure opening the accounts menu no longer restarts wallet navigation.

  2. Add retry logic to tapActions(): Was a bare UnifiedGestures.waitAndTap() without any retry or validation. Now wrapped in executeWithRetry with a visibility assertion on the actions bottom sheet swap button.

  3. Add retry logic to tapTrade(): Same treatment as tapActions() — wrapped in executeWithRetry with validation.

Both tapActions() and tapTrade() now follow the same resilient pattern used by tapWallet(), tapExploreButton(), tapActivity(), and tapRewards().

Changelog

CHANGELOG entry: null

Related issues

Refs: #26568

Manual testing steps

Feature: Trade smoke E2E reliability

  Scenario: swap/bridge/stake tests navigate to settings without flaking
    Given a CI environment running trade-ios-smoke-1

    When swap-action-smoke, bridge-action-smoke, or stake-action-smoke tests
         call tapSettings() or tapActions()
    Then navigation succeeds reliably without retry-induced broken state

Screenshots/Recordings

N/A — no UI changes, E2E test infrastructure only.

Before

N/A

After

N/A

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Made with Cursor

…ness

Split tapAccountsMenu() into two separately retried steps — first
tapWallet() (which has its own retry) then the hamburger→accounts menu
navigation — so that a failure opening the menu doesn't restart wallet
navigation from scratch.

Also wrap tapActions() and tapTrade() with executeWithRetry + validation
assertion to match the resilient pattern used by other tab bar methods.

Made-with: Cursor
@dylanbutler1 dylanbutler1 self-assigned this Mar 31, 2026
@github-actions
Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@github-actions
Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

⏭️ Smart E2E selection skipped - draft PR

All E2E tests pre-selected.

View GitHub Actions results

@github-actions
Copy link
Copy Markdown
Contributor

E2E Fixture Validation — Schema is up to date
18 value mismatches detected (expected — fixture represents an existing user).
View details

@sonarqubecloud
Copy link
Copy Markdown

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants