Skip to main content
🚀 Self Healing AI Agent now live in App Automate! Auto-fix flaky tests instantly with zero code changes. Enable now!
No Result Found
Connect & Get help from fellow developers on our Discord community. Ask the CommunityAsk the Community

SIM enabled devices

  • This feature is available only under Device Cloud Pro, Device Cloud Pro + Visual Cloud, and Enterprise Pro plans. For more details check out our pricing page.
  • Currently, eSIMs are supported on iPhone 13 and iPhone 14 devices only.

To use this feature on dedicated devices, refer to the Private Devices documentation.

BrowserStack App Automate provides access to SIM-equipped devices and enables you to test SIM-related use cases such as:

  • Receiving SMS on the allocated device during your test session.
  • Composing and sending SMS from the allocated device during your test session.

In this guide, you will learn about:

Supported OS and devices

OS Version Supported Devices
Android 15 Samsung Galaxy S25
Google Pixel 9 Pro
Google Pixel 9
Android 14 Samsung Galaxy S24 Ultra
Samsung Galaxy S24
Google Pixel 8 Pro
Google Pixel 8
Android 13 Samsung Galaxy S23 Ultra
Samsung Galaxy S23
Google Pixel 7
Google Pixel 6 Pro
Android 12 Samsung Galaxy S22 Ultra
Samsung Galaxy S22+
Samsung Galaxy S22
Samsung Galaxy S21
Google Pixel 6
OS Version Supported Devices
iOS 26 iPhone 17
iOS 18 iPhone 16 Pro
iOS 17 iPhone 15 Pro
iPhone 15
iOS 16 iPhone 14 Pro Max
iPhone 14 Pro
iPhone 14
iPhone 13
iOS 15 iPhone 13 Pro Max
iPhone 13 Pro
iPhone 13 Mini
iPhone 13
iOS 14 iPhone 12 Pro
iPhone 12
iOS 13 iPhone 11

Obtain a SIM enabled device

Use the following capability in your test scripts to obtain a device with SIM.

To enable sim options for Android devices use the following code examples:

If you are using BrowserStack SDK, you can set the following capability within the browserstack.yml file:

Capability Description
enableSim Set this capability to "true" to obtain a device with SIM.
simOptions Set the configuration “region” to one of the following country names to obtain a SIM device for that country: Australia, India, USA.

Example:

browserstack.yml
Copy icon Copy

BrowserStack SDK is a plug-n-play solution that takes care of all the integration steps for you. Using the BrowserStack SDK is the recommended integration method for your project. To know more, visit the SDK core concepts page.

Capability Description
enableSim Set this capability to "true" to obtain a device with SIM.
simOptions Set the configuration “region” to one of the following country names to obtain a SIM device for that country: Australia, India, USA.

Example:

DesiredCapabilities capabilities = new DesiredCapabilities();
HashMap<String, Object> browserstackOptions = new HashMap<String, Object>();
browserstackOptions.put("enableSim", "true");
HashMap<String, String> simOptions = new HashMap<String, String>();
simOptions.put("region","USA");
browserstackOptions.put("simOptions", simOptions);
capabilities.setCapability("bstack:options", browserstackOptions);
capabilities.setCapability("platformName", "android");
capabilities.setCapability("platformVersion", "12.0");
capabilities.setCapability("deviceName", "Google Pixel 6");
var capabilities = {
	"platformName" : "android",
	"appium:platformVersion" : "12.0",
	"appium:deviceName" : "Google Pixel 6",
	'bstack:options' : {
		"enableSim" : "true",
		"simOptions" : { 
 			"region" : "USA",
		}
	}
}
AppiumOptions capabilities = new AppiumOptions();
capabilities.AddAdditionalCapability("osVersion", "12.0");
capabilities.AddAdditionalCapability("deviceName", "Google Pixel 6");
Dictionary<string, object> browserstackOptions = new Dictionary<string, object>();
browserstackOptions.Add("enableSim","true");
Dictionary<string, string> simOptions = new Dictionary<string, string>();
simOptions.Add("region","USA");
browserstackOptions.Add("simOptions",simOptions);
capabilities.AddAdditionalCapability("bstack:options", browserstackOptions);
capabilities.AddAdditionalCapability("platformName", "android");
capabilities.AddAdditionalCapability("platformVersion", "12.0");
capabilities.AddAdditionalCapability("appium:deviceName", "Google Pixel 6");
desired_cap = {
	"platformName" : "android",
	"platformVersion" : "12.0",
	"deviceName" : "Google Pixel 6",
	"bstack:options" : {
		"enableSim" : "true",
		"simOptions" : { 
 			"region" : "USA",
		}
	}
}
capabilities = {
	"platformName"=> "android",
	"platformVersion" => "12.0",
	"deviceName" => "Google Pixel 6",
	"bstack:options" => {
		"enableSim" => "true",
		"simOptions" => { 
 			"region" => "USA",
		}
	}
}
Capability Description
browserstack.enableSim Set this capability to "true" to obtain a device with SIM.
browserstack.simOptions Set the configuration “region” to one of the following country names to obtain a SIM device for that country: Australia, India, USA.

