t.me/atinfo_chat Telegram группа по автоматизации тестирования

Не могу сделать скриншот в Allure + Cucumber + Junit + Selenide

screenshot
bdd
infrastructure
reporting
cucumber
junit
java
allure
selenide
Теги: #<Tag:0x00007f21d1a05c90> #<Tag:0x00007f21d1a05b28> #<Tag:0x00007f21d1a059e8> #<Tag:0x00007f21d1a058a8> #<Tag:0x00007f21d1a05768> #<Tag:0x00007f21d1a05628> #<Tag:0x00007f21d1a054e8> #<Tag:0x00007f21d1a053a8> #<Tag:0x00007f21d1a05268>

(Vadam) #1

Добрий день,
Allure Report генерируется нормально, но вот скриншоты не делаются. Код ниже спокойно генерит скриншоты у моего коллеги с более старой версией Cucumber и Allure, у меня же он не работает

    @After  //import cucumber.api.java.After;
    public void embedScreenshot(Scenario scenario) {
        if (scenario.isFailed()) {
            try {
                File file = Screenshots.takeScreenShotAsFile();
                byte[] screenshot = Files.toByteArray(file);
                scenario.embed(screenshot, "image/png");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

POM

    <properties>
        <selenide.version>5.2.8</selenide.version>
        <chrome.version>3.141.59</chrome.version>
        <browser.name>CHROME</browser.name>
        <aspectj.version>1.9.2</aspectj.version>
        <allure.version>2.10.0</allure.version>
        <rest.assured.version>4.0.0</rest.assured.version>
        <cucumber.version>4.4.0</cucumber.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>3.11.1</version>
        </dependency>

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-cucumber4-jvm</artifactId>
            <version>${allure.version}</version>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java8</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.jasypt</groupId>
            <artifactId>jasypt</artifactId>
            <version>1.9.2</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>28.0-jre</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured -->
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>${rest.assured.version}</version>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20</version>
                <configuration>

                    <argLine>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                        -Dcucumber.options="--plugin io.qameta.allure.cucumber4jvm.AllureCucumber4Jvm"
                    </argLine>

                    <systemPropertyVariables>
                        <allure.results.directory>target/allure-results</allure.results.directory>
                    </systemPropertyVariables>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

(Vadam) #2

Кривовато, но заработало.
Добавил класс в пакет с stepdefinitions

public class ScreenShotOnFailCreator {
    @After
    public void onTestFailure(Scenario scenario) {
        if (scenario.isFailed()) {
            try {
                File screenshot = Screenshots.takeScreenShotAsFile();
                InputStream targetStream = new FileInputStream(screenshot);
                Allure.addAttachment("Screenshot on fail", "image/png", targetStream, "png");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Правда сам сриншот показывется не под конкретным степом а в секции Tear down , что хотелось бы изменить.