Hello everyone, 

As the summary describes there is a big issue while trying to execute 
parallel execution along with Spock and Geb. 
As you know it Spock team introduced recently this 
feature: https://spockframework.org/spock/docs/2.0-M4/parallel_execution.html 
with nice execution modes. The problem is that when you want to use that 
feature along with GEB it will not work properly. This is my setup: 
Spock Config file contains: runner { parallel { enabled true } }
Geb Config file contains:
cacheDriverPerThread = true  
System.setProperty("webdriver.chrome.driver", "path to chromedriver.exe")
driver = {new ChromeDriver()}

Test class is a child of a custom test manager class that extends 
GebReportingSpec
Note: In the custom test manager class I used the go baseUrl to open a 
specific page.
CustomPage (e.g LoginPage) class is a child of a class manager that extends 
Page from Geb 

Now everything works as expected while I try to execute a test or multiple 
tests from a class in the traditional way (with the parallel { enabled *false 
*}) however when I enable the parallel option from the config file the 
spock tests starts in parallel BUT the GEB does not initiate the new 
browser instances, *all the tests are executed simultaneously on the same 
instance one and only leaving the new instances empty (having in the url: 
data;) or with the base url  mentioned in the GebConfig*! 
If you have cacheDriverPerThread set on false you will have the same 
behavior but without opening new browser instances.

The big question is: Was anyone able to execute parallel tests using Spock 
and GEB without having this issue? 

I tried on several devices (different configurations) with several 
parameters and configs, in the end I had the same behavior, multiple 
browser instances were opened but only one of them received the tests and 
the execution of tests was at the same time for all of them. (one test 
tring to press on the Login button, another trying to write something, 
another trying to delete something) - all this actions at the same time. 

I've verified all the subjects related to this from the stackoverflow and 
the most important containing similar subject was 
this: 
https://stackoverflow.com/questions/41897862/running-spock-tests-in-parallel

I've even wrote an email to Leonard who does some work for Spock but he 
suggested me to write the issue on stackoverflow and maybe erdi from GEB 
will have a look. 

Well I don't want to give up using this combination and I really want to 
have my tests running in parallel not via gradle but via spock along with 
GEB :) 

*Note*: If I use gradle task to execute them in parallel it will work BUT 
the execution is performed per class not per feature, so you will have 
class tests running in parallel (tests from a class will run one after 
another) not tests from a class running in parallel. And you must have the 
feature of parallel set on false in the SpockConfig file otherwise you will 
run test class in parallel and also tests from a class in parallel but with 
the issue that I've already mentioned.

The desired behavior is to be able to execute class tests in parallel AND 
tests from a class in parallel but the initialization should be performed 
for all new browser instances. 

Please have a look and please let me know if this setup works for you guys 
:)

Thanks :) 

-- 
You received this message because you are subscribed to the Google Groups "Geb 
User Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/geb-user/b807d7fa-3b64-45b7-bf3a-1830d2162752n%40googlegroups.com.

Reply via email to