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

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

screenshot
allure
Теги: #<Tag:0x00007f9c4a7215d0> #<Tag:0x00007f9c4a7213c8>

(Яна Телегина) #1

Мозно ли сделать так чтобы скриншот сделанный на каком-то шаге теста в отчетах аллюра отображался именно на этом шаге а не в аттачментах в куче.


(Vasiliy Rakshin) #2

А как у вас сделано сейчас?


(Яна Телегина) #4

ПРобовала вот так
@Attachment(value = “Page screenshot”, type = “image/png”)
public byte[] saveScreenshot(byte[] screenShot) {
return screenShot;
}

но как и где нужно вызывать этот метод чтобы скрин крепился в нужном месте не понятно
сейчас вот так - http://joxi.ru/KAxoNVjSZwD6J2
хотя скриншот делался на втором шаге


(Vasiliy Rakshin) #5
  1. Сначала надо починить взятие скриншота - вместо return screenShot;
    надо return ((TakesScreenshot) getDriver()).getScreenshotAs(OutputType.BYTES);
  2. В степе “Переход на страницу авторизации” в конце степа?

(Яна Телегина) #6
  1. что такое getDriver() идея у меня такого не находит
  2. да

(Vasiliy Rakshin) #7

Ну замените на что-то для себя, как вы драйвер получаете? Возможно, просто driver.
И ещё, укажите какие версии вы используете аллюра, плагина аллюра.


(Яна Телегина) #8

io.qameta.allure 2.9
для селенида заменила на getWebDriver() в методе выше


(Vasiliy Rakshin) #9

У вас гредл сборщик или мавен?


(Яна Телегина) #10

мавен


(Vasiliy Rakshin) #11

Ну и осталось только вам показать как настроена сама сборка отчета и какой версии плагин используете. Я про это: https://docs.qameta.io/allure/#_installation_15


(Яна Телегина) #12

<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>


(Vasiliy Rakshin) #13

Попробуйте всё-таки с последней версией <artifactId>allure-testng</artifactId> - 2.9.0
А это закомментируйте:
<configuration>
<reportVersion>2.6.0</reportVersion>
</configuration>


(Яна Телегина) #14

заменила на последнюю
а как правильно вызвать данный метод, что за массив требуется методу на вход?
можно пользоваться из любой точки кода ?
или лучше такую логику выносить в листнеры


(Vasiliy Rakshin) #15

Параметр можно удалить.
Вызываете в любом месте где вам надо - saveScreenshot();
Либо, можно добавить для него параметр String title и изменить
@Attachment(value = “Page screenshot”
на
@Attachment(value = "{0}"
Тогда вы сможете задавать отображаемое имя для скриншота.


(Vasiliy Rakshin) #16

Сначала надо проверить обычную работоспособность метода.
А потом уже можно вынести этот метод в отдельный класс где у вас всякие полезны методы для работы с драйвером, возможно он у вас там уже и создан.
А затем можно его ещё добавить в листенер для теста или шагов теста.


(Яна Телегина) #17

метод работает но

  1. с версией 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 шаге


(Vasiliy Rakshin) #18

Покажите часть кода где вы делайте скриншот в шаге.
2.7.0 ещё есть версия отчета ( <reportVersion> ), можно её попробовать


(Яна Телегина) #19

@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();
}

вот весь тест


(Vasiliy Rakshin) #20

Так поместите взятие скриншота внутрь этого шага, а не между шагами.
Логически всё у вас сейчас правильно отработало, только аллюр не умеет располагать отчет именно там где он сделан, он складывает их вниз уровня на котором был сделан.


(Яна Телегина) #21

но если я помещу его внутрь этого метода
@Step(“Процесс авторизации”)
public void avtorisation(String email,String pass) {

saveScreenshot();
}
То скриншот будет сохраняться каждый раз когда я буду вызывать этот метод из любого теста
а я хочу чтобы скриншоты в моем случае сохранялись на этом шаге именно в тех тестах в каких я укажу, а не во всех на шаге авторизации.
но раз аллюр такого не поддерживает придется перегружать метод