Maestro Studio makes writing UI tests easier. You can inspect a live screen, select a control, and insert the corresponding command into a YAML flow. But when a tester has already completed the journey, that workflow creates a second job: get the app back into the right state, perform the journey again, and build the test one step at a time.
Maestro’s Studio guide illustrates the process. To create a contact test, you select each field and button, run and insert taps, add text commands, and then run the completed flow. Studio helps identify selectors and edit commands. The test author still has to reconstruct the journey.
That is the problem Ansight session replays solve. If Ansight captured the original session, you can use the journey that already happened.
Select the useful moment, then extract
Ansight keeps screens, touches, and visual-tree snapshots aligned on a session replay timeline. Find the part of the recording you want to repeat, select that interval, choose Extract test or task, then select Maestro flow and Generate draft in the local player.
You can also extract it from the CLI:
ansight task extract <session-id> \
--start 12.5 --end 24.8 \
--format maestro \
--workspace . \
--title "Update profile"
Ansight drafts the Maestro flow from the actions in the replay. Where the capture provides a suitable automation ID or text label, it uses that as the selector. It can turn recorded drags into swipes and observed input changes into text-entry commands. The default output goes into .maestro/<suggested-name>.yaml. The extraction guide covers both the player and CLI workflows.
This is much simpler when the recording already exists. You do not need to reenact the journey just to discover its steps. You start with the steps and selectors Ansight could recover from the session, then spend your time on the parts that need judgment.
Turn the draft into a reliable test
Extraction gives you a draft, not a finished test. Ansight marks uncertain steps with REVIEW: comments. A tap may fall back to a screen coordinate if the capture has no stable selector. The generated flow also needs a known starting state and an assertion for the outcome you care about.
For example, after reviewing a profile-editing draft, you might end up with:
appId: "com.example.app"
---
- launchApp
- assertVisible: "Profile"
- tapOn:
id: "^display-name-field$"
- eraseText: 100
- inputText: "Ada Example"
- tapOn:
id: "^save-profile$"
- assertVisible: "Profile updated"
The final assertion makes this more than a replay of taps: it checks that the app showed the expected result. From there, check the syntax and run the flow on a connected device:
maestro check-syntax .maestro/update-profile.yaml
maestro test .maestro/update-profile.yaml
Maestro Studio is still handy for inspecting a stubborn selector or debugging a run. But when the journey is already in an Ansight replay, extracting the first draft is a much shorter route to a test.
Want to skip the YAML altogether? Try Ansight’s agentic testing framework. Once your app is connected, creating a test is simple: describe the journey in plain English, say what success looks like, and let the agent drive the app and capture the evidence. Turn the steps you repeat into automated Tasks, and those steps run as code without spending model tokens. That makes each run more efficient and can cost less than screenshot-after-every-tap Computer Use. Your YAML can take the afternoon off. 😉