Мозно ли сделать так чтобы скриншот сделанный на каком-то шаге теста в отчетах аллюра отображался именно на этом шаге а не в аттачментах в куче.
А как у вас сделано сейчас?
ПРобовала вот так
@Attachment(value = “Page screenshot”, type = “image/png”)
public byte[] saveScreenshot(byte[] screenShot) {
return screenShot;
}
но как и где нужно вызывать этот метод чтобы скрин крепился в нужном месте не понятно
сейчас вот так - http://joxi.ru/KAxoNVjSZwD6J2
хотя скриншот делался на втором шаге
- Сначала надо починить взятие скриншота - вместо
return screenShot;
надоreturn ((TakesScreenshot) getDriver()).getScreenshotAs(OutputType.BYTES);
- В степе “Переход на страницу авторизации” в конце степа?
- что такое getDriver() идея у меня такого не находит
- да
Ну замените на что-то для себя, как вы драйвер получаете? Возможно, просто driver
.
И ещё, укажите какие версии вы используете аллюра, плагина аллюра.
io.qameta.allure 2.9
для селенида заменила на getWebDriver() в методе выше
У вас гредл сборщик или мавен?
мавен
Ну и осталось только вам показать как настроена сама сборка отчета и какой версии плагин используете. Я про это: Allure Framework
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<argLine>-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"</argLine>
<systemProperties>
<property>
<name>allure.results.directory</name>
<value>${project.build.directory}/allure-results</value>
</property>
</systemProperties>
</configuration>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>2.9</version>
<configuration>
<reportVersion>2.6.0</reportVersion>
</configuration>
</plugin>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>2.6.0</version>
</dependency>
Попробуйте всё-таки с последней версией <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 шаге
Покажите часть кода где вы делайте скриншот в шаге.
2.7.0 ещё есть версия отчета ( <reportVersion> ), можно её попробовать
@Story(“Импорт ЕС”)
@Severity(SeverityLevel.MINOR)
@Test(description = “Леон - Тула - сборный”, enabled = true, invocationCount = 1)
public void euTest2() throws Exception {
homePage.homeAgora();
homePage.authorizationPage();
saveScreenshot();
loginPage.avtorisation(userEmail, userPass);
calculationPage.openWizard();
calculationPage.switchToRus();
calculationPage.pallet(“30”, “120”, “200”, “200”, “4”);
calculationPage.from(“Польша”, “Варшава, Польша”,TransportationType.ADRESS);
calculationPage.to(“Россия”,“Тула, Россия”,TransportationType.ADRESS);
calculationPage.cookies();
calculationPage.search();
ordersPage.trueAssertion();
loginPage.out();
}
вот весь тест
Так поместите взятие скриншота внутрь этого шага, а не между шагами.
Логически всё у вас сейчас правильно отработало, только аллюр не умеет располагать отчет именно там где он сделан, он складывает их вниз уровня на котором был сделан.
но если я помещу его внутрь этого метода
@Step(“Процесс авторизации”)
public void avtorisation(String email,String pass) {
…
saveScreenshot();
}
То скриншот будет сохраняться каждый раз когда я буду вызывать этот метод из любого теста
а я хочу чтобы скриншоты в моем случае сохранялись на этом шаге именно в тех тестах в каких я укажу, а не во всех на шаге авторизации.
но раз аллюр такого не поддерживает придется перегружать метод