Всем привет!
Итак, есть, значит, желание перейти с Codeception на связку Selenide+testng+GridHub, так как Codeception не может нормально параллелиться.
Итак, есть несколько вещей, которые пока не понятно как сделать правильно
-
Как перед запуском теста залогиниться в системе? То есть стартуют тесты (class, test), открывается браузер и первое что он делает - логинится, затем идут сами тесты.
-
Я разобрался как передавать параметры в @Params через testng.xml, но так и не смог заставить selenide запускать тесты параллельно
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite 1" parllel="classes" thread-count="4">
<test name="Run in Firefox">
<parameter name ="browser" value="firefox"/>
<classes>
<class name ="tests.LoginTest"/>
<class name ="tests.Login1Test"/>
<class name ="tests.Login2Test"/>
<class name ="tests.Login3Test"/>
</classes>
</test>
<test name="Run in Chrome">
<parameter name ="browser" value="chrome"/>
<classes>
<class name ="tests.LoginTest"/>
<class name ="tests.Login1Test"/>
<class name ="tests.Login2Test"/>
<class name ="tests.Login3Test"/>
</classes>
</test>
</suite>
POM (не весь)
<dependencies>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>3.1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.8</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Сейчас сделал так:
Есть тест класс, который экстендится от Setup класса.
Setup class
public class Setup {
public WebDriver driver;
public String baseURL = "http://localhost:8080";
@Parameters({"browser"})
@BeforeMethod
public WebDriver openBrowser(String browser) throws MalformedURLException{
URL hubURL = new URL("http://localhost:4444/wd/hub");
System.out.println(browser);
if (browser.equalsIgnoreCase("firefox")) {
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
driver = new RemoteWebDriver(hubURL, capabilities);
} else if (browser.equalsIgnoreCase("chrome")) {
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
driver = new RemoteWebDriver(hubURL, capabilities);
}
System.out.println("current browser is " + browser);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebDriverRunner.setWebDriver(driver);
open(baseURL);
return driver;
}
@AfterTest
public void tearDown() {
driver.quit();
}
В такой ситуации браузеры запускаются последовательно, но тесты логинятся перед запуском самого теста.
Сильно не пинайте На яву только начал переходить.