flow.yaml becomes a *.test.yaml; tapOn becomes tap; runFlow becomes a
module call. The main differences: Momentic adds natural-language targets and
AI assertions, runs through its own runner instead of a Maestro CLI device
session, and hosts emulators and simulators for you.
Before and after
A representative Maestro flow:checkout.yaml
checkout.test.yaml
EMAIL comes from environments[].envVariables in
momentic-mobile.config.yaml or the shell, not a flow-level env: block.
Command mapping
What does not map
- Maestro Studio / element inspection. Momentic’s equivalent is the local
editor’s element picker plus
debugState; there is no separate inspector app. - Jest/JS scripting inside flows beyond
runScript.javascriptcovers data and API work; it is not a general inline scripting runtime for UI logic. maestro test --devicephysical devices. Remote execution is emulators and simulators only; real devices are not supported.- Maestro’s tolerance and optional-element flags. Momentic resolves targets
with AI against the live view hierarchy instead of fuzzy matching rules. If
you depended on
optional: true, use anif:step around a check. - Cloud Maestro (
maestro cloud). Scheduling and CI live in your pipeline or Momentic’s scheduled runs, not a per-flow upload.
Incremental strategy
- Install
momentic-mobileand keep Maestro installed: nothing conflicts. - Port one flow end to end, including its subflows as modules. Run it on a local emulator, then on a Momentic-hosted emulator by selecting a region.
- Move
envvalues intoenvironmentsinmomentic-mobile.config.yamlso the same test file runs against dev, staging, and prod. - Port flows in order of pain: the flows that break most on locator changes gain the most from natural-language targets and auto-heal.
- Delete the
.maestrodirectory when the Momentic suite covers the same critical paths and has passed for a few consecutive runs.