Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions advanced/visual-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@ includedPaths:
| The same with `--google-play` | `pixel-7-api-34-play` |
| `--android-device generic-tablet --android-api-level 36` | `13-5in-freeform-api-36` |
| `--ios-device iphone-16 --ios-version 18` | `iphone-16-ios-18` |
| `--ios-device ipad-pro-6th-gen --ios-version 26` | `ipad-pro-12-9-inch-6th-generation-ios-26` |
| `--ios-device iphone-17 --ios-version 26` | `iphone-17-ios-26` |

iPads use their full model name and the generic tablet its emulator profile, so the value isn't always your device flag. Print it once before you name your folders: add `- evalScript: ${console.log('DCD_DEVICE=' + DCD_DEVICE)}` to a flow and look for the `JsConsole` line in the run's Maestro log.
iPads use their full model name (`--ios-device ipad-pro-m5-13 --ios-version 26` is `ipad-pro-13-inch-m5-ios-26`) and the generic tablet its emulator profile, so the value isn't always your device flag. Print it once before you name your folders: add `- evalScript: ${console.log('DCD_DEVICE=' + DCD_DEVICE)}` to a flow and look for the `JsConsole` line in the run's Maestro log.

`DCD_PLATFORM` (`android` or `ios`) is available too. Passing either yourself with `--env` overrides the built-in value. See [Built-in Variables](../configuration/environment-variables.md#built-in-variables).

Expand Down
2 changes: 1 addition & 1 deletion ci-cd/bitbucket-pipelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Find your API key at [console.devicecloud.dev/settings](https://console.devicecl
API_KEY: $DEVICE_CLOUD_API_KEY
APP_FILE: 'build/MyApp.app.zip'
WORKSPACE: '.maestro'
IOS_DEVICE: 'iphone-16-pro'
IOS_DEVICE: 'iphone-16'
IOS_VERSION: '18'
```

Expand Down
4 changes: 2 additions & 2 deletions ci-cd/eas-workflows.md
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,8 @@ Anything you pass on the command line after `npx @devicecloud.dev/eas-workflow@v
|------|-------------|
| `--android-device <model>` | `pixel-6`, `pixel-7` (deprecated), `pixel-8`, `pixel-10`, `pixel-10-pro`, `pixel-10-pro-xl`, `pixel-10-pro-fold`, `pixel-11`, `generic-tablet`. Default `pixel-10`. |
| `--android-api-level <n>` | `32` – `37`. Default `36`. |
| `--ios-device <model>` | `iphone-14`, `iphone-15`, `iphone-16`, `iphone-16-plus`, `iphone-16-pro`, `iphone-16-pro-max`, `iphone-17`, `iphone-air`, `iphone-18-pro`, `iphone-18-pro-max`, `iphone-duo`, `ipad-pro-6th-gen`, `ipad-pro-m5-11`, `ipad-pro-m5-13`. |
| `--ios-version <n>` | `17`, `18`, `26`, `27`. Default `17` (`26` from 2 November 2026). |
| `--ios-device <model>` | `iphone-14`, `iphone-16`, `iphone-16-pro` (deprecated), `iphone-16-pro-max` (deprecated), `iphone-17`, `iphone-air`, `iphone-18-pro`, `iphone-18-pro-max`, `iphone-duo`, `ipad-pro-m5-11`, `ipad-pro-m5-13`. |
| `--ios-version <n>` | `17` (deprecated), `18`, `26`, `27`. Default `26`. |
| `--device-locale <code>` | E.g. `de_DE`. See [Device Locale](../configuration/device-locale.md). |
| `--orientation <deg>` | Android only. `0` or `90`. |
| `--google-play` | Android only. Run on Google Play devices. |
Expand Down
4 changes: 2 additions & 2 deletions ci-cd/github-actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ If you build with EAS, download the build artifact in an earlier step and pass t
|-------|----------|---------|-------------|
| `android-device` | No | `pixel-10` | Android device model. Options: `pixel-6`, `pixel-7` (deprecated), `pixel-8`, `pixel-10`, `pixel-10-pro`, `pixel-10-pro-xl`, `pixel-10-pro-fold`, `pixel-11`, `generic-tablet`. |
| `android-api-level` | No | `36` | Android API level. Options: `32`, `33`, `34`, `35`, `36`, `37`. |
| `ios-device` | No | — | iOS device model. Options: `iphone-14`, `iphone-15`, `iphone-16`, `iphone-16-plus`, `iphone-16-pro`, `iphone-16-pro-max`, `iphone-17`, `iphone-air`, `iphone-18-pro`, `iphone-18-pro-max`, `iphone-duo`, `ipad-pro-6th-gen`, `ipad-pro-m5-11`, `ipad-pro-m5-13`. |
| `ios-version` | No | `17` | Major iOS version. Options: `17`, `18`, `26`, `27`. Default becomes `26` from 2 November 2026. |
| `ios-device` | No | — | iOS device model. Options: `iphone-14`, `iphone-16`, `iphone-16-pro` (deprecated), `iphone-16-pro-max` (deprecated), `iphone-17`, `iphone-air`, `iphone-18-pro`, `iphone-18-pro-max`, `iphone-duo`, `ipad-pro-m5-11`, `ipad-pro-m5-13`. |
| `ios-version` | No | `26` | Major iOS version. Options: `17` (deprecated), `18`, `26`, `27`. |
| `device-locale` | No | — | Device locale in `ISO-639-1_ISO-3166-1` format (e.g. `de_DE`). See [Device Locale](../configuration/device-locale.md). |
| `orientation` | No | `0` | Android only. Device orientation in degrees. Options: `0`, `90`. |
| `google-play` | No | `false` | Android only. Run flows against Google Play devices. |
Expand Down
8 changes: 4 additions & 4 deletions configuration/device-matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ Pass `--ios-device-matrix <device>:<version>` (or `--android-device-matrix <devi

```bash
dcd cloud --app-binary-id <id> ./flows \
--ios-device-matrix iphone-16-pro:18 \
--ios-device-matrix iphone-16-pro:26 \
--ios-device-matrix iphone-16-pro-max:26
--ios-device-matrix iphone-16:18 \
--ios-device-matrix iphone-17:26 \
--ios-device-matrix iphone-18-pro:27
# one upload, 3 devices x N flows
```

Expand All @@ -41,7 +41,7 @@ cross-product: the flags are not combined with each other, or with `--ios-device

```bash
# runs exactly these two, and nothing else
dcd cloud [...] --ios-device-matrix iphone-15:17 --ios-device-matrix iphone-16-plus:26
dcd cloud [...] --ios-device-matrix iphone-14:18 --ios-device-matrix iphone-air:26
```

This is deliberate as not every device supports every OS. Naming each device explicitly means you always get
Expand Down
2 changes: 1 addition & 1 deletion configuration/environment-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ DeviceCloud also sets these variables on every run, so a flow can adapt to the d

| Variable | Value |
| --- | --- |
| `DCD_DEVICE` | The device and OS version, lowercased and hyphenated — for example `pixel-8-api-34`, `pixel-8-api-34-play` on a Google Play device, `iphone-16-ios-18` or `ipad-pro-12-9-inch-6th-generation-ios-26`. |
| `DCD_DEVICE` | The device and OS version, lowercased and hyphenated — for example `pixel-8-api-34`, `pixel-8-api-34-play` on a Google Play device, `iphone-16-ios-18` or `iphone-17-ios-26`. |
| `DCD_PLATFORM` | `android` or `ios`. |

Passing your own value with `-e` overrides the built-in one. [Visual Testing](../advanced/visual-testing.md#per-device-baselines) uses `DCD_DEVICE` to pick a baseline per device.
Expand Down
4 changes: 2 additions & 2 deletions configuration/per-flow-devices.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Set the device in the flow's `env:` block. You can find a list of supported devi
# checkout-tablet.yaml
appId: my.app
env:
DEVICECLOUD_OVERRIDE_IOS_DEVICE: ipad-pro-6th-gen
DEVICECLOUD_OVERRIDE_IOS_DEVICE: ipad-pro-m5-13
DEVICECLOUD_OVERRIDE_IOS_VERSION: "26"
---
# test steps
Expand All @@ -45,7 +45,7 @@ keeps the upload's iOS version, and vice versa.

1. `DEVICECLOUD_OVERRIDE_*` in the flow's YAML (per test)
2. The upload-wide `--ios-device` / `--ios-version` / `--android-device` / `--android-api-level` flags
3. Default: iPhone 14 on iOS 17, or Pixel 10 on API level 36 (see [Default Devices](../getting-started/devices-configuration.md#default-devices))
3. Default: iPhone 16 on iOS 26, or Pixel 10 on API level 36 (see [Default Devices](../getting-started/devices-configuration.md#default-devices))

## Billing

Expand Down
69 changes: 33 additions & 36 deletions getting-started/devices-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@ If you don't specify a device or OS version, then you will be allocated the defa

**Android:** Pixel 10 (API level 36)

**iOS:** iPhone 14 (iOS 17)&#x20;

::: warning
On the 2nd November the default is moving to iPhone 16 on iOS 26.
:::
**iOS:** iPhone 16 (iOS 26)

### Android API Levels

Expand Down Expand Up @@ -69,58 +65,59 @@ Pixel 6 Pro, Pixel 7 Pro and Generic Tablet on API level 33 were removed on 26 O

### iOS Versions

DeviceCloud will default to iOS 17 unless you pass the `--ios-version` flag. Pair it with an `--ios-device` that runs that version (see [iOS Devices](devices-configuration.md#ios-devices)), as the default iPhone 14 only runs iOS 17 and 18:
DeviceCloud will default to iOS 26 unless you pass the `--ios-version` flag. The default iPhone 16 runs iOS 18, 26 and 27, so a run that sets only the version runs on iPhone 16. To run that version on another device, pass an `--ios-device` that runs it as well (see [iOS Devices](devices-configuration.md#ios-devices)):

```bash
dcd cloud app.zip test.yaml --ios-device iphone-16 --ios-version 27
dcd cloud app.zip test.yaml --ios-device iphone-17 --ios-version 27
```

::: warning
The default version of iOS is changing to 26 on the 2nd November.
:::

| id | Version |
| ---- | ----------------- |
| id | Version |
| ---- | ----------------------------- |
| `27` | 27.0 (27.1 on the iPhone Duo) |
| `26` | 26.5 |
| `18` | 18.6 |
| `17` | 17.5 (deprecated) |
| `26` | 26.5 |
| `18` | 18.6 |
| `17` | 17.5 (deprecated) |

iOS 17 runs only on iPhone 14, so pass `--ios-device iphone-14` with `--ios-version 17`.

::: warning
iOS 17 is deprecated and we're targeting removal on the 2nd November. This date is subject to change based on usage.
iOS 17 is deprecated and we're targeting removal on the 9th November. This date is subject to change based on usage.
:::

### iOS Devices

DeviceCloud will default to iPhone 14 unless you pass the `--ios-device` flag. Pass `--ios-version` with it, choosing one of the versions in the device's row:
DeviceCloud will default to iPhone 16 unless you pass the `--ios-device` flag. Pass `--ios-version` with it, choosing one of the versions in the device's row:

```bash
dcd cloud app.zip test.yaml --ios-device ipad-pro-m5-13 --ios-version 26
```

| id | Name | Dimensions | Valid iOS versions |
| ------------------- | -------------------------------------- | ----------- | ------------------ |
| `iphone-duo` | iPhone Duo (starts folded) | 1398 x 2034 | 27 |
| `iphone-18-pro-max` | iPhone 18 Pro Max | 1320 x 2868 | 27 |
| `iphone-18-pro` | iPhone 18 Pro | 1206 x 2622 | 27 |
| `iphone-air` | iPhone Air | 1260 x 2736 | 26, 27 |
| `iphone-17` | iPhone 17 | 1206 x 2622 | 26, 27 |
| `iphone-16-pro-max` | iPhone 16 Pro Max (deprecated) | 1320 x 2868 | 18, 26, 27 |
| `iphone-16-pro` | iPhone 16 Pro (deprecated) | 1206 x 2622 | 18, 26, 27 |
| `iphone-16-plus` | iPhone 16 Plus (deprecated) | 1290 x 2796 | 26, 27 |
| `iphone-16` | iPhone 16 | 1179 x 2556 | 18, 26, 27 |
| `iphone-15` | iPhone 15 (deprecated) | 1179 x 2556 | 17 |
| `iphone-14` | iPhone 14 | 1170 x 2532 | 17, 18 |
| `ipad-pro-m5-13` | iPad Pro 13-inch (M5) | 2064 x 2752 | 26, 27 |
| `ipad-pro-m5-11` | iPad Pro 11-inch (M5) | 1668 x 2420 | 26, 27 |
| `ipad-pro-6th-gen` | iPad Pro (6th Generation) (deprecated) | 2048 x 2732 | 18, 26, 27 |
::: info
A run that sets only the device runs on iOS 26, so a device that doesn't offer iOS 26 needs `--ios-version` as well, for example `--ios-device iphone-14` with `--ios-version 17` or `18`, or `--ios-device iphone-18-pro --ios-version 27`. Without it, the run is rejected.
:::

| id | Name | Dimensions | Valid iOS versions |
| ------------------- | ------------------------------ | ----------- | ------------------ |
| `iphone-duo` | iPhone Duo (starts folded) | 1398 x 2034 | 27 |
| `iphone-18-pro-max` | iPhone 18 Pro Max | 1320 x 2868 | 27 |
| `iphone-18-pro` | iPhone 18 Pro | 1206 x 2622 | 27 |
| `iphone-air` | iPhone Air | 1260 x 2736 | 26, 27 |
| `iphone-17` | iPhone 17 | 1206 x 2622 | 26, 27 |
| `iphone-16-pro-max` | iPhone 16 Pro Max (deprecated) | 1320 x 2868 | 18, 26, 27 |
| `iphone-16-pro` | iPhone 16 Pro (deprecated) | 1206 x 2622 | 18, 26, 27 |
| `iphone-16` | iPhone 16 | 1179 x 2556 | 18, 26, 27 |
| `iphone-14` | iPhone 14 | 1170 x 2532 | 17, 18 |
| `ipad-pro-m5-13` | iPad Pro 13-inch (M5) | 2064 x 2752 | 26, 27 |
| `ipad-pro-m5-11` | iPad Pro 11-inch (M5) | 1668 x 2420 | 26, 27 |

iPad and iPhone Duo runs are billed at the Advanced iOS rate, see [pricing](../billing/test-run-billing.md).

::: warning
iPhone 15, iPhone 16 Plus, iPhone 16 Pro, iPhone 16 Pro Max and iPad Pro (6th Generation) are deprecated and we're targeting removal on the 2nd November. This date is subject to change based on usage.
iPhone 16 Pro and iPhone 16 Pro Max are deprecated and we're targeting removal on the 9th November. This date is subject to change based on usage.
:::

iPhone 15, iPhone 16 Plus and iPad Pro (6th Generation) were removed on 2 November 2026.

#### Foldables

The iPhone Duo starts folded, on its cover screen, and the Pixel 10 Pro Fold starts unfolded. A flow can fold or unfold either part-way through a run, and tap or take screenshots on whichever screen is active. See [Foldable Devices](../configuration/foldable-devices.md).
Expand Down Expand Up @@ -164,7 +161,7 @@ We will always aim to support the latest versions of iOS and additionally contin

It may be possible in some cases to provide support for a beta version however this will be on a case-by-case basis; please contact our Support team if you would like to request this.

The default configuration will always be the latest even-numbered base iPhone we support running the previous version of iOS, i.e. iPhone 16 running iOS 26. Before we change the default, we will always provide a minimum of 30 days notice. The default becomes iPhone 16 / iOS 26 on 2 November 2026.
The default configuration will always be the latest even-numbered base iPhone we support running the previous version of iOS, i.e. iPhone 16 running iOS 26. Before we change the default, we will always provide a minimum of 30 days notice. The default has been iPhone 16 / iOS 26 since 2 November 2026.

### Android Support Policy

Expand Down
4 changes: 2 additions & 2 deletions mcp/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ This tool consumes test credits. It's annotated as destructive so clients can pr
| `flowFile` | string | **Required.** Path to a Maestro `.yaml`/`.yml` flow, or a directory of flows |
| `appFile` | string | Path to a local app binary — `.apk`, `.app`, or `.zip`. Mutually exclusive with `appBinaryId` |
| `appBinaryId` | string | ID of a previously uploaded binary. Mutually exclusive with `appFile` |
| `iosVersion` | string | iOS version, e.g. `17` |
| `iosDevice` | string | iOS device, e.g. `iphone-14` |
| `iosVersion` | string | iOS version, e.g. `26` |
| `iosDevice` | string | iOS device, e.g. `iphone-16` |
| `androidApiLevel` | string | Android API level, e.g. `34` |
| `androidDevice` | string | Android device, e.g. `pixel-10` |
| `googlePlay` | boolean | Use a [Google Play-enabled](../configuration/google-play-apis.md) Android image |
Expand Down
Loading