Skip to content

cli: upload command and --app-binary-id app reuse (TB-373) - #33

Merged
jochen-testingbot merged 1 commit into
mainfrom
feat/TB-373-upload-app-binary-id
Sep 2, 2026
Merged

cli: upload command and --app-binary-id app reuse (TB-373)#33
jochen-testingbot merged 1 commit into
mainfrom
feat/TB-373-upload-app-binary-id

Conversation

@jochen-testingbot

Copy link
Copy Markdown
Contributor

Stacked on #32 (TB-372) → #31 (TB-371). Retarget to main as the stack merges.
Needs the API change first: POST /app-automate/maestro/app/:id/reuse from the web repo branch feat/TB-373-maestro-reuse-app. Without it --app-binary-id fails with a 404 at runtime; upload works against production today.

Summary

  • testingbot upload <appFile> stores an app once (checksum-deduplicated, --ignore-checksum-check to force) and prints a Project ID plus the exact maestro --app-binary-id command to reuse it. --json returns { provider, appId, file, url }.
  • testingbot maestro --app-binary-id <projectId> ./flows skips the app upload. The CLI calls the new reuse endpoint, which clones a fresh project around the stored binary (each run keeps its own project/results), and adopts the platform the server reports unless --platform is given. Passing both an app file and --app-binary-id is rejected; dry-run shows the reuse endpoint instead of an upload.
  • Every maestro run now logs App ready. Project ID: N (reuse this app later with --app-binary-id N) after the upload, so any earlier run's ID is a valid handle.
  • README: "Upload once, run many times" section and the new flag.

Not in scope: tb:// URLs for the main app. The run endpoint takes the app from the project, not from a capability, so there is nothing to pass through.

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

Test plan

  • npm test — 695 passed (15 new)
  • npm run lint, npm run build
  • Real account: upload sample.ipa (dedupe path) and upload sample.ipa --json → Project IDs 91625 / 91622
  • maestro --app-binary-id 91595 flow.yaml --dry-run shows POST …/app/91595/reuse
  • maestro --app-binary-id <id> flow.yaml end to end once the API change is deployed

testingbot upload <app> stores an app once (checksum-deduplicated) and
prints a Project ID. testingbot maestro --app-binary-id <id> ./flows then
skips the upload: the CLI calls POST /app/:id/reuse, which clones a fresh
project around the stored binary, and adopts the platform the server
reports unless --platform is given. Every maestro run now prints its
Project ID after the upload so any earlier run can be reused the same way.

Requires the matching API change in the web repo (feat/TB-373-maestro-reuse-app).
@jochen-testingbot
jochen-testingbot changed the base branch from feat/TB-372-status-list-artifacts to main September 2, 2026 09:05
@jochen-testingbot
jochen-testingbot merged commit fe74459 into main Sep 2, 2026
9 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