Hi, has anyone here had experience in setting up the automation for the IOS platform on SauceLabs simulators?
I tried and got pretty bad performance results, as an example I executed a simple authorization test with next results:
- Android emulator, it takes 1m 50s to finish
- IOS simulator - 12m 52s
Later I discovered the VM resources on which the IOS simulator is executed, and they were pretty bad
- Chip - intel core 2 Solo
- RAM - 6GB
- Graphics: VMware SVGA || 32 MB
After that, I came up to the conclusion that the VMs that are provided - are simply not powerful enough to support smooth simulator work, because at least locally I didn’t have such problems at all:
- Chip - Apple M1 Pro
- RAM - 16GB
The only solution for me is completely switching to the SauceLabs real devices, the test execution speed there is pretty much the same as on Android emulators, so the authorization test takes ~1m 50s to finish
Maybe there is something I am missing, maybe it is possible to set the VM with better resources somehow for Appium testing, but I wasn’t lucky to find this in their official docs.
Or there is some magic capability that would resolve all the problems , it is not that I am not okay with the real devices but they are much more expensive than the virtual ones and it would be better for me to use the virtual ones.
I will be grateful if somebody who faced the same situation could give some advice on the topic, thanks.
P.s Here are my Caps just in case(more oriented for real devices):
private DesiredCapabilities getSauceLabsIOSDesiredCapabilities() {
CAPABILITIES.readCapabilitiesFromProperties();
DesiredCapabilities capabilities = CAP.get();
capabilities.setCapability("appium:deviceName", new SauceLabsService().getNotBusyIOSRealDevice(DEVICE).getFullDeviceName());
capabilities.setCapability("appium:platformVersion", DEVICE.getPlatformVersion());
capabilities.setCapability("appium:automationName", "XCUITest");
capabilities.setCapability("appium:deviceOrientation", "portrait");
capabilities.setCapability("appium:sendKeyStrategy", "setValue");
capabilities.setCapability("appium:settings[waitForQuiescence]", false);
capabilities.setCapability("appium:autoFillPasswords", false);
capabilities.setCapability("appium:settings[animationCoolOffTimeout]", 0);
capabilities.setCapability("appium:settings[customSnapshotTimeout]", 2);
capabilities.setCapability("appium:noReset", true);
capabilities.setCapability("appium:bundleId", "my.cool.app");
capabilities.setCapability("appium:settings[pageSourceExcludedAttributes]", "visible,enabled,accessible,x,y,width,height,index");
capabilities.setCapability("appium:derivedDataPath", "/Volumes/Sauce/wda/wda-v2.0.0-xcode13.0/WebDriverAgent/DerivedData/WebdriverAgent");
capabilities.setCapability("appium:app", AppCenterService.getInstance().getApp().get("url"));
capabilities.setCapability("appium:shouldTerminateApp", true);
MutableCapabilities sauceOptions = new MutableCapabilities();
sauceOptions.setCapability("appiumVersion", "2.0.0");
sauceOptions.setCapability("cacheId", "jnc0x1257");
sauceOptions.setCapability("build", CAPABILITIES.getBuildNumber());
sauceOptions.setCapability("name", CucumberScenario.SCENARIO.get().getName());
sauceOptions.setCapability("videoUploadOnPass", false);
sauceOptions.setCapability("sauceLabsImageInjectionEnabled", false);
capabilities.setCapability("sauce:options", sauceOptions);
log.info("Capabilities: " + new JSONObject(capabilities.toJson()).toString(identFactor));
return capabilities;
}