Skip to content
Open
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
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@ It works with native iOS and Android apps, plus apps built with Expo, Flutter, a

- **Inspect** real app UI through structured accessibility snapshots, interactive refs like `@e3`, selectors, and React Native component trees.
- **Interact** by opening apps, tapping, typing, scrolling, performing gestures, waiting, asserting state, handling alerts, and closing sessions.
- **Capture evidence** with screenshots, videos, logs, traces, network traffic, performance samples, crash context, and React profiles.
- **Capture evidence** with screenshots, videos, logs, traces, network traffic, audio-level probes for browser and host-rendered simulator/emulator audio, performance samples, crash context, and React profiles.
- **Replay workflows** by recording `.ad` scripts for local runs, CI, repeatable e2e checks, and strict Maestro YAML export when a flow needs to run in Maestro.
- **Run across platforms** with iOS Simulator automation, Android Emulator automation, physical devices, tvOS, Android TV, macOS, Linux, and desktop app automation, so agents can see and feel the app they work on.

## Use Cases

- Verify mobile changes on real devices, simulators, and emulators before review or merge.
- Give AI coding agents a real app feedback loop while they implement features.
- Debug regressions with screenshots, logs, traces, network evidence, and crash context.
- Debug regressions with screenshots, logs, traces, network/audio evidence, and crash context.
- Profile performance issues with CPU/memory samples and React render profiles when needed.
- Turn exploratory app interactions into replayable e2e checks for CI.
- Use one agent workflow across native iOS, Android, Expo, Flutter, React Native, TV, and desktop apps.
Expand Down
4 changes: 4 additions & 0 deletions examples/test-app/app/(tabs)/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ export default function TabsLayout() {
<NativeTabs.Trigger.Icon md="fact_check" sf="doc.text.fill" />
<NativeTabs.Trigger.Label>Form</NativeTabs.Trigger.Label>
</NativeTabs.Trigger>
<NativeTabs.Trigger name="audio">
<NativeTabs.Trigger.Icon md="music_note" sf="waveform" />
<NativeTabs.Trigger.Label>Audio</NativeTabs.Trigger.Label>
</NativeTabs.Trigger>
<NativeTabs.Trigger name="settings">
<NativeTabs.Trigger.Icon md="settings" sf="gearshape.fill" />
<NativeTabs.Trigger.Label>Settings</NativeTabs.Trigger.Label>
Expand Down
10 changes: 10 additions & 0 deletions examples/test-app/app/(tabs)/audio.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { AppFrame } from '../../src/components';
import { AudioScreen } from '../../src/screens/AudioScreen';

export default function AudioRoute() {
return (
<AppFrame>
<AudioScreen />
</AppFrame>
);
}
5 changes: 4 additions & 1 deletion examples/test-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,19 @@
"@expo/dom-webview": "~56.0.5",
"@expo/metro-runtime": "~56.0.15",
"expo": "~56.0.12",
"expo-audio": "~56.0.12",
"expo-constants": "56.0.18",
"expo-dev-client": "~56.0.20",
"expo-linking": "56.0.14",
"expo-router": "~56.2.11",
"expo-status-bar": "~56.0.4",
"react": "19.2.3",
"react-dom": "19.2.3",
"react-native": "0.85.3",
"react-native-gesture-handler": "^2.31.2",
"react-native-safe-area-context": "~5.7.0",
"react-native-screens": "~4.25.2"
"react-native-screens": "~4.25.2",
"react-native-web": "^0.21.2"
},
"devDependencies": {
"@types/react": "~19.2.2",
Expand Down
346 changes: 271 additions & 75 deletions examples/test-app/pnpm-lock.yaml

Large diffs are not rendered by default.

Loading
Loading