cli: upload command and --app-binary-id app reuse (TB-373) - #33
Merged
Conversation
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
changed the base branch from
feat/TB-372-status-list-artifacts
to
main
September 2, 2026 09:05
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
testingbot upload <appFile>stores an app once (checksum-deduplicated,--ignore-checksum-checkto force) and prints a Project ID plus the exactmaestro --app-binary-idcommand to reuse it.--jsonreturns{ provider, appId, file, url }.testingbot maestro --app-binary-id <projectId> ./flowsskips 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--platformis given. Passing both an app file and--app-binary-idis rejected; dry-run shows the reuse endpoint instead of an upload.maestrorun now logsApp 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.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 buildupload sample.ipa(dedupe path) andupload sample.ipa --json→ Project IDs 91625 / 91622maestro --app-binary-id 91595 flow.yaml --dry-runshowsPOST …/app/91595/reusemaestro --app-binary-id <id> flow.yamlend to end once the API change is deployed