Device Farm Diagram
First of all, you need 2 tools and mobile devices:
- Selenium Grid (http://www.seleniumhq.org/download/)
- Appium (https://bitbucket.org/appium/appium.app/downloads/)
- Mobile Devices
You have to download selenium grid and make a node as selenium grid hub.
Command => java -jar selenium-server-standalone-2.53.0.jar -port 4444 -role hub
Now navigate to http://localhost:4444/grid/console see selenium grid is functional.
Create a json file to configure the mobile devices
ssample json file,save this as deviceName.json file
{
"capabilities": [
{
"browserName":"iPad Air",
"platformName": "iOS",
"maxInstances": 1,
"deviceName":"ipad Air"
}
],
"configuration": {
"cleanUpCycle": 2000,
"timeout": 30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"host": "127.0.0.1",
"port": 4726,
"maxSession": 1,
"register": true,
"url": "http://127.0.0.1:4726/wd/hub",
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "127.0.0.1",
"hub": "127.0.0.1:4444/grid/register"
}
}
Configuration Description
host : appium server host
port : appium server port
Now you have to run the following command to start the appium server with above config
appium --session-override --nodeconfig /Users/rifad/Desktop/iPad.json -p 4726 --bootstrap-port 2252 --udid 021YHB2133086676
You can register as many devices you want.
***********************
appium Rifad$ appium --session-override --nodeconfig /Users/rifad/Desktop/iPad.json -p 4726 --bootstrap-port 2252 --udid 021YHB2133086676
[Appium] Welcome to Appium v1.6.4
[Appium] Non-default server args:
[Appium] port: 4726
[Appium] bootstrapPort: 2252
[Appium] sessionOverride: true
[Appium] nodeconfig: /Users/indikat/Desktop/orderPad.json
[Appium] udid: 021YHB2133086676
[Appium] Deprecated server args:
[Appium] -U,--udid => --default-capabilities '{"udid":"021YHB2133086676"}'
[Appium] Default capabilities, which will be added to each request unless overridden by desired capabilities:
[Appium] udid: '021YHB2133086676'
[debug] [Appium] Starting auto register thread for grid. Will try to register every 5000 ms.
[Appium] Appium REST http interface listener started on 0.0.0.0:4726
[debug] [Appium] Appium successfully registered with the grid on 127.0.0.1:4444
***********************
You can now simply choose your device from appium capabilities and run the test on the desired device.
Sample Capabilities
capabilities.setCapability(MobileCapabilityType.UDID, DEVICE_UUID); capabilities.setCapability(MobileCapabilityType.APP, APP_PATH_REALDEVICE); capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "iPad Air");//Device name in selenium grid
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, PLATFORM_NAME); capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, PLATFORM_VERSION); capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AUTOMATION_NAME); capabilities.setCapability(MobileCapabilityType.NO_RESET, true); capabilities.setCapability(MobileCapabilityType.AUTO_WEBVIEW, true); capabilities.setCapability(MobileCapabilityType.FULL_RESET, false); capabilities.setCapability(MobileCapabilityType.NO_RESET, true); capabilities.setCapability(MobileCapabilityType.NO_RESET, true);Note : This will be work on the same network or we have to disable the firewall for 4444 port if it in different network.