Note: This technique is confusing and slows down your test suite.
Copy the attached code to features/support
. This gets you a new Cucumber tag @no_parallel
which ensures that the tagged scenario does not run in parallel with other scenarios that are tagged with @no_parallel
. Other scenarios not tagged will @no_parallel
can still run in parallel with the tagged test. Please read the previous sentence again.
This can help when multiple test processes that access a single resource that is hard to shard per process (e.g. a search engine).
This might also be a last-resort measure to solve Selenium focus issues, but this would require you un-parallelize all @javascript
scenarios, leading to decreased performance of your test suite.
To un-parallelize all @javascript
scenarios, change the code at the bottom to this:
Around("@no_parallel, @javascript") do |scenario, block|
NO_PARALLEL_MUTEX.acquire(&block)
end