[Resolved] Как прикрепить скриншоты проваленных методов в Allure.

Ну я использую такое решение:

import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

import static <some_package>.Utils.makeScreenshot;

public class AllureOnFailListener implements ITestListener {
    @Override
    public void onTestStart(ITestResult result) {}

    @Override
    public void onTestSuccess(ITestResult result) {}

    @Override
    public void onTestFailure(ITestResult result) {
        makeScreenshot("Failure screenshot");
    }

    @Override
    public void onTestSkipped(ITestResult result) {}

    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
        makeScreenshot("Failure screenshot");
    }

    @Override
    public void onStart(ITestContext context) {}

    @Override
    public void onFinish(ITestContext context) {}
}

Где makeScreenshot(String) статик метод из Utils.

import org.openqa.selenium.OutputType;
import ru.yandex.qatools.allure.annotations.Attachment;

public final class Utils {
    private Utils() {}

    @Attachment(value = "{0}", type = "image/png")
    public static byte[] makeScreenshot(String name) {
        return (TakesScreenshot) <Thread local instance of the WebDriver>.getScreenshotAs(OutputType.BYTES);
    }
}

Дальше вешаю этот листенер в pom - surefire plugin, либо аннотирую тестовый класс @Listeners(AllureOnFailListener.class)

3 лайка

Блин - СУПЕР, я помимо того что вышло прикрепить скриншот, еще пару полезных вещей для себя нашел :slight_smile:

Еще больше Вы удивитесь, когда познаете, что можно прикрепить html страничку в виде аттача, а на ней можно сделать вообще что угодно(мы тут очень много разных форм делаем, от линковки тестов с багами до редактирования тестовых сценариев)

Теперь уже поделитесь, как вы вешаете Listenet в surfire plugin. У вас тесты выполняются по команде mvn test? Точнее в фазе test?

А зачем гадить лишними строками в ваш пом файл?
TestNG - разве так подключать не удобнее?

Ну тут уже, как говориться, “на вкус и цвет”.

Ну, например, есть обсуждение на этом же форуме

И все таки, коллеги. Если снимать скриншоты расставляя вызов метода

@Attachment(value = "PNG Attachment", type = "image/png")
public byte[] createAttachment() {
    return captureScreenShot();
}

Можно ли как то в allure присвоить ему уникальное имя - например Searh, Change и прочее - что бы в отчете - видеть к какой именно операции относится скриншот. При том, что тестовый метод всегда называется одинаково - используется DataProvider.

Сорри, вроде увидел. Осталось только прикрутить проверку на driver == null)

Хотя теперь возникла проблема вот такая

ClassCastException: java.lang.Double cannot be cast to java.lang.Long

Насколько я понимаю, при удаленном запуске IE просто не может снять скриншот.

Указанный эксепшен совсем не связан со скриншотами. Заводите новою тему с описанием проблемы.
П.С. Текущую тему закрываю, т.к. ответы были даны на любой вкус и цвет.

1 лайк