Skip to content

cli: drop-in flags, Allure reports and Maestro Cloud aliases (TB-374) - #34

Merged
jochen-testingbot merged 1 commit into
mainfrom
feat/TB-374-dropin-flags
Sep 2, 2026
Merged

cli: drop-in flags, Allure reports and Maestro Cloud aliases (TB-374)#34
jochen-testingbot merged 1 commit into
mainfrom
feat/TB-374-dropin-flags

Conversation

@jochen-testingbot

Copy link
Copy Markdown
Contributor

Summary

Closes the remaining flag gaps that block a one-line migration from dcd cloud or maestro cloud.

  • --branch, --pr-url, -m/--metadata KEY=VALUE (repeatable) are sent in the run metadata the server already stores verbatim. The dashboard renders branch today; pullRequestUrl and custom are stored and available for a follow-up UI tweak.
  • --exclude-flows <paths> (comma-separated, repeatable) drops files, directories or globs from the bundle before dependency discovery. An excluded flow still referenced via runFlow ships as a subflow but never runs standalone. Excluding everything fails clearly.
  • --report allure for maestro and artifacts: the JUnit XML is converted client-side into allure-results/<uuid>-result.json (one per flow with ordered steps, timings, status, failure message/trace, device labels). No XML parser dependency; the format is Maestro's own and stable. Results from several runs accumulate in the same directory.
  • Maestro Cloud aliases, hidden from --help: --app-file, --flows a,b, --apiKey, --device-model iPhone-17-ProiPhone 17 Pro, --device-os iOS-18-2 / android-34 (API level → OS version table), --format JUNIT|HTML|NOOP, --output <file> (its directory becomes --report-output-dir, with a warning), --test-suite-name. Canonical flags win when both are given.
  • Repeatable options now allocate a fresh array per parse; the shared default [] was leaking values across invocations (the same trap --other-app already works around).

Jira: TB-374 (epic TB-370).

Test plan

  • npm test — 716 passed (21 new: Allure converter, CLI flag wiring and aliases, flow exclusion, Allure via fetchReports)
  • npm run lint, npm run build
  • Dry run with the full maestro cloud spelling: --app-file … --flows … --device-model iPhone-17-Pro --device-os iOS-18-2 --format JUNIT --output out/report.xml --test-suite-name nightly --branch main --pr-url … -m team=mobile → capabilities iPhone 17 Pro / iOS / 18.2 / name nightly, metadata with branch, pullRequestUrl and custom
  • Live: artifacts --id 91595 --report allure --report-output-dir … → one result JSON with 15 steps, passed
  • Dashboard: render pullRequestUrl and custom metadata (web repo follow-up)

…llure reports and Maestro Cloud aliases (TB-374)

Closes the remaining gaps that block a one-line migration from
devicecloud.dev or maestro cloud:

- --branch, --pr-url and repeatable -m/--metadata KEY=VALUE ride on the
  run metadata the server already stores verbatim (the dashboard renders
  branch today).
- --exclude-flows drops files, directories or globs from the bundle
  before dependency discovery, so an excluded flow that is still
  runFlow'd elsewhere ships as a subflow but never runs on its own.
- --report allure converts the JUnit XML into allure-results JSON
  client-side (one result per flow with steps, timings, failure details)
  for both maestro and artifacts.
- Hidden aliases accept the maestro cloud spelling: --app-file, --flows,
  --apiKey, --device-model, --device-os (iOS-18-2 / android-34 with an
  API-level table), --format, --output, --test-suite-name. Canonical
  flags win.

Repeatable options allocate a fresh array per parse instead of a shared
default, which is what let values leak across invocations.
@jochen-testingbot
jochen-testingbot merged commit dd410ef into main Sep 2, 2026
9 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant