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
feat(cloud): device matrix via repeated --ios-config/--android-config (#1105)
One upload targets N device configs. Each --ios-config <device>:<version> /
--android-config <device>:<apiLevel>[:play] names exactly one validated cell —
no cross-product. A device matrix is single-platform; mixing platforms is
rejected before any upload.
- parseDeviceMatrix() (unit-tested): parsing, :play Google Play cell, mixed-
platform + malformed rejection.
- Each cell validated against the compatibility matrix up front; fails fast
naming the bad cell before the flow zip is uploaded.
- Serialized as the deviceMatrix field; single-device submissions stay byte-
identical. targetPlatform now derives from the matrix too.
- Pre-submit cost preview via POST /uploads/estimateMatrix (cells + est. cost +
per-column breakdown); tolerant of older APIs that lack the endpoint (404).
- --json tests[].device (structured {name, osVersion, googlePlay}) on both the
sync and async paths, so a flow run on two devices is disambiguated.
Note: generated schema.types.ts is intentionally not regenerated here (it lags
dev's swagger); regenerate from dev after the API lands. Runtime reads
config/simulator_name structurally.
Copy file name to clipboardExpand all lines: src/config/flags/device.flags.ts
+8Lines changed: 8 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -42,6 +42,14 @@ export const deviceFlags = {
42
42
type: 'string',
43
43
description: `[iOS only] iOS version to run your flow against (options: ${iosVersions})`,
44
44
},
45
+
'ios-config': {
46
+
type: 'string',
47
+
description: `[iOS only] Device-matrix cell as <device>:<version>, e.g. iphone-16:18. Repeatable — every flow runs once per cell (no cross-product). Cannot be combined with --android-config.`,
48
+
},
49
+
'android-config': {
50
+
type: 'string',
51
+
description: `[Android only] Device-matrix cell as <device>:<apiLevel> (append :play for Google Play), e.g. pixel-7:34 or pixel-7:34:play. Repeatable — every flow runs once per cell (no cross-product). Cannot be combined with --ios-config.`,
0 commit comments