Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Allure + BDD (Jbehave) + Скрины (Thucydides)

jbehave
bdd
serenity
java
allure
Теги: #<Tag:0x00007fedb96be910> #<Tag:0x00007fedb96be7a8> #<Tag:0x00007fedb96be5a0> #<Tag:0x00007fedb96be460> #<Tag:0x00007fedb96be320>

(B Mar Cg) #21

Вот таким способом так же создаются скрины, если без копирования кладутся в temp
Но заразы не аттачатся ни в какую.

    @Attachment(value = "Page screenshot", type = "image/png")
    public byte[] saveScreenAsImage() throws IOException {
        WebDriver driver = ThucydidesWebDriverSupport.getDriver();
        File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(file, new File("target\\allure-results\\" + file.getName()));
        return Files.toByteArray(file);
    }

(Sergey Korol) #22

@BMar_cg зачем вам лишнее действие с сохранением скринов в файлы, если можно напрямую byte[] отдавать Allure?

@Attachment(value = "{name}", type = "image/png")
public static byte[] attachScreenshot(String name, byte[] data) {
    return data;
}

public static byte[] takeScreenshot(String name) {
    return attachScreenshot(name, ((TakesScreenshot) getDriver()).getScreenshotAs(OutputType.BYTE));
}

P.S. С RemoteWebDriver, если ничего в новых версиях не поменялось, еще аугментация нужна.


(B Mar Cg) #23

К сожалению так не работает, пробовал по разному передавать в byte, ни скринов ни аттачей.
Потом еще буду RemoteWebDriver подключать, но пока хочу хотя бы с обычным WebDriver разобраться.


(Sergey Korol) #24

Ок, включаем режим экстрасенса. Какая версия Allure? Откуда атачи вызываются?


(B Mar Cg) #26

:grin:

Аттачи вызываются прям из AllureReporter, на каждом шаге success


<dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-java-commons</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-generator</artifactId>
            <version>2.5.0</version>
        </dependency>

   <plugin>
                <groupId>io.qameta.allure</groupId>
                <artifactId>allure-maven</artifactId>
                <version>2.9</version>
                <configuration>
                    <reportVersion>2.6.0</reportVersion>
                    <allureDownloadUrl>https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.6.0/allure-2.6.0.zip</allureDownloadUrl>
                </configuration>
                <executions>
                    <execution>
                        <id>allure-report</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    @Override
    public void successful(final String step) {
        updateStep(step);
        getLifecycle().fire(new StepFinishedEvent());
//        takeScreenshot();
        try {
            saveScreenAsImage();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    @Attachment(value = "Page screenshot", type = "image/png")
    public byte[] saveScreenAsImage() throws IOException {
        WebDriver driver = ThucydidesWebDriverSupport.getDriver();
        File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(file, new File("target\\allure-results\\" + file.getName()));
        return Files.toByteArray(file);
    }


(Sergey Korol) #27

В заголовке указан jbehave. Почему не используете специализированный адаптер? И зачем вам внутренние зависимости commons / generator?

А вообще, я вижу открытый issue о невозможности приатачить что-либо: https://github.com/allure-framework/allure-java/issues/157

У вас только скриншоты не атачатся, или любые файлы? Если любые, то надо разбираться.