[SauceLabs][Appium] Automation tests are running much more slower on IOS simulator comparing to Android emulator on SauceLabs

86 views Asked by At

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", "some_cache");
        sauceOptions.setCapability("build", CAPABILITIES.getBuildNumber());
        sauceOptions.setCapability("name", CucumberScenario.SCENARIO.get().getName());
        sauceOptions.setCapability("videoUploadOnPass", false);
        capabilities.setCapability("sauce:options", sauceOptions);

        log.info("Capabilities: " + new JSONObject(capabilities.toJson()).toString(identFactor));
        return capabilities;
    }
0

There are 0 answers