After doing a lot of research on how to run Cucumber test cases in parallel, I found the following very useful article on this subject:
https://www.opencredo.com/2013/07/02/running-cucumber-jvm-tests-in-parallel/
The article has pretty good information to get you started with a multi-threaded environment, including some code that you can download from Github.
https://github.com/tristanmccarthy/Cucumber-JVM-Parallel
If I understand the article correctly, the driver must be configured to work with the grid, which allows you to run several test cases on multiple devices. After some testing with code using a chrome rib, it works as described in the article. However, once it is configured to work with the grid, test cases are no longer run in parallel. Instead, they are executed sequentially.
I currently have a Grid configured to have 1 hub and 2 nodes. Each node can have a maximum of 2 sessions at any given time.
Note. Without Cucumber, I can successfully deploy multiple test cases on multiple devices. So I donβt think the problem is with my grid setup.
Here is sample web driver related code:
static { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setJavascriptEnabled(true); capabilities.setBrowserName("chrome"); capabilities.setPlatform(Platform.ANY); try { REAL_DRIVER = new RemoteWebDriver(new URL("http://xxx.xxx.xxx.xxx:4444/wd/hub"), capabilities); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } REAL_DRIVER.manage().timeouts().pageLoadTimeout(3000, TimeUnit.SECONDS); REAL_DRIVER.manage().window().maximize(); Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); } public SharedDriver() { super(REAL_DRIVER); } @Override public void close() { if (Thread.currentThread() != CLOSE_THREAD) { throw new UnsupportedOperationException( "You shouldn't close this WebDriver. It shared and will close when the JVM exits."); } super.close(); }
I suspect that if you use more than one type of browser, you should be able to run test cases on multiple devices (1 browser per device), but in my case I use the Chrome driver. Does anyone know what can prevent the spread of test cases on multiple devices or better understand how the Grid works with cucumber? Please share any articles or information related to this issue.