Здравствуйте, я уже весь запарился. Как правильно настроить параллелизацию.
Имею такой Pom.xml
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<forkMode>perthread</forkMode>
<threadCount>4</threadCount>
<parallel>methods</parallel>
<!-- <testFailureIgnore>true</testFailureIgnore> -->
<groups>${groups}</groups>
<!--<suiteXmlFiles>${fileTestNGSuite}</suiteXmlFiles>-->
<skipTests>false</skipTests>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
<!--<threadCount>4</threadCount>-->
</configuration>
Пробовал уже все возможные варианты в forMode, threadCount, parallel, forkCount.
Изнрачально было :
<configuration>
<parallel>methods</parallel>
<threadCount>4</threadCount>
</configuration>
Но у драйвера было очень странное поведение. Хоть и тесты запускались в отдельных контейнерах. Но они все равно как-то взаимодействовали друг с другом т.к ексепшены выпадали как будто 1 тест смотрит в окно другого.
Драйвер создаю вот так:
private static WebDriver driver;
public static String BROWSER = System.getProperty("browser");
private static WebDriverEventListener events = new WebDriverEventHandler();
private static ThreadLocal<WebDriver> webDriver= new ThreadLocal<>();
public static void setupDriver(String browser) throws MalformedURLException {
if (BROWSER == null) {
BROWSER = browser;
}
URL url = new URL("http://url:4444/wd/hub");
if (browser.equalsIgnoreCase(CHROME)) {
System.setProperty("webdriver.chrome.driver", CHROME_DRIVER_PATH);
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setBrowserName("chrome");
cap.setVersion("63.0");
cap.setCapability("enableVNC", true);
cap.setCapability("enableVideo", true);
driver = new EventFiringWebDriver(new RemoteWebDriver(url,cap)).register(events);
webDriver.set(driver);
Везде к драйверу обращаюсь через этот метод :
public static WebDriver getDriver() {
return webDriver.get();
}
Сам драйвер создаю в @BeforeMethod в классе от которого потом наследуются классы с тестами.
Тесты запускаю командой mvn clean test -Dgroups=auth
Так же переносил обьявление вебрдрайвера в метод setupDriver, где убирал у него статику.