Files
honeyDueKMP/docs/maestro.md
Trey T 214908cd5c Maestro: 10 golden-path flows for critical user journeys
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>
2026-04-18 15:00:21 -05:00

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 studio opens an interactive inspector that lets you record taps/typing and see every testTag the app exposes. Easiest way to build new flows.
  • maestro test --debug-output /tmp/maestro emits 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) and AccessibilityIdentifiers.swift (iOS) — these are the single source of truth for every id: selector.