ПРобовала вот так @Attachment(value = “Page screenshot”, type = “image/png”)
public byte[] saveScreenshot(byte[] screenShot) {
return screenShot;
}
но как и где нужно вызывать этот метод чтобы скрин крепился в нужном месте не понятно
сейчас вот так - http://joxi.ru/KAxoNVjSZwD6J2
хотя скриншот делался на втором шаге
Попробуйте всё-таки с последней версией <artifactId>allure-testng</artifactId> - 2.9.0
А это закомментируйте:
<configuration>
<reportVersion>2.6.0</reportVersion>
</configuration>
заменила на последнюю
а как правильно вызвать данный метод, что за массив требуется методу на вход?
можно пользоваться из любой точки кода ?
или лучше такую логику выносить в листнеры
Параметр можно удалить.
Вызываете в любом месте где вам надо - saveScreenshot();
Либо, можно добавить для него параметр String title и изменить @Attachment(value = “Page screenshot”
на @Attachment(value = "{0}"
Тогда вы сможете задавать отображаемое имя для скриншота.
Сначала надо проверить обычную работоспособность метода.
А потом уже можно вынести этот метод в отдельный класс где у вас всякие полезны методы для работы с драйвером, возможно он у вас там уже и создан.
А затем можно его ещё добавить в листенер для теста или шагов теста.
с версией 2.9.0 не выходит создать отчет
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] — allure-maven:2.9:serve (default-cli) @ tests —
[INFO] Allure installation directory C:\Users\telegina\Desktop\tests/.allure
[INFO] Try to finding out allure 2.9.0
[INFO] Downloading allure commandline…
[INFO] Proxy is not specified.
[ERROR] Can’t install allure
java.io.FileNotFoundException: https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.9.0/allure-2.9.0.zip
с версией 2.6.0 работает но скриншот так же в аллюр в самом низу вот тут - http://joxi.ru/p279vOocKZkVPr
а скрин на самом деле делался после авторизации то есть на 2 шаге
Так поместите взятие скриншота внутрь этого шага, а не между шагами.
Логически всё у вас сейчас правильно отработало, только аллюр не умеет располагать отчет именно там где он сделан, он складывает их вниз уровня на котором был сделан.
но если я помещу его внутрь этого метода @Step(“Процесс авторизации”)
public void avtorisation(String email,String pass) {
…
saveScreenshot();
}
То скриншот будет сохраняться каждый раз когда я буду вызывать этот метод из любого теста
а я хочу чтобы скриншоты в моем случае сохранялись на этом шаге именно в тех тестах в каких я укажу, а не во всех на шаге авторизации.
но раз аллюр такого не поддерживает придется перегружать метод
Проще всего сделать перегрузку метода, тем более, если вы используете один и тот же шаг в разных тестах, но ожидаете у него различное поведение, то логично, что шаги эти не одинаковы и либо должны быть разнесены, либо содержать внутри себя логику принятия решения (ветвление) добавлять снимок экрана или нет. Я иногда для перегрузки применял varags, т.е. даже новый метод писать не нужно будет, достаточно внутри одного написать логику, на дополнительный параметр, а старые останутся как были. А в тех тестах где нужно снять скриншот просто добавляете дополнительный аргумент.
@Step(“Процесс авторизации”)
public void avtorisation(String email,String pass, String... args) {
…
if (args != null && args.length==1){
saveScreenshot();
}
}