Example that shows how to implement a Selenium Grid capability matcher updated to latest version of Selenium Server (old implementation of a tutorial that can be found here). With this matcher you can use the hub for Appium Node and choose a node based on deviceName capability.
It will be placed in the target folder
$ mvn -DskipTests=true package
- Download Selenium Server 3.13
$ wget https://goo.gl/4g538W
- Start the hub with a the specific configuration
$ java -cp selenium-server-standalone-3.13.0.jar;custom-capability-matcher-1.0-SNAPSHOT.jar; org.openqa.grid.selenium.GridLauncherV3 -capabilityMatcher com.example.selenium.matcher.MobileCapabilityMatcher -role hub -debug -hubConfig hubConfig.json
- Start the
foo
node for S6 mobile phone
$ java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://localhost:4444/grid/register -nodeConfig src/main/resources/nodeConfig_foo.json
- Start the
bar
node for Nexus phone
$ java -cp selenium-server-standalone-3.13.0.jar;custom-capability-matcher-1.0-SNAPSHOT.jar; org.openqa.grid.selenium.GridLauncherV3 -role node -hub http://localhost:4444/grid/register -debug -nodeConfig nodeConfig_foo.json
$ mvn test
Change this line to see the matcher in action by:
- Either setting
deviceName
capability toS6
orNEXUS
and see the test getting executed in the desired node. - Or setting
nodeName
to a different value and seeing the Grid reject the request because no node matches the capabilities.