Maestro Driver
SootSim runs Maestro-compatible YAML flows through the sootsim maestro CLI,
a drop-in for the real maestro CLI. Point it at your existing .maestro/
folder and it runs the flows against the browser simulator, no Mac or device
needed.
terminal
Useful flags: --env KEY=VALUE (repeatable), --headed, --record,
--preview / --preview-open (upload a shareable recording), --slow <ms>.
The --format / --output / --device flags are accepted and ignored for
maestro command-line compatibility.
There is no programmatic driver class; the CLI is the surface. Run
sootsim maestro --list-compat for the authoritative, always-current matrix;
the summary below is a guide.
Supported steps
Interaction and input:
Navigation and scrolling:
Assertions and waiting:
Control flow, scripting, and capture:
Conditionals, lifecycle hooks, workspace mode, and ${...} JS-expression
interpolation are supported: when: { visible / notVisible / platform / true },
optional: true, label:, onFlowStart / onFlowComplete, and a
config.yaml workspace with flows: globs plus includeTags / excludeTags.
Partial support
clearKeychain: warn-only; SootSim has no keychain surface.when.platform: SootSim always reports iOS.openLink: dispatched into the app through Linking emulation (deep links work); there is no OS-level Safari fallback.launchApp.arguments: ignored; there is no native process to pass them to.env: seeded from your full shell environment, so${SOOTSIM_*}and the like resolve. A bare${NAME}that is undefined fails the step loudly rather than substituting"undefined".
Not implemented
These throw an “unsupported” error: travel, setLocation, setAirplaneMode,
killApp, faker, addMedia, startRecording / stopRecording (use the
--record flag instead), and repeat.while (only repeat.times is supported).
