Всем доброго времени суток!
Есть некоторый опыт автоматизации на Serenity.
Попробовал написать классический тест на JUNIT для тестирования GUI на примере калькулятора, блокнота с использование winium. Тест успешно работает.
Подскажите, каким образом можно подружить Serenity и winium?
Запускаю вот так:
mvn clean integration-test serenity:aggregate -Dtestname=**/CalculatorStoryTest.java -Dwebdriver.remote.driver=winium -Dwebdriver.remote.url=http://127.0.0.1:9999
Если в коде Story использую @RunWith (SerenityParameterizedRunner.class), то тест не запускается:
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.64 sec
Если же убираю данный Runner, то тест успешно выполняется. Но отчеты, естественно не строятся.
Что посоветуете?
Я сейчас возможно глупость ляпну, но почему именно SerenityParameterizedRunner, а не просто SerenityRunner?
ThucydidesRunner тоже пробовал - не работает.
А можно посмотреть ваш pom и полный вывод при использовании SerenityParameterizedRunner
vit0r
(Viktor Hreptovich)
10.Октябрь.2017 12:42:47
#6
В Serenity нет поддержки winium, нет смысла запускать с параметрами
Dwebdriver.remote.driver=winium -Dwebdriver.remote.url=http://127.0.0.1:9999
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
<groupId>ru.*.demo-winium</groupId>
<artifactId>demo-winium</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<serenity.version>1.2.2</serenity.version>
<testname>**/*Test.java</testname>
<!-- <webdriver.driver>winium</webdriver.driver> -->
</properties>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>bintray-plugins</name>
<url>http://jcenter.bintray.com</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.48.2</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-core</artifactId>
<version>${serenity.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>com.github.2gis.winium</groupId>
<artifactId>winium-webdriver</artifactId>
<version>0.1.0-1</version>
</dependency>
<dependency>
<groupId>com.github.2gis.winium</groupId>
<artifactId>winium-elements-desktop</artifactId>
<version>0.2.0-1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>${testname}</include>
</includes>
<argLine>-Xmx512m</argLine>
<systemPropertyVariables>
<webdriver.driver>${webdriver.driver}</webdriver.driver>
</systemPropertyVariables>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin> -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<executions>
<execution>
<goals>
<goal>aggregate</goal>
<goal>fix</goal>
<goal>javadoc</goal>
<goal>test-aggregate</goal>
<goal>test-fix</goal>
<goal>test-javadoc</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.serenity-bdd.maven.plugins</groupId>
<artifactId>serenity-maven-plugin</artifactId>
<version>${serenity.version}</version>
<executions>
<execution>
<id>serenity-reports</id>
<phase>post-integration-test</phase>
<goals>
<goal>aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
А как же расширенная интеграция с другими реализациями веб драйвера?
Из официальной документации:
10. Advanced WebDriver integration
10.1. Custom WebDriver implementations
You can add your own custom WebDriver provider by implementing the DriverSource interface. First, you need to set up the following system properties (e.g. in your serenity.properties file):
webdriver.driver = provided
webdriver.provided.type = mydriver
webdriver.provided.mydriver = com.acme.MyPhantomJSDriver
thucydides.driver.capabilities = mydriver
Your custom driver must implement the DriverSource interface, as shown here:
public class MyPhantomJSDriver implements DriverSource {
@Override
public WebDriver newDriver() {
try {
DesiredCapabilities capabilities = DesiredCapabilities.phantomjs();
// Add
return new PhantomJSDriver(ResolvingPhantomJSDriverService.createDefaultService(), capabilities);
}
catch (IOException e) {
throw new Error(e);
}
}
@Override
public boolean takesScreenshots() {
return true;
}
}
This driver will now take screenshots normally.
vit0r
(Viktor Hreptovich)
11.Октябрь.2017 07:58:19
#9
Прошу прощения. Не знал, что все так серьезно.
Так какой из SerenityParameterizedRunner или SerenityRunner Вы используете?
Если SerenityParameterizedRunner, то как с инициализацией @TestData ?
SerenityParameterizedRunner.
Да очень просто.
@UseTestDataFrom (value=“DemoStoryTestData.csv”, separator=’;’)
public class DemoStoryTest {
public DemoStoryTest() {}
private String variable1;
…
private Sring variablen;
…
//геттеры
//сеттеры
}
vit0r
(Viktor Hreptovich)
12.Октябрь.2017 09:09:29
#11
Странно… Вывод результатов
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0…
Как будто у вас csv без данных.
Может попробуйте через @TestData , а не @UseTestDataFrom
А весь код теста есть возможность выложить? Мне кажется это может ускорить процесс…
Нужно использовать @TestData
Также важно определить конструктор класа через которий будут передаватся дание в тест каждий раз при запуске теста
Пример: http://thucydides.info/docs/serenity-staging/#_data_driven_tests