3.0 KiB
Maestro Flows
This directory contains local mobile UI flows. Keep flows small enough that a failure screenshot proves the intended behavior, not just that the app launched.
New Workspace Android Flow
Use these files when debugging or extending workspace creation on Android:
test-workspace-create-android-crash.shruns the full regression harness.workspace-create-android-crash.yamlis the full Maestro flow used by the harness.record-workspace-create-android-focus.shrecords only the focused repro window after setup.workspace-create-android-ready-sidebar.yamlstages the app with the Android sidebar open and a prepared project visible.workspace-create-android-create-focused.yamlstarts from that staged sidebar and performs the actual workspace creation.
The reusable pieces live in flows/:
flows/android-dev-client.yamlhandles Expo dev launcher/dev menu screens.flows/connect-direct-if-welcome.yamlconnects to the local daemon only when the welcome screen is visible.flows/open-prepared-project-sidebar.yamlwaits for the home screen, opens the compact Android sidebar, and waits for the prepared project.flows/new-workspace-open-from-sidebar.yamltaps the project row's new-workspace action and waits for/new.flows/new-workspace-select-codex-gpt54.yamlselects a real provider/model.flows/new-workspace-submit-and-assert-created.yamltapsCreateand proves the app landed on the created workspace.
Compose new workspace scenarios out of these primitives instead of copying the
old full flow. The shell scripts render the top-level flows and every flows/*.yaml
file into the same temp directory, so nested runFlow: flows/... paths keep
working with ${PASEO_MAESTRO_*} placeholders.
The flow is intentionally strict. It must:
- Open a prepared project from the daemon.
- Tap the project row's new-workspace action.
- Select an actual provider/model before tapping
Create. - Tap
Create. - Assert the app lands on a workspace header and the draft composer.
- Assert
New workspace,Select a model, and the Android redbox text are not visible. - For the shell harness, grep logcat for
failed to insert viewandspecified child already has a parent.
Do not weaken this flow to only wait for message-input-root. That can pass on
the wrong route. The header assertion and the New workspace negative assertion
are what prove the redirect actually completed.
The scripts assume a development build with package id sh.paseo.debug, an
already-running local daemon on 127.0.0.1:6767, and a connected Android device
or emulator. They call adb reverse tcp:6767 tcp:6767; they do not restart the
daemon.
bash packages/app/maestro/test-workspace-create-android-crash.sh
bash packages/app/maestro/record-workspace-create-android-focus.sh
Optional environment:
PASEO_MAESTRO_APP_ID=sh.paseo.debug
PASEO_MAESTRO_DIRECT_ENDPOINT=127.0.0.1:6767
PASEO_MAESTRO_DAEMON_WS_URL=ws://127.0.0.1:6767/ws
PASEO_MAESTRO_PROJECT_PATH=/path/to/git/repo