You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds a strict replay export <file.ad> --format maestro [--out <path>] path that converts compatible .ad replay actions into Maestro YAML without starting the daemon.
Includes exporter coverage for app launch, taps/selectors, text input, keyboard, assertions, gestures, screenshots, env directives, and explicit failures for unsupported agent-only actions. Docs now describe the export subset and warnings.
Touched 10 files; scope stayed within replay/Maestro export, CLI help, tests, and docs.
Validation
Ran pnpm check:quick successfully.
Ran focused unit coverage with pnpm exec vitest run src/compat/maestro/__tests__/export-flow.test.ts src/__tests__/cli-client-commands.test.ts src/utils/__tests__/args.test.ts successfully.
Manually smoke-tested node --experimental-strip-types src/bin.ts replay export /private/tmp/ad-export-smoke.ad --format maestro and --out /private/tmp/ad-export-smoke.yaml; both produced the expected Maestro YAML.
src/compat/maestro/export-flow.ts maps both click/press --hold-ms <n> and longpress <target> <durationMs> to longPressOn without preserving or warning about the requested duration. That changes recorded replay behavior: the existing script writer can emit lines like longpress "label=\"Last message\"" 800, but agent-device replay export currently produces:
- longPressOn:
label: Last message
The explicit 800 is gone, so the exported Maestro flow uses Maestro's default long-press behavior instead of the recorded duration. If Maestro cannot represent duration here, the exporter should at least warn or reject rather than silently changing semantics; if it can represent it, please thread the duration through and add a regression test for both longpress ... <duration> and press/click --hold-ms.
Addressed in 0de157b. Maestro export now warns instead of silently dropping explicit long-press durations for both longpress <target> <durationMs> and click/press --hold-ms. Since this compat layer does not model a Maestro longPressOn duration field, the YAML remains longPressOn, but the CLI surfaces a warning with the requested duration.\n\nAdded regression coverage for recorded longpress, click --hold-ms, and press --hold-ms.\n\nValidation:\n- pnpm exec vitest run src/compat/maestro/__tests__/export-flow.test.ts src/compat/maestro/__tests__/points.test.ts src/__tests__/cli-client-commands.test.ts src/utils/__tests__/args.test.ts\n- pnpm format\n- pnpm check:quick\n- pnpm build\n- pnpm check:fallow --base origin/main\n- built CLI smoke for the reported longpress/hold-ms export case
Handled the optional nits in 278ff8d:\n\n- Plain replay now rejects extra input paths before daemon dispatch, so replay a.ad b.ad no longer gets accepted with the second path ignored.\n- Maestro export now warns when --count / --interval-ms are combined with doubleTapOn or longPressOn exports, instead of silently dropping those repeat/timing options.\n\nValidation:\n- pnpm exec vitest run src/compat/maestro/__tests__/export-flow.test.ts src/compat/maestro/__tests__/points.test.ts src/__tests__/cli-client-commands.test.ts src/utils/__tests__/args.test.ts\n- pnpm format\n- pnpm check:quick\n- pnpm build\n- pnpm check:fallow --base origin/main
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a strict
replay export <file.ad> --format maestro [--out <path>]path that converts compatible.adreplay actions into Maestro YAML without starting the daemon.Includes exporter coverage for app launch, taps/selectors, text input, keyboard, assertions, gestures, screenshots, env directives, and explicit failures for unsupported agent-only actions. Docs now describe the export subset and warnings.
Touched 10 files; scope stayed within replay/Maestro export, CLI help, tests, and docs.
Validation
Ran
pnpm check:quicksuccessfully.Ran focused unit coverage with
pnpm exec vitest run src/compat/maestro/__tests__/export-flow.test.ts src/__tests__/cli-client-commands.test.ts src/utils/__tests__/args.test.tssuccessfully.Manually smoke-tested
node --experimental-strip-types src/bin.ts replay export /private/tmp/ad-export-smoke.ad --format maestroand--out /private/tmp/ad-export-smoke.yaml; both produced the expected Maestro YAML.