| name | argent-test-ui-flow |
| description | Autonomously test an app UI (iOS or Android) by running interact-screenshot-verify loops using argent MCP tools. Use when testing a UI flow, verifying login works, testing navigation, or running an end-to-end UI test scenario. |
Platform-agnostic
The interaction tool names are identical on iOS and Android โ gesture-tap, gesture-swipe, describe, screenshot, launch-app, etc. โ and the tool-server auto-dispatches based on the udid you pass (UUID-shape โ iOS, adb serial โ Android).
Before testing, resolve which device to test on. Call list-devices and follow <device_selection_rule>: prefer a running device on any platform;
Once a platform is chosen, the per-platform setup skill takes over:
| Platform | Setup skill | Find devices with |
|---|
| iOS | argent-ios-simulator-setup | list-devices โ boot-device with udid if none booted |
| Android | argent-android-emulator-setup | list-devices โ boot-device with avdName if none ready |
1. Workflow
All interactions go through argent MCP tools. Ensure the simulator/emulator is ready before starting.
- Baseline screenshot: Call
screenshot to see the current UI state.
- Find target: Before tapping, use a discovery tool to get element coordinates:
- React Native apps: use
debugger-component-tree โ it returns component names with (tap: x,y) coordinates. This is the preferred tool for RN apps on either platform. To use it, resolve the argent-react-native-app-workflow skill for setup; on Android you must also run adb -s <serial> reverse tcp:8081 tcp:8081 so Metro is reachable from the device.
- Standard app screens and in-app modals: use
describe. On iOS this returns the AX tree (falls back to native-devtools when AX is empty); on Android it returns the uiautomator tree in the same DescribeNode shape.
- Permission prompts / system modal overlays: try
describe first. Fall back to screenshot only if the overlay is not exposed reliably.
- Fallback: use
screenshot to estimate where the desired component is, then verify immediately after the action.
- Interact: Perform the action (
gesture-tap, gesture-swipe, keyboard, button, ...) โ you receive a screenshot automatically.
- Verify: Check the returned screenshot for expected results. If it shows a loading/transitional state, retake with
screenshot.
- Repeat for each step in the flow.
2. Template
Goal: Test [feature name]
Steps:
1. screenshot โ see current state (baseline)
2. [Navigate / tap / type to reach starting point] โ verify auto-screenshot
3. [Perform the action to test] โ verify auto-screenshot
4. Report: pass / fail with details
3. Examples
Login flow
1. screenshot โ see login screen
2. gesture-tap { x: 0.5, y: 0.4 } โ tap email field
3. paste { text: "user@example.com" }
4. gesture-tap { x: 0.5, y: 0.55 } โ tap password field
5. paste { text: "password123" }
6. gesture-tap { x: 0.5, y: 0.7 } โ tap Login button
7. screenshot โ verify home screen appeared
Scroll and navigation
1. screenshot โ see list at top
2. gesture-swipe { fromY: 0.7, toY: 0.3 } โ scroll down
3. gesture-tap item at visible position โ verify auto-screenshot
4. screenshot โ verify detail view opened
5. button { button: "back" }
6. screenshot โ verify returned to list
4. Recovery Pattern
- If screenshot shows loading/transition: wait 500ms, retake with
screenshot.
- If tap misses target: re-run discovery tool (
describe / debugger-component-tree), retry once with new coordinates.
- If a permission dialog or modal is visible: re-run
describe first. Stay in screenshot-driven navigation only when the overlay is not exposed reliably, then switch back to describe / debugger-component-tree as soon as it is dismissed.
- If tap fails twice at same coordinates: stop, re-discover, report if element not found.
- If a saved flow fails during
flow-execute replay (as opposed to live test steps above): follow argent-create-flow skill ยง10 for structured diagnosis and correction.
Tips
- Use
paste for text entry on iOS โ faster and more reliable than key-by-key keyboard. paste is iOS-only; on Android use keyboard instead.
- Use
gesture-custom for long-press context menus (800ms hold).
- Report clearly: state what you expected, what you saw, and the verdict.
- Coordinate estimation: center = 0.5, 0.5; top-third ~ 0.2; bottom-third ~ 0.8.
- Permission modals: try
describe first. Use screenshot only as fallback, tap one visible button at a time, and verify with the returned screenshot before continuing.
- Record for replay: If a tested flow is likely to be repeated, use the
argent-create-flow skill to record it as a .yaml script. This lets you replay the entire sequence later with a single flow-execute call instead of re-running each step manually.
Related Skills
| Skill | When to use |
|---|
argent-device-interact | Tool usage for tapping, swiping, typing (iOS + Android) |
argent-ios-simulator-setup | Booting and connecting an iOS simulator |
argent-android-emulator-setup | Booting and connecting an Android emulator |
argent-react-native-app-workflow | Starting the app, Metro, build issues |
argent-metro-debugger | Breakpoints, console logs, JS evaluation |
argent-create-flow | Record a test sequence as a replayable flow |