cli: --device-matrix to run flows across several devices in one go (TB-375) - #35
Merged
Merged
Conversation
--device-matrix "<device>[:<version>][:real]" (comma-separated or repeatable) submits one capability per cell in a single run request, so one project fans out into one run per device with its own results, live table rows and dashboard link. No cross-product: each cell is exactly one device. --real-device (or an .ipa app) applies to every cell; --device and --deviceVersion are rejected alongside a matrix. The CLI prints devices × flows before submitting. Also: status --wait no longer installs the cancel-on-interrupt handler. It watches a project it did not start, so Ctrl-C now detaches instead of stopping the runs (a killed watcher cancelled a live matrix run during verification). Pairs with the web change that validates all capabilities before creating any run, so an invalid cell never yields a partial matrix.
jochen-testingbot
changed the base branch from
feat/TB-374-dropin-flags
to
main
September 2, 2026 12:33
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
--device-matrix "<device>[:<version>][:real]", comma-separated or repeatable. Each cell is exactly one device (no cross-product, since not every device exists in every OS version). All cells are sent as onecapabilitiesarray, so one project fans out into one run per device with its own results, live table rows, dashboard link,--jsondeviceblock and per-device--retry.--real-device(or an.ipaapp, which implies it) applies to every cell;--device/--deviceVersionalongside a matrix are rejected, as are duplicate cells.Device matrix: N devices × M flows = K flow runsand the cell list.status --waitno longer cancels runs on Ctrl-C. It watches a project it did not start; the foregroundmaestrocommand keeps its cancel-on-interrupt behaviour. Found during verification when a killed watcher cancelled one cell of a live matrix.Jira: TB-375 (epic TB-370).
Test plan
npm test— 726 passed (10 new: cell parsing, capability list, validation, submit payload + summary, server rejection, real-device propagation, watcher signal handling)npm run lint,npm run build--device-matrix "iPhone 17 Pro:26.5,iPhone XR:18.7"shows both capabilities withrealDevicefrom the.ipaiPhone XR:18.7and*→ two runs (iPhone XR, iPhone 13 18.5) under one project;statuslists both with per-device verdicts and exits 2 when one is not green