Example:

DesiredCapabilities desiredcapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("os_version", "12.0");
desiredCapabilities.setCapability("device", "Google Pixel 6");
desiredCapabilities.setCapability("browserstack.enableSim","true");
HashMap<String, String> simOptions = new HashMap<String, String>();
simOptions.put("region","USA");
desiredCapabilities.setCapability("browserstack.simOptions", simOptions);
var capabilities = {
	"os_version" : "12.0",
	"device" : "Google Pixel 6",
	"browserstack.enableSim" : "true",
	"browserstack.simOptions" : { 
 		"region" : "USA"
	}
}
AppiumOptions capabilities = new AppiumOptions();
capabilities.AddAdditionalCapability("os_version", "12.0");
capabilities.AddAdditionalCapability("device", "Google Pixel 6");
capabilities.AddAdditionalCapability("browserstack.enableSim", "true");
Dictionary<string, string> simOptions = new Dictionary<string, string>();
simOptions.Add("region", "USA");
capabilities.AddAdditionalCapability("browserstack.simOptions", simOptions);
desired_cap = {
	"os_version" : "12.0",
	"device" : "Google Pixel 6",
	"browserstack.enableSim" : "true"
	"browserstack.simOptions" : { 
 		"region" : "USA"
	}
}
caps = Selenium::WebDriver::Remote::Capabilities.new
caps["os_version"] = "12.0"
caps["device"] = "Google Pixel 6"
caps["browserstack.enableSim"]  = "true"
caps["browserstack.simOptions"] = {"region" => "USA"}

To enable sim options for iOS devices use the following code examples:

If you are using BrowserStack SDK, you can set the following capability within the browserstack.yml file:

Capability Description
enableSim Set this capability to "true" to obtain a device with SIM.
simOptions Set the configuration “region” to the below mentioned country name to obtain a SIM device for that country.
Android: Australia, India, USA
iOS: Australia, India, Ireland, USA
Set the configuration esim to true to enable esim option for the device.

Example:

browserstack.yml
Copy icon Copy

BrowserStack SDK is a plug-n-play solution that takes care of all the integration steps for you. Using the BrowserStack SDK is the recommended integration method for your project. To know more, visit the SDK core concepts page.

Capability Description
enableSim Set this capability to "true" to obtain a device with SIM.
simOptions Set the configuration “region” to the below mentioned country name to obtain a SIM device for that country.
Android: Australia, India, USA
iOS: Australia, India, Ireland, USA
Set the configuration esim to true to enable esim option for the device.

Example:

DesiredCapabilities capabilities = new DesiredCapabilities();
HashMap<String, Object> browserstackOptions = new HashMap<String, Object>();
browserstackOptions.put("enableSim", "true");
HashMap<String, String> simOptions = new HashMap<String, String>();
simOptions.put("region","USA");
simOptions.put("esim","true");
browserstackOptions.put("simOptions", simOptions);
capabilities.setCapability("bstack:options", browserstackOptions);
capabilities.setCapability("platformName", "ios");
capabilities.setCapability("platformVersion", "16.0");
capabilities.setCapability("deviceName", "iPhone 14");
var capabilities = {
	"platformName" : "ios",
	"appium:platformVersion" : "16.0",
	"appium:deviceName" : "iPhone 14",
	'bstack:options' : {
		"enableSim" : "true",
		"simOptions" : { 
			"region" : "USA",
			"esim"  : "true"
		}
	}
}
AppiumOptions capabilities = new AppiumOptions();
Dictionary<string, object> browserstackOptions = new Dictionary<string, object>();
browserstackOptions.Add("enableSim","true");
Dictionary<string, string> simOptions = new Dictionary<string, string>();
simOptions.Add("region","USA");
simOptions.Add("esim","true");
browserstackOptions.Add("simOptions",simOptions);
capabilities.AddAdditionalCapability("bstack:options", browserstackOptions);
capabilities.AddAdditionalCapability("platformName", "ios");
capabilities.AddAdditionalCapability("platformVersion", "16.0");
capabilities.AddAdditionalCapability("appium:deviceName", "iPhone 14");

desired_cap = {
	"platformName" : "ios",
	"platformVersion" : "16.0",
	"deviceName" : "iPhone 14",
	'bstack:options' : {
		"enableSim" : "true",
		"simOptions" : { 
			"region" : "USA",
			"esim"  : "true"
		}
	}
}
capabilities = {
	"platformName"=> "ios",
	"platformVersion"=> "16.0",
	"deviceName"=> "iPhone 14",
	'bstack:options' => {
		"enableSim" => "true",
		"simOptions" => { 
			"region" => "USA",
			"esim"  => "true"
		}
	}
}
Capability Description
browserstack.enableSim Set this capability to "true" to obtain a device with SIM.
browserstack.simOptions Set the configuration “region” to the below mentioned country name to obtain a SIM device for that country.
Android: Australia, India, USA
iOS: Australia, India, Ireland, USA
Set the configuration esim to true to enable esim option for the device.

Example:

DesiredCapabilities desiredcapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("os_version", "16.0");
desiredCapabilities.setCapability("device", "iPhone 14");
desiredCapabilities.setCapability("browserstack.enableSim","true");
HashMap<String, String> simOptions = new HashMap<String, String>();
simOptions.put("region","USA");
simOptions.put("esim","true");
desiredCapabilities.setCapability("browserstack.simOptions", simOptions);
var capabilities = {
	"os_version" : "16.0",
	"device" : "iPhone 14",
	"browserstack.enableSim" : "true",
	"browserstack.simOptions" : { 
 		"region" : "USA",
 		"esim" : "true"
	}
}
AppiumOptions capabilities = new AppiumOptions();
capabilities.AddAdditionalCapability("os_version", "16.0");
capabilities.AddAdditionalCapability("device", "iPhone 14");
capabilities.AddAdditionalCapability("browserstack.enableSim", "true");
Dictionary<string, string> simOptions = new Dictionary<string, string>();
simOptions.Add("region", "USA");
simOptions.Add("esim", "true");
capabilities.AddAdditionalCapability("browserstack.simOptions", simOptions);
desired_cap = {
	"os_version" : "16.0",
	"device" : "iPhone 14",
	"browserstack.enableSim" : "true"
	"browserstack.simOptions" : { 
 		"region" : "USA",
 		"esim" : "true"
	}
}
caps = Selenium::WebDriver::Remote::Capabilities.new
caps["os_version"] = "16.0"
caps["device"] = "iPhone 14"
caps["browserstack.enableSim"]  = "true"
caps["browserstack.simOptions"] = {"region" => "USA", "esim" => "true"}

Retrieve SIM properties of the allocated device

Use the following executor command in your test scripts to retrieve SIM properties of the allocated device such as the phone number and region during session run time:

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("browserstack_executor:{\"action\": \"deviceInfo\", \"arguments\" : {\"deviceProperties\" : [\"simOptions\"]}}");
await driver.execute("browserstack_executor: {\"action\": \"deviceInfo\", \"arguments\" : {\"deviceProperties\" : [\"simOptions\"]}}");
((IJavaScriptExecutor)driver).ExecuteScript("browserstack_executor: {\"action\": \"deviceInfo\", \"arguments\" : { \"deviceProperties\" : [\"simOptions\"]}}");
driver.execute_script("browserstack_executor: {\"action\":\"deviceInfo\", \"arguments\": {\"deviceProperties\" : [\"simOptions\"]}}")
driver.execute_script("browserstack_executor: {\"action\":\"deviceInfo\", \"arguments\": {\"deviceProperties\" : [\"simOptions\"]}}")

Sample response:

{
  “simOptions“ : { “Phone Number“:“XXXXX”, “Region“:”USA”, "esim":true }
}

Check this page for a list of various JavaScript Executors that BrowserStack offers.

We're sorry to hear that. Please share your feedback so we can do better

Contact our Support team for immediate help while we work on improving our docs.

We're continuously improving our docs. We'd love to know what you liked





Thank you for your valuable feedback

Is this page helping you?

Yes
No

We're sorry to hear that. Please share your feedback so we can do better

Contact our Support team for immediate help while we work on improving our docs.

We're continuously improving our docs. We'd love to know what you liked





Thank you for your valuable feedback!

Talk to an Expert
Download Copy Check Circle