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.


 


