Текущая настройка: maven выполняет параллельное выполнение огурца, webdriver, chromedriver для проверки моего программного обеспечения:
Maven:
<project>
...
<build>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<parallel>both</parallel>
<threadCount>3</threadCount>
<runOrder>random</runOrder>
</configuration>
</plugin>
</plugins>
</build>
</project>
Огурец:
Function: Example
Scenario: Example 1
When I do something
Then I expect something
Scenario: Example 2
When I do some other thing
Then I expect some other thing
Cucumber-JVM / Webdriver-JVM / Chromedriver:
@Before
public void setUp() {
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");
driver = new ChromeDriver(options);
driver.navigate().to(baseUrl);
}
@After
public void tearDown() {
if (driver != null) {
driver.quit();
}
}
В принципе, это прекрасно работает.Тесты выполняются параллельно и в произвольном порядке, как указано в maven pom, setUp()
вызывается перед каждым сценарием, tearDown()
вызывается после каждого сценария.
Однако ChromeDriver, по-видимому, выполняет несколько тестов в одномсеанс браузера, поэтому файлы cookie и т. д. распределяются между функциями и сценариями, что приводит к их неправильной изоляции друг от друга, что приводит к дальнейшим проблемам с файлами cookie, сеансами и т. д.
Как правильно изолировать каждый тестовый случай (сеанс ChromeDriver) при параллельном запуске Webdriver через Cucumber-JVM?