Installing the application on the iOS phone is very slow

I updated the Xcode version to 12.4 but the problem remained.

you said your device:

but in logs your caps are:

Yes, it my mistake, i changed it, but it does not affect because it was long time and i had the fast install app.

write your caps when you try fast start.

Sry, i didn’t understand what do u mean “write your caps when you try fast start.” ?

write your capabilities how you open driver. 25-30 sec looks toooo much even when app already installed on phone. it can be only when you reinstall your app with each test.
e.g. i have 2 sec

start from looking at -> Different capabilities for different scenarios

Yes, i reinstalled app with each test because it need for my scenarios.
My capabilities for start driver:
opt.AddAdditionalCapability(MobileCapabilityType.DeviceName, pres.iOSdeviceName);
opt.AddAdditionalCapability(MobileCapabilityType.PlatformVersion, pres.iOSplatformVersion);
opt.AddAdditionalCapability(MobileCapabilityType.Udid, pres.iOSudid);
opt.AddAdditionalCapability(MobileCapabilityType.AutomationName, “XCUITest”);
opt.AddAdditionalCapability(“bundleId”, pres.UATbundelIdiOS);
opt.AddAdditionalCapability(“appPushTimeout”, 3000000);
opt.AddAdditionalCapability(MobileCapabilityType.App, pres.iOSapp);
if (isNoreset == true) opt.AddAdditionalCapability(“noReset”, true);

Now i tried change my real device and app installed fast (21 sec) but now i have another erorr:

  • OpenQA.Selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 70
    xcodebuild error message:
    . Make sure you follow the tutorial at Try to remove the WebDriverAgentRunner application from the device if it is installed and reboot the device.

I try reboot but it doesn`t help me.

  1. build WDA app yourself for Generic Device. See ’ Full manual configuration’ in link error.
  2. add capability to use these pre-build WDA:
capabilities.setCapability(IOSMobileCapabilityType.USE_PREBUILT_WDA, true);
  1. make sure that new phone included into developer signature. otherwise you will not be able to install your ipa file on new phone.

I did and it helped, but again with
installation speed problem. In general, what determines the process of installing the application and its speed?

[info][35m[XCUITest][39m Setting up real device
[debug][35m[XCUITest][39m Verifying application platform
[debug][35m[XCUITest][39m CFBundleSupportedPlatforms: [“iPhoneOS”]
[debug][35m[XCUITest][39m Installing ‘/var/folders/zg/kxqyqh8x4qj3169v15ppfrxw0000gp/T/202198-2260-dli0d6.c325j/’ on device with UUID ‘00008020-001C48A21EBA002E’…
[debug][35m[XCUITest][39m Pushed the app files successfully after 87477ms
[info][35m[XCUITest][39m App installation succeeded after 94337ms
[debug][35m[XCUITest][39m The app has been installed successfully.

just wonder what size of app? also interesting you use “app” while “ipa” is for real device.

Now 86 651 252 bytes (100,7 MB on disk), but we are still developing and adding new features and it adds size.

I noticed an interesting thing, when I tried again to pass the test on the 11th iPhone, the application was delivered in 15 seconds, I changed the USB connection where the 11th iPhone was connected and connected the 10th iPhone and now on the 10th iPhone the application was delivered in 20 seconds instead of the previous time for 90 sec. Although I had previously run 5 tests on 10 iPhones and all times the application was installed in 90-180 seconds.

maybe problem in cable? our app have similar size. and we have sec…
fullReset: completed in - 41 sec
normal start (no app on phone. installing): completed in - 11 sec
normal start (app installed on phone): completed in - 2 sec

Troubleshooting bad cables can be a nightmare. The instant I suspect one is bad I just replace it.

Thank you, I will try to experiment with the cable on Monday, although at the same input and the same cable showed the result of 200 seconds and 20 seconds. In general, when the process is running, what happens under the hood, can it be traced somehow? Maybe it checks some permissions or certificates or launches something?

Check how app install works with ideviceinstaller

using ideviceinstaller which can be installed using brew install ideviceinstaller
# list installed app on the connected device
# it also lists the identifier of the installed packages
ideviceinstaller -l

# install ipa
ideviceinstaller -i <your-package.ipa>

# uninstall app
ideviceinstaller -U <your-app-id>

Сable replacement does not help, checked the command “ideviceinstaller -i <your-package.ipa>” it installs the application in 10 seconds, provided that XCUITest installs in 180 seconds + -. I checked that as soon as the application is installed for a long time, changing the input (not the cable) helps to return the installation time by + - 20 seconds.

Try appium@beta with

Basically, it is now possible to set a custom app installation strategy and to have more control over the app deployment process

Looks good, I’ll try it. But could you explain to me how corect write this comand (ios-deploy with PATH) ?

“ios-deploy` - tells the driver to use a third-party tool ios-deploy to install the app; obviously the tool must be installed separately first and must be present in PATH before it could be used

I guess in most cases just install will be enough

brew install ios-deploy

if not just run:

which ios-deploy

and we have path to it:


now add this path to PATH variable:

export PATH=$PATH:/usr/local/bin/ios-deploy