Appium & grid - mixing appium servers (multiple instances)


i need some clarification regarding what is now possible / recommended with the latest appium (from 1.5 to 1.6.1-beta),
regarding parallel execution on grid (android real devices).

this is what i did in terms of configurations and i experience many problems but just to make sure the config is right:

  • multiple appium servers running on windows machine with nodeConfig JSON to connect to the grid , each with different port, bootstrap port, chromedriver port, temp dir, each with udid of different device.
  • running cucumber (parallel mode using maven plugin) + selenium to connect with AppiumDriver to the grid url with matching capabilities of the Appium servers but WITHOUT udid.

note: as far as i understand cucumber-parallel maven plugin will use separate JVM for each set of tests (feature file), thus making driver objects totally separate between the parallel executions.

is this legit ?
if i just want to run parallel on any devices connected to the Grid (appium servers) , is it possible to do so without knowing the UDID in the tests ?

i can’t make a the grid to stick to a specific appium server according to UDID/DeviceName.
it always load balances between two registered appium servers no matter which capabilities i pass.
the appium servers however DO work with the correct device specified (UDID).


Maybe sounds not relevant, just wondering have any of your methods static?

Hi Sethu,

the driver is static and some methods in our infrastructure are indeed static.
debugging shows that driver creation and close (quit) is done in time.

just to clarify, when i said that the grid “mixes” the appium servers, it was when running a single test from the IDE every time, with the same UDID/Device Name capability. so i think in that case static methods/objects wont have any affect.


problem of forwarding a session to specific appium node solved by using “applicationName” capability as discussed in this helpful thread:

now the problem is how to populate this capability when doing parallel execution (using cucumber and cucumber-jvm-parallel-plugin).

any ideas?