Automated functional tests for the Omi Flutter mobile app using Maestro.
-
Install Maestro CLI:
# macOS brew install maestro # Linux curl -Ls "https://get.maestro.mobile.dev" | bash
-
Install the Omi app on your device/emulator (dev flavor):
cd app && flutter build apk --flavor dev adb install build/app/outputs/flutter-apk/app-dev-release.apk
-
For device-required tests: Power on Omi hardware and keep it within BLE range.
# Run core tests (simulator-safe)
bash app/.maestro/scripts/run_all.sh --tags core
# Run all tests (including device-required)
bash app/.maestro/scripts/run_all.sh --tags all
# Target a specific device
bash app/.maestro/scripts/run_all.sh --device-id emulator-5554 --tags core
# Custom output directory
bash app/.maestro/scripts/run_all.sh --output ./my-reports --tags core| # | Flow | Tags | Description |
|---|---|---|---|
| 01 | Login | core, auth |
Sign in with Google through consent flow |
| 02 | Onboarding | core, onboarding |
First-time user setup: name, permissions, device skip |
| 03 | Conversations | core, conversations |
List, detail, tabs (Summary/Transcript/Action Items), folder filter |
| 04 | Memories | core, memories |
View, create, edit, delete memories |
| 05 | Chat | core, chat |
Send message, receive AI response |
| 06 | Apps/Plugins | core, apps |
Browse marketplace, view app detail |
| 07 | Settings | core, settings |
Navigate settings pages |
| 08 | Device Connection | device_required, connection |
BLE scan and pair Omi hardware |
| 09 | Recording | device_required, recording |
Start recording, verify transcription |
| 10 | Logout | core, auth |
Sign out and verify auth screen |
core— Runs on simulator/emulator, no physical Omi device neededdevice_required— Requires physical Omi hardware nearbyauth— Authentication flows (login/logout)conversations— Conversation CRUD operationsmemories— Memory managementchat— Chat interactionsapps— App/plugin marketplacesettings— Settings navigationconnection— Device BLE pairingrecording— Audio capture and transcription
After a run, find the report at .maestro/reports/report.md with:
- Summary table (total/passed/failed/skipped)
- Per-flow duration and status
- Console output for debugging failures
- Screenshots in each flow's output directory
# 1. Turn on Omi device, keep near phone
# 2. Connect phone via USB, verify: adb devices
# 3. Run the full suite:
bash app/.maestro/scripts/run_all.sh --tags all
# 4. After ~1 hour, check the report:
cat app/.maestro/reports/report.md- Create
app/.maestro/flows/NN_flow_name.yaml - Add appropriate
tags:section - Follow existing flow patterns for consistency
- Run
bash app/.maestro/scripts/run_all.sh --tags your_tagto test