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

Как сделать скриншот средствами Allure так, чтобы он отображался именно в том шаге в котором делался а не в аттачментах ко всему тесту

screenshot
allure
Теги: #<Tag:0x00007f9c4c48c700> #<Tag:0x00007f9c4c48c598>

(Михаил Новицкий) #22
@AfterMethod
    public void onTestFailure(ITestResult tr) {
        makeScreenshot();
    }

@Attachment(value = "Attachment Screenshot", type = "image/png")
    public byte[] makeScreenshot() {
        return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
    }

Попробуй вот так, в файле где у тебя описано After и before методы (настройки для драйвера)


(Михаил Братухин) #23

Проще всего сделать перегрузку метода, тем более, если вы используете один и тот же шаг в разных тестах, но ожидаете у него различное поведение, то логично, что шаги эти не одинаковы и либо должны быть разнесены, либо содержать внутри себя логику принятия решения (ветвление) добавлять снимок экрана или нет. Я иногда для перегрузки применял varags, т.е. даже новый метод писать не нужно будет, достаточно внутри одного написать логику, на дополнительный параметр, а старые останутся как были. А в тех тестах где нужно снять скриншот просто добавляете дополнительный аргумент.

@Step(“Процесс авторизации”)
public void avtorisation(String email,String pass, String... args) {
…
if (args != null && args.length==1){
saveScreenshot();
}
}