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

@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 методы (настройки для драйвера)

1 лайк

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

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