Instant Booted iOS Simulators
Beta
The speed of the Simulator is a crucial factor that impacts the development workflow of iOS app developers. Instant booted iOS Simulators offer significant advantages over our default Simulators, as they reduce the time it takes to launch the Simulator to test apps to almost zero seconds.
With Instant Booted iOS Simulators, you can quickly switch between two iOS versions and test your app in four configurations to ensure its compatibility and performance.
Sauce Labs supports the following configurations:
- iPhone 14 Simulator with the latest iOS 16.x version.
- iPhone 13 Simulator with the latest iOS 15.x version.
- iPad (10th generation) Simulator with the latest iOS 16.x version.
- iPad (9th generation) Simulator with the latest iOS 15.x version.
These Simulator configurations can be used for manual and automated tests, allowing you to target specific devices and iOS versions for testing. This flexibility can help you optimize the testing process and improve the compatibility and performance of your apps.
What You'll Need
- A Sauce Labs account (Log in or sign up for a free trial license).
- A web app, native iOS, or iPadOS mobile app.
Accessing Instant Booted Simulators
There are two ways that you can access iOS Instant Booted Simulators
Using aliases (recommended)
To ensure that your capabilities remain consistent and you always have access to an instant-booted iPhone or iPad, we introduced two aliases for the device names. These aliases are as follows:
iPhone Instant Simulator
iPad Instant Simulator
We also introduced iOS Version Management, see iOS Version Management, which add three new platform version aliases. These are
latest|current_major
previous_major
The combination of the device name and platform version alias will automatically allocate an Instant Booted Simulator for your manual or automated test.
The alias iPhone Instant Simulator
or iPad Instant Simulator
will only work with the platform version aliases latest|current_major
and previous_major
. If you use the alias iPhone Instant Simulator
or iPad Instant Simulator
with a specific platform version, for example 16.2
, then the test will fail with the following error message
Error: Failed to create session.
Invalid platform version specified for instant Simulators: iPhone Instant Simulator. Must be one of ['previous_major', 'current_major', 'latest']
There are two advantages of using the aliases
-
Whenever Apple releases a new major version of iOS, they usually launch a new iPhone or iPad model. Sauce Labs assigns these models to the aliases
iPhone Instant Simulator
oriPad Instant Simulator
, which means you can access the new device automatically without having to change your capabilities. Consequently, you'll be using the latest device for your tests and will be testing your app on what will most likely be the most popular device used by your users. -
If Apple releases a new minor or major iOS version and Sauce Labs incorporates it into their cloud, you'll get automatic access to the new version without having to alter your capabilities. This means that you'll be using the latest iOS version for your tests and will be testing your app on what is most likely the most popular iOS version used by your users.
The following examples use iOS 16 and 15 as the current and previous major versions of iOS, respectively.
Device Name | Platform Version | Result | Instant Booted | Note |
---|---|---|---|---|
iPhone Instant Simulator | latest/current_major | iPhone 14 with 16.2 | ✅ | The requested instant-booted device alias, requested OS version, and latest OS version installed in our cloud match. This means an instant-booted Simulator will be started. |
iPad Instant Simulator | latest/current_major | iPad (10th Generation) with 16.2 | ✅ | |
iPhone Instant Simulator | previous_major | iPhone 13 with 15.5 | ✅ | |
iPad Instant Simulator | previous_major | iPad (9th Generation) with 15.5 | ✅ | |
iPhone Instant Simulator | A fixed iOS version, for example, 16.2, or 15.5 | - | ❌ | The combination is invalid. The device name alias CAN ONLY be combined with platform version aliases |
iPad Instant Simulator | A fixed iOS version, for example, 16.2, or 15.5 | - | ❌ |
Using explicit capabilities
You can use explicit capabilities to access the Instant Booted iOS Simulators. However, this is not recommended because you're more likely to end up on a normally booted simulator when Apple releases a new minor or major version of iOS. As a result, you won't automatically gain access to the latest device or iOS version for your tests, and you'll likely be testing your app on a less popular device or iOS version that is not commonly used by your users.
If you want to use explicit capabilities, then you can use the following combinations:
The following examples use iOS 16 and 15 as the current and previous major versions of iOS, respectively. The examples don't always reflect the actual versions of iOS that are supported by Sauce Labs and Apple on Simulators. See our Platform Configurator tool for the most up-to-date information.
Device Name | Platform Version | Latest version in SL Cloud | Instant Booted | Note |
---|---|---|---|---|
| 16.2 | 16.2 | ✅ | The requested device name + OS version match with an Instant Booted configuration. |
| 15.5 | 15.5 | ✅ | |
iPhone 14 Simulator | 16.1 | 16.2 | ❌ | The requested device name + OS version DO NOT match with an Instant Booted configuration. |
iPhone 13 Simulator | 16.2 | 16.2 | ❌ | The requested device name + OS version DO NOT match with an Instant Booted configuration. |
Accessing Instant Booted iOS Simulator for Live Testing
To access the Instant Booted iOS Simulator follow the steps below, for this example we will use the iPhone 14 with the latest iOS 16.x version (current_major
):
-
On Sauce Labs click Live > Cross Browser > Mobile Virtual.
-
Select “Apple” as the Manufacturer.
-
If you want to use the
current_major
version, then use these values :
- Select iPhone 14 Simulator for the Device.
- Select the latest available version of iOS.
If you want to use the previous_major
version, then use these values:
- Select “iPhone 13 Simulator” for the Device
- Select the previous major version, at the moment this is “iOS 15.5”, for the OS Version
Accessing Instant Booted iOS Simulator for Automated Testing with Appium
To use the Instant Booted Simulators, specify the following device configuration capabilities:
- Java
- Node.js
- Python
- Ruby
- C#
- iPhone
- iPad
MutableCapabilities capabilities = new MutableCapabilities();
capabilities.setCapability("browserName", "safari");
capabilities.setCapability("platformName", "ios");
// Possible values: "latest", "current_major", "previous_major"
capabilities.setCapability("appium:platformVersion", "current_major");
capabilities.setCapability("appium:deviceName", "iPhone Instant Simulator");
capabilities.setCapability("appium:automationName", "xcuitest");
HashMap<String, Object> sauceOptions = new HashMap<String, Object>();
capabilities.setCapability("sauce:options", sauceOptions);
MutableCapabilities capabilities = new MutableCapabilities();
capabilities.setCapability("browserName", "safari");
capabilities.setCapability("platformName", "ios");
// Possible values: "latest", "current_major", "previous_major"
capabilities.setCapability("appium:platformVersion", "current_major");
capabilities.setCapability("appium:deviceName", "iPad Instant Simulator");
capabilities.setCapability("appium:automationName", "xcuitest");
HashMap<String, Object> sauceOptions = new HashMap<String, Object>();
capabilities.setCapability("sauce:options", sauceOptions);
- iPhone
- iPad
const capabilities = {
browserName: 'safari',
platformName: 'ios',
// Possible values: "latest", "current_major", "previous_major"
'appium:platformVersion': 'current_major',
'appium:deviceName': 'iPhone Instant Simulator',
'appium:automationName': 'xcuitest',
'sauce:options': {
}
}
const capabilities = {
browserName: 'safari',
platformName: 'ios',
// Possible values: "latest", "current_major", "previous_major"
'appium:platformVersion': 'current_major',
'appium:deviceName': 'iPad Instant Simulator',
'appium:automationName': 'xcuitest',
'sauce:options': {
}
}
- iPhone
- iPad
capabilities = {
"browserName" : "safari",
"platformName" : "ios",
# Possible values: "latest", "current_major", "previous_major"
"appium:platformVersion" : "current_major",
"appium:deviceName" : "iPhone Instant Simulator",
'appium:automationName': 'xcuitest',
"sauce:options" : {
}
}
capabilities = {
"browserName" : "safari",
"platformName" : "ios",
# Possible values: "latest", "current_major", "previous_major"
"appium:platformVersion" : "current_major",
"appium:deviceName" : "iPad Instant Simulator",
'appium:automationName': 'xcuitest',
"sauce:options" : {
}
}
- iPhone
- iPad
capabilities = {
"browserName" => "safari",
"platformName" => "ios",
# Possible values: "latest", "current_major", "previous_major"
"appium:platformVersion" => "current_major",
"appium:deviceName" => "iPhone Instant Simulator",
'appium:automationName' => 'xcuitest',
"sauce:options" => {
}
}
capabilities = {
"browserName" => "safari",
"platformName" => "ios",
# Possible values: "latest", "current_major", "previous_major"
"appium:platformVersion" => "current_major",
"appium:deviceName" => "iPad Instant Simulator"",
'appium:automationName'=> 'xcuitest',
"sauce:options" => {
}
}
- iPhone
- iPad
AppiumOptions capabilities = new AppiumOptions();
capabilities.AddAdditionalCapability("browserName", "safari");
capabilities.AddAdditionalCapability("platformName", "ios");
// Possible values: "latest", "current_major", "previous_major"
capabilities.AddAdditionalCapability("appium:platformVersion", "current_major");
capabilities.AddAdditionalCapability("appium:deviceName", "iPhone Instant Simulator");
capabilities.AddAdditionalCapability("appium:automationName", "xcuitest");
HashMap<String, Object> sauceOptions = new Dictionary<string, object>();
capabilities.AddAdditionalCapability("sauce:options", sauceOptions);
AppiumOptions capabilities = new AppiumOptions();
capabilities.AddAdditionalCapability("browserName", "safari");
capabilities.AddAdditionalCapability("platformName", "ios");
// Possible values: "latest", "current_major", "previous_major"
capabilities.AddAdditionalCapability("appium:platformVersion", "current_major");
capabilities.AddAdditionalCapability("appium:deviceName", "iPad Instant Simulator");
capabilities.AddAdditionalCapability("appium:automationName", "xcuitest");
HashMap<String, Object> sauceOptions = new Dictionary<string, object>();
capabilities.AddAdditionalCapability("sauce:options", sauceOptions);
This will assign an instant-booted Simulator that represents the latest
/current_major
iOS version for the requested device by what both Apple has released and what Sauce Labs supports in our Simulator cloud. In the case of using previous_major
platform version, it will represent the latest previous major iOS version for the requested device by what both Apple has released and what Sauce Labs supports in our Simulator cloud.
To use a different version of Appium, you can specify it through the sauce:options. Check our platform configurator to confirm which Appium versions are supported. Using a different version may result in additional 20 seconds of start-up time for your iPhone/iPad Instant Simulator.
FAQ
How can I validate that my session used an Instant Booted Simulator?
This can be done by:
- Validating the session command time, which should be between 0-10 seconds. The video should start with a booted sim.
- Opening the Metadata tab, as Sauce Labs automatically add tags.
If you are using
“appium:deviceName”: “iPhone Instant Simulator”
or“appium:deviceName”: “iPad Instant Simulator”
, you should see the tag sl-instant-simulator. When you use the default Appium version, you will additionally see the sl-instant-simulator-with-matching-appium tag.
I set up an Instant Booted Simulator, but it’s still taking a long time to boot.
There are a few reasons why this could happen.
All available Instant Booted Simulators are used
Instant Booted Simulators are subject to availability. We keep monitoring our pool of Instant Booted Simulators on a daily basis to determine the ideal number of Instant Booted Simulators to keep available. In case all available Instant Booted Simulators are used then your session will fall back to the default way of starting a Simulator.
Appium restarted the Simulator due to specific capabilities that you provided.
To check this, follow the steps below:
- Go to Automated > Test Results.
- Open your session.
- Check the first 15 seconds of the video. If you see that the Simulator was already started from the first second, or the restart of the video happens in the first 15 seconds, it means that Appium rebooted the Simulator. See the video below for more information:
A common cause could be that you have provided a capability “appium:language”
or “appium:locale”
to change the language of the app or Simulator.
The Instant Booted Simulators use default English settings. Every change you make to it by providing different capabilities will trigger Appium to restart the Simulator.