Cross-platform YAML flows (iOS + Android share the AccessibilityIds test-tag namespace). Covers login, register, residence/task CRUD, completion, join, document upload, theme, deeplink, widget. Run: maestro test .maestro/flows/ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.3 KiB
2.3 KiB
Maestro UI Flows
This directory's sibling .maestro/ holds cross-platform UI tests driven by
Maestro. The same YAML files run on both
Android and iOS because every selector uses an id: that resolves to an
AccessibilityIds test tag (Kotlin) or AccessibilityIdentifiers test tag
(Swift) — the two namespaces are kept in verbatim parity.
Install
curl -Ls "https://get.maestro.mobile.dev" | bash
Verify:
maestro --version
Run the suite
With an Android emulator running (API 34+) or an iOS simulator booted and the HoneyDue debug build installed:
# All flows (reads .maestro/config.yaml)
maestro test .maestro/flows/
# Single flow
maestro test .maestro/flows/01-login.yaml
Override environment variables (see 09-notification-deeplink.yaml,
10-widget-complete.yaml):
maestro test -e TASK_ID=123e4567-e89b-12d3-a456-426614174000 \
.maestro/flows/09-notification-deeplink.yaml
Available flows
| # | File | What it exercises |
|---|---|---|
| 01 | 01-login.yaml |
Email+password sign-in, land on tabs |
| 02 | 02-register.yaml |
New-user registration → verification stub |
| 03 | 03-create-residence.yaml |
Add a residence end-to-end |
| 04 | 04-create-task.yaml |
Add a task end-to-end |
| 05 | 05-complete-task.yaml |
Open task → complete → submit |
| 06 | 06-join-residence.yaml |
Join existing residence by share code |
| 07 | 07-upload-document.yaml |
Add a document |
| 08 | 08-theme-switch.yaml |
Profile → theme picker → Ocean |
| 09 | 09-notification-deeplink.yaml |
honeydue://task/<id> cold-launch |
| 10 | 10-widget-complete.yaml |
Android widget complete-intent (no-op on iOS) |
Tips
maestro studioopens an interactive inspector that lets you record taps/typing and see everytestTagthe app exposes. Easiest way to build new flows.maestro test --debug-output /tmp/maestroemits screenshots + logs for each step — check there first when CI fails.- Pre-seed a test user and fixture data via the API before running the
suite; the flows assume
testuser@example.com / TestPassword123!exists. - Keep new flows in sync with
AccessibilityIds.kt(Kotlin) andAccessibilityIdentifiers.swift(iOS) — these are the single source of truth for everyid:selector.