If you have the proper licensing (Basically you will see the mobile commands being available in the command wizard), follow the steps below to setup local execution on your machine.
Android
Installation of Major Requirements
Install Homebrew (Homebrew )
Install NodeJS with Homebrew brew install node
Install Java Development Kit (versions 17-21 - we recommend using 21 LTS). You can download from Oracle_17 or Oracle_21 or Adoptium
Install Appium via NPM and update drivers, using console:
npm install -g appium
appium driver install uiautomator2
appium driver install xcuitest
5. In order to update Appium, you can use:
appium driver update uiautomator2
appium driver update xcuitest
6. Click Appium Inspector to download Appium Desktop Inspector.
7. Run the attached SH file to install the all other requirements automatically or follow the next steps manually.
Note : If you would like to do the setup manually and want to use zsh instead of bash, you should create/modify ~/.zprofile file.
Install Android Emulator Hypervisor
Run the command below:
./sdkmanager "extras;google;Android_Emulator_Hypervisor_Driver"
Set environment variables We need to set environment variables, so Appium can communicate with ADB (Android Debug Bridge).
For example, Android Sdk (installation step 2) is placed on /Users/home/shad0w/Android/Sdk Open ~/.bash_profile with any editor and add next lines to the bottom:
export ANDROID_HOME=/home/shad0w/Android/Sdk
export PATH=$PATH:/home/shad0w/Android/Sdk/tools
export PATH=$PATH:/home/shad0w/Android/Sdk/platform-tools
Install required emulator system image and create an Emulator Go to your Android SDK manager folder, e.g. /Users/home/shad0w/Android/Sdk Run next command to download system emulator.
./sdkmanager "system-images;android-26;google_apis;x86"
./avdmanager create avd -n Nexus_5X_Oreo --abi google_apis/x86 --package "system-images;android-26;google_apis;x86"
If you need to create a different emulator with a different API version, you can change the values in the commands. For example, if we want to create ‘Samsung Galaxy S20’ with API 27, we can use the following commands:
./sdkmanager "system-images;android-27;google_apis;x86"
./avdmanager create avd -n Samsung_Galaxy_S20_27_Oreo --abi google_apis/x86 --package "system-images;android-27;google_apis;x86"
Note: If you need x64 version of emulators, you can replace x86 with x86_64 in the lines above.
Install Android Emulator Hypervisor
Execute the below command in order to install Android Emulator Hypervisor (Intel HAXM is now obsolete and no longer used)
./sdkmanager "extras;google;Android_Emulator_Hypervisor_Driver"
Run created Emulator to be sure everything was created as planned. Go to Sdk/tools folder and run next command:
./emulator -avd Nexus_5X_Oreo -accel on
Kill simulator after
To verify that HAXM installation is successful, run next command:
emulator -accel-check
Run Appium Open any console and run Appium there:
Emulator Customization
In order to change the default values for the emulator RAM, resolution and DPI, follow the steps below:
Navigate to the folder where your AVDs are located. For example, on ~/.android/avd
Go to the folder with your device name, for example Google_Pixel_4XL_27_Oreo.avd and find config.ini file
The parameters below must be updated if they already exist in the file. If they do not exist, simply add the missing ones to the bottom of the file (Do not add spaces between values and equals symbol):
hw.ramSize
hw.lcd.width
hw.lcd.height
skin.name
hw.lcd.density
A full list of specification is found on the bottom of this article.
For example, if our device is Samsung Galaxy S20, we can use the following parameters:
Device Information:
Device Name: Samsung Galaxy S20
Device RAM (Mb): 8192
Device Screen Inches: 6.2
Device Resolution: 1440x3199
Device Density: 480
Device Modifications in (config.ini.) file:
hw.ramSize=8192
hw.lcd.width=1440
hw.lcd.height=3199
skin.name=1440x3199
hw.lcd.density=480
Full list of Emulator Names
"Android API 26 (Oreo) - LG Nexus 5X" -> "Nexus_5X_Oreo"
"Android API 26 (Oreo) - Samsung Nexus 10" -> "Nexus_10"
"Android API 27 (Oreo) - Amazon Fire 7" -> "Amazon_Fire_7_27_Oreo"
"Android API 27 (Oreo) - Google Pixel 4 XL" -> "Google_Pixel_4XL_27_Oreo"
"Android API 27 (Oreo) - Huawei Mate 20" -> "Huawei_Mate_20_27_Oreo"
"Android API 27 (Oreo) - Huawei Mate 20 Pro" -> "Huawei_Mate_20_Pro_27_Oreo"
"Android API 27 (Oreo) - Huawei Mate 30 Pro" -> "Huawei_Mate_30_Pro_27_Oreo"
"Android API 27 (Oreo) - Huawei P30" -> "Huawei_P30_27_Oreo"
"Android API 27 (Oreo) - Huawei P30 Pro" -> "Huawei_P30_Pro_27_Oreo"
"Android API 27 (Oreo) - LG G8 ThinQ" -> "LG_G8_ThinQ_27_Oreo"
"Android API 27 (Oreo) - LG Nexus 5X" -> "LG_Nexus_5X_27_Oreo"
"Android API 27 (Oreo) - LG V40 ThinQ" -> "LG_V40_TninQ_27_Oreo"
"Android API 27 (Oreo) - LG X Venture" -> "LG_X_Venture_27_Oreo"
"Android API 27 (Oreo) - Moto G7" -> "Moto_G7_27_Oreo"
"Android API 27 (Oreo) - Motorola One Zoom" -> "Motorola_One_Zoom_27_Oreo"
"Android API 27 (Oreo) - Motorola One Action" -> "Motorola_One_Action_27_Oreo"
"Android API 27 (Oreo) - OnePlus 8" -> "OnePlus_8_27_Oreo"
"Android API 27 (Oreo) - OnePlus 8 Pro" -> "OnePlus_8_Pro_27_Oreo"
"Android API 27 (Oreo) - Samsung Galaxy Note10" -> "Samsung_Galaxy_Note10_27_Oreo"
"Android API 27 (Oreo) - Samsung Galaxy Note10+" -> "Samsung_Galaxy_Note10_Plus_27_Oreo"
"Android API 27 (Oreo) - Samsung Galaxy S8" -> "Samsung_Galaxy_S8_27_Oreo"
"Android API 27 (Oreo) - Samsung Galaxy S10" -> "Samsung_Galaxy_S10_27_Oreo"
"Android API 27 (Oreo) - Samsung Galaxy S20" -> "Samsung_Galaxy_S20_27_Oreo"
"Android API 27 (Oreo) - Samsung Galaxy S20+" -> "Samsung_Galaxy_S20_Plus_27_Oreo"
"Android API 27 (Oreo) - Samsung Galaxy Tab S6" -> "Samsung_Galaxy_Tab_S6_27_Oreo"
"Android API 27 (Oreo) - Samsung Galaxy Tab S6 Lite" -> "Samsung_Galaxy_Tab_S6_Lite_27_Oreo"
"Android API 27 (Oreo) - Samsung Nexus 10" -> "Samsung_Nexus_10_27_Oreo"
"Android API 27 (Oreo) - Xiaomi Mi 10 Pro" -> "Xiaomi_Mi_10_Pro_27_Oreo"
"Android API 28 (Pie) - Amazon Fire 7" -> "Amazon_Fire_7_28_Pie"
"Android API 28 (Pie) - Google Pixel 4 XL" -> "Google_Pixel_4XL_28_Pie"
"Android API 28 (Pie) - Huawei Mate 20" -> "Huawei_Mate_20_28_Pie"
"Android API 28 (Pie) - Huawei Mate 20 Pro" -> "Huawei_Mate_20_Pro_28_Pie"
"Android API 28 (Pie) - Huawei Mate 30 Pro" -> "Huawei_Mate_30_Pro_28_Pie"
"Android API 28 (Pie) - Huawei P30" -> "Huawei_P30_28_Pie"
"Android API 28 (Pie) - Huawei P30 Pro" -> "Huawei_P30_Pro_28_Pie"
"Android API 28 (Pie) - LG G8 ThinQ" -> "LG_G8_ThinQ_28_Pie"
"Android API 28 (Pie) - LG Nexus 5X" -> "LG_Nexus_5X_28_Pie"
"Android API 28 (Pie) - LG V40 ThinQ" -> "LG_V40_TninQ_28_Pie"
"Android API 28 (Pie) - LG X Venture" -> "LG_X_Venture_28_Pie"
"Android API 28 (Pie) - Moto G7" -> "Moto_G7_28_Pie"
"Android API 28 (Pie) - Motorola One Zoom" -> "Motorola_One_Zoom_28_Pie"
"Android API 28 (Pie) - Motorola One Action" -> "Motorola_One_Action_28_Pie"
"Android API 28 (Pie) - OnePlus 8" -> "OnePlus_8_28_Pie"
"Android API 28 (Pie) - OnePlus 8 Pro" -> "OnePlus_8_Pro_28_Pie"
"Android API 28 (Pie) - Samsung Galaxy Note10" -> "Samsung_Galaxy_Note10_28_Pie"
"Android API 28 (Pie) - Samsung Galaxy Note10+" -> "Samsung_Galaxy_Note10_Plus_28_Pie"
"Android API 28 (Pie) - Samsung Galaxy S8" -> "Samsung_Galaxy_S8_28_Pie"
"Android API 28 (Pie) - Samsung Galaxy S10" -> "Samsung_Galaxy_S10_28_Pie"
"Android API 28 (Pie) - Samsung Galaxy S20" -> "Samsung_Galaxy_S20_28_Pie"
"Android API 28 (Pie) - Samsung Galaxy S20+" -> "Samsung_Galaxy_S20_Plus_28_Pie"
"Android API 28 (Pie) - Samsung Galaxy Tab S6" -> "Samsung_Galaxy_Tab_S6_28_Pie"
"Android API 28 (Pie) - Samsung Galaxy Tab S6 Lite" -> "Samsung_Galaxy_Tab_S6_Lite_28_Pie"
"Android API 28 (Pie) - Samsung Nexus 10" -> "Samsung_Nexus_10_28_Pie"
"Android API 28 (Pie) - Xiaomi Mi 10 Pro" -> "Xiaomi_Mi_10_Pro_28_Pie"
"Android API 29 (Android10) - Amazon Fire 7" -> "Amazon_Fire_7_29_Android10"
"Android API 29 (Android10) - Google Pixel 4 XL" -> "Google_Pixel_4XL_29_Android10"
"Android API 29 (Android10) - Huawei Mate 20" -> "Huawei_Mate_20_29_Android10"
"Android API 29 (Android10) - Huawei Mate 20 Pro" -> "Huawei_Mate_20_Pro_29_Android10"
"Android API 29 (Android10) - Huawei Mate 30 Pro" -> "Huawei_Mate_30_Pro_29_Android10"
"Android API 29 (Android10) - Huawei P30" -> "Huawei_P30_29_Android10"
"Android API 29 (Android10) - Huawei P30 Pro" -> "Huawei_P30_Pro_29_Android10"
"Android API 29 (Android10) - LG G8 ThinQ" -> "LG_G8_ThinQ_29_Android10"
"Android API 29 (Android10) - LG Nexus 5X" -> "LG_Nexus_5X_29_Android10"
"Android API 29 (Android10) - LG V40 ThinQ" -> "LG_V40_TninQ_29_Android10"
"Android API 29 (Android10) - LG X Venture" -> "LG_X_Venture_29_Android10"
"Android API 29 (Android10) - Moto G7" -> "Moto_G7_29_Android10"
"Android API 29 (Android10) - Motorola One Zoom" -> "Motorola_One_Zoom_29_Android10"
"Android API 29 (Android10) - Motorola One Action" -> "Motorola_One_Action_29_Android10"
"Android API 29 (Android10) - OnePlus 8" -> "OnePlus_8_29_Android10"
"Android API 29 (Android10) - OnePlus 8 Pro" -> "OnePlus_8_Pro_29_Android10"
"Android API 29 (Android10) - Samsung Galaxy Note10" -> "Samsung_Galaxy_Note10_29_Android10"
"Android API 29 (Android10) - Samsung Galaxy Note10+" -> "Samsung_Galaxy_Note10_Plus_29_Android10"
"Android API 29 (Android10) - Samsung Galaxy S8" -> "Samsung_Galaxy_S8_29_Android10"
"Android API 29 (Android10) - Samsung Galaxy S10" -> "Samsung_Galaxy_S10_29_Android10"
"Android API 29 (Android10) - Samsung Galaxy S20" -> "Samsung_Galaxy_S20_29_Android10"
"Android API 29 (Android10) - Samsung Galaxy S20+" -> "Samsung_Galaxy_S20_Plus_29_Android10"
"Android API 29 (Android10) - Samsung Galaxy Tab S6" -> "Samsung_Galaxy_Tab_S6_29_Android10"
"Android API 29 (Android10) - Samsung Galaxy Tab S6 Lite" -> "Samsung_Galaxy_Tab_S6_Lite_29_Android10"
"Android API 29 (Android10) - Samsung Nexus 10" -> "Samsung_Nexus_10_29_Android10"
"Android API 29 (Android10) - Xiaomi Mi 10 Pro" -> "Xiaomi_Mi_10_Pro_29_Android10"
Full Specification List
Device Name: Amazon Fire 7
Device RAM (Mb): 1024
Device Screen Inches: 7
Device Resolution: 1024x600
Device Density: 160
---------------
hw.ramSize=1024
hw.lcd.width=1024
hw.lcd.height=600
skin.name=1024x600
hw.lcd.density=160
==============================
Device Name: Google Pixel 4 XL
Device RAM (Mb): 6144
Device Screen Inches: 6.3
Device Resolution: 1440x3040
Device Density: 480
---------------
hw.ramSize=6144
hw.lcd.width=1440
hw.lcd.height=3040
skin.name=1440x3040
hw.lcd.density=480
==============================
Device Name: Huawei Mate 20
Device RAM (Mb): 6144
Device Screen Inches: 6.53
Device Resolution: 1080x2244
Device Density: 320
---------------
hw.ramSize=6144
hw.lcd.width=1080
hw.lcd.height=2244
skin.name=1080x2244
hw.lcd.density=320
==============================
Device Name: Huawei Mate 20 Pro
Device RAM (Mb): 8192
Device Screen Inches: 6.39
Device Resolution: 1440x3120
Device Density: 480
---------------
hw.ramSize=8192
hw.lcd.width=1440
hw.lcd.height=3120
skin.name=1440x3120
hw.lcd.density=480
==============================
Device Name: Huawei Mate 30 Pro
Device RAM (Mb): 8192
Device Screen Inches: 6.53
Device Resolution: 1176x2400
Device Density: 480
---------------
hw.ramSize=8192
hw.lcd.width=1176
hw.lcd.height=2400
skin.name=1176x2400
hw.lcd.density=480
==============================
Device Name: Huawei P30
Device RAM (Mb): 6144
Device Screen Inches: 6.1
Device Resolution: 1080x2340
Device Density: 480
---------------
hw.ramSize=6144
hw.lcd.width=1080
hw.lcd.height=2340
skin.name=1080x2340
hw.lcd.density=480
==============================
Device Name: Huawei P30 Pro
Device RAM (Mb): 8192
Device Screen Inches: 6.47
Device Resolution: 1080x2340
Device Density: 320
---------------
hw.ramSize=8192
hw.lcd.width=1080
hw.lcd.height=2340
skin.name=1080x2340
hw.lcd.density=320
==============================
Device Name: LG G8 ThinQ
Device RAM (Mb): 6144
Device Screen Inches: 6.1
Device Resolution: 1440x3120
Device Density: 480
---------------
hw.ramSize=6144
hw.lcd.width=1440
hw.lcd.height=3120
skin.name=1440x3120
hw.lcd.density=480
==============================
Device Name: LG Nexus 5X
Device RAM (Mb): 2048
Device Screen Inches: 5.2
Device Resolution: 1080x1920
Device Density: 480
---------------
hw.ramSize=2048
hw.lcd.width=1080
hw.lcd.height=1920
skin.name=1080x1920
hw.lcd.density=480
==============================
Device Name: LG V40 ThinQ
Device RAM (Mb): 6144
Device Screen Inches: 6.4
Device Resolution: 1440x3120
Device Density: 480
---------------
hw.ramSize=6144
hw.lcd.width=1440
hw.lcd.height=3120
skin.name=1440x3120
hw.lcd.density=480
==============================
Device Name: LG X Venture
Device RAM (Mb): 2048
Device Screen Inches: 5.2
Device Resolution: 1080x1920
Device Density: 480
---------------
hw.ramSize=2048
hw.lcd.width=1080
hw.lcd.height=1920
skin.name=1080x1920
hw.lcd.density=480
==============================
Device Name: Moto G7
Device RAM (Mb): 4096
Device Screen Inches: 6.2
Device Resolution: 1080x2270
Device Density: 480
---------------
hw.ramSize=4096
hw.lcd.width=1080
hw.lcd.height=2270
skin.name=1080x2270
hw.lcd.density=480
==============================
Device Name: Motorola One Zoom
Device RAM (Mb): 4096
Device Screen Inches: 6.39
Device Resolution: 1080x2340
Device Density: 480
---------------
hw.ramSize=4096
hw.lcd.width=1080
hw.lcd.height=2340
skin.name=1080x2340
hw.lcd.density=480
==============================
Device Name: Motorola One Action
Device RAM (Mb): 4096
Device Screen Inches: 6.3
Device Resolution: 1080x2520
Device Density: 480
---------------
hw.ramSize=4096
hw.lcd.width=1080
hw.lcd.height=2520
skin.name=1080x2520
hw.lcd.density=480
==============================
Device Name: OnePlus 8
Device RAM (Mb): 12288
Device Screen Inches: 6.55
Device Resolution: 1080x2400
Device Density: 480
---------------
hw.ramSize=12288
hw.lcd.width=1080
hw.lcd.height=2400
skin.name=1080x2400
hw.lcd.density=480
==============================
Device Name: OnePlus 8 Pro
Device RAM (Mb): 12288
Device Screen Inches: 6.78
Device Resolution: 1440x3168
Device Density: 480
---------------
hw.ramSize=12288
hw.lcd.width=1440
hw.lcd.height=3168
skin.name=1440x3168
hw.lcd.density=480
==============================
Device Name: Samsung Galaxy Note10
Device RAM (Mb): 8192
Device Screen Inches: 6.3
Device Resolution: 1080x2280
Device Density: 480
---------------
hw.ramSize=8192
hw.lcd.width=1080
hw.lcd.height=2280
skin.name=1080x2280
hw.lcd.density=480
==============================
Device Name: Samsung Galaxy Note10+
Device RAM (Mb): 12288
Device Screen Inches: 6.8
Device Resolution: 1440x3040
Device Density: 480
---------------
hw.ramSize=12288
hw.lcd.width=1440
hw.lcd.height=3040
skin.name=1440x3040
hw.lcd.density=480
==============================
Device Name: Samsung Galaxy S8
Device RAM (Mb): 4096
Device Screen Inches: 5.8
Device Resolution: 1440x2960
Device Density: 480
---------------
hw.ramSize=4096
hw.lcd.width=1440
hw.lcd.height=2960
skin.name=1440x2960
hw.lcd.density=480
==============================
Device Name: Samsung Galaxy S10
Device RAM (Mb): 8192
Device Screen Inches: 6.1
Device Resolution: 1440x3040
Device Density: 480
---------------
hw.ramSize=8192
hw.lcd.width=1440
hw.lcd.height=3040
skin.name=1440x3040
hw.lcd.density=480
==============================
Device Name: Samsung Galaxy S20
Device RAM (Mb): 8192
Device Screen Inches: 6.2
Device Resolution: 1440x3199
Device Density: 480
---------------
hw.ramSize=8192
hw.lcd.width=1440
hw.lcd.height=3199
skin.name=1440x3199
hw.lcd.density=480
==============================
Device Name: Samsung Galaxy S20+
Device RAM (Mb): 8192
Device Screen Inches: 6.7
Device Resolution: 1440x3200
Device Density: 480
---------------
hw.ramSize=8192
hw.lcd.width=1440
hw.lcd.height=3200
skin.name=1440x3200
hw.lcd.density=480
==============================
Device Name: Samsung Galaxy Tab S6
Device RAM (Mb): 6144
Device Screen Inches: 10.5
Device Resolution: 2560x1600
Device Density: 320
---------------
hw.ramSize=6144
hw.lcd.width=2560
hw.lcd.height=1600
skin.name=2560x1600
hw.lcd.density=320
==============================
Device Name: Samsung Galaxy Tab S6 Lite
Device RAM (Mb): 4096
Device Screen Inches: 10.4
Device Resolution: 2000x1200
Device Density: 213
---------------
hw.ramSize=4096
hw.lcd.width=2000
hw.lcd.height=1200
skin.name=2000x1200
hw.lcd.density=213
==============================
Device Name: Samsung Nexus 10
Device RAM (Mb): 2048
Device Screen Inches: 10
Device Resolution: 2560x1600
Device Density: 320
---------------
hw.ramSize=2048
hw.lcd.width=2560
hw.lcd.height=1600
skin.name=2560x1600
hw.lcd.density=320
==============================
Device Name: Xiaomi Mi 10 Pro
Device RAM (Mb): 12288
Device Screen Inches: 6.67
Device Resolution: 1080x2340
Device Density: 320
---------------
hw.ramSize=12288
hw.lcd.width=1080
hw.lcd.height=2340
skin.name=1080x2340
hw.lcd.density=320
iOS
Register an account on developer.apple.com . It’s free.
Download and install Xcode from AppStore.
Run Xcode and follow basic instructions if any. Quit Xcode.
Install Command Line Tools for Xcode that fit your Xcode version from https://developer.apple.com/download/all/ (login with your developer account)
Run Xcode and create single view project in Xcode from template.
Navigate in Xcode to devices and simulators view. Windows → Devices and Simulators (or Shift+CMD+2).
Switch to Simulators tab. Create here all the Simulators that you plan to use relatively to Mobile dropdown list in Subject 7 preferences. Names of simulators should fit dropdown names.
Now application testing in Simulators should work.
Real devices
Apple does not allow to run on real devices unsigned applications of unknown authors. We use Appium as engine for testing, it installs Appium tools on device. When you run iOS test first time (after installation or after Appium update) Appium compiles updated version of Appium driver on the fly from sources. To do so it needs developer certificate.
If you are not developer and you don’t have all the required certs and settings, you need to run Xcode and create new Single View project (or open already created project from step #5 in instructions above).
Open project Target section → Signing & Capabilities tab.
Set checkbox “Automatically manage signing”
Select the Team . First time you will need to select “Add and account…”
In the displayed popup, add the developer account you created in the beginning (sign in). As result Developer Certificate will be created. You can close accounts popup.
Now in Target → Signing & Capabilities tab you will see 2 things from certificate that you will need:
Navigate to your home folder and create file sign.xcconfig . E.g. /Users/shad0w/sign.xcconfig
Put next content inside:
DEVELOPMENT_TEAM = 5KA9C2KB6C
CODE_SIGN_IDENTITY = Apple Development
Replace values with values you have
Also in home folder create file driverOverrideBundleId . E.g. /Users/shad0w/driverOverrideBundleId
Put the only line with application Bundle ID inside like:
net.slizh.WebDriverAgentRunner
Warning!
Application name should be strongly WebDriverAgentRunner .
Domains of Bundle ID altogether should be absolutely unique and don’t correspond to real software Bundle IDs, e.g.
com.my.absolutely.unique.bundle123.WebDriverAgentRunner
Now first test case execution on this machine will take some time to compile driver on the fly, but next real device tests will go faster.