This directory contains Maestro test flows for the AppKit React Native example app.
basic-smoke-test.yaml- Basic test that verifies app launch and modal openingwallet-qr-load.yaml- Basic test that verifies if the WalletConnect QR Code loadsswitch-network.yaml- Tests switching between different blockchain networksaccount-activity.yaml- Tests viewing account activity and transaction historysend.yaml- Tests the send transaction flowswaps.yaml- Tests token swap functionalityonramp.yaml- Tests fiat onramp purchase flow
Install Maestro CLI:
macOS:
brew tap mobile-dev-inc/tap
brew install maestroLinux/Windows:
curl -Ls "https://get.maestro.mobile.dev" | bashiOS Simulator:
# Start the app first
cd examples/expo-multichain
npm run ios
# In another terminal, run tests
maestro test .maestro/basic-smoke-test.yamlAndroid Emulator:
# Start the app first
cd examples/expo-multichain
npm run android
# In another terminal, run tests
maestro test .maestro/basic-smoke-test.yamlRun all tests:
maestro test .maestro/The tests are integrated into the GitHub Actions workflow and run automatically on every PR.
When you update the UI or change button labels/IDs, make sure to update the corresponding test files.
- Text content:
"Button Text" - Test ID:
id: "component-test-id" - Index:
index: 0
Add takeScreenshot commands to capture the current state:
- takeScreenshot: screenshots/debug-stateView screenshots in the test results or locally in .maestro/screenshots/.
Each test follows this pattern:
- Launch app
- Wait for UI to load
- Interact with elements
- Assert expected state
- Take screenshots for verification
- Check if the text/id exists in the app
- Increase timeout values
- Add
waitForAnimationToEndbefore assertions
- Make sure emulator/simulator is running before tests
- Check that the app is properly installed
- Grant necessary permissions (notifications, etc.)
- Check file permissions in the
.maestro/screenshots/directory - Ensure the path exists before running tests