Добрый день!
Стоит задача прикреплять Attachment’ы к отчёту Allure для упавших шагов (а не сценариев!), в зависимости от тега, которым был помечен сценарий. Например, для сценариев, помеченных тегом @frontend нужно к упавшему шагу прикреплять скриншот, а для сценариев, отмеченных тегом @backend - REST-запрос, который был отправлен серверу.
Сейчас задача решается с помощью передачи соответствующих системных свойств при запуске теста. Например, так:
mvn test -Dcucumber.options="@frontend",
и считывания данных системных свойств в процессе падения шага.
Для этого был реализован собственный Listener с переопределением метода testFailure() следующим образом:
public class CustomAllureRunListener extends AllureRunListener {
@Override
public void testFailure(Failure failure) {
super.testFailure(failure);
if (!failure.getDescription().isSuite()) {
String cucumberOptions = System.getProperty("cucumber.options");
if (cucumberOptions.contains("@frontend")) {
// делаем скриншот и прикрепляем к отчёту Allure
}
else if (cucumberOptions.contains("@backend")) {
// прикрепляем request к отчёту Allure
}
}
}
Но это решение работает только если мы передаём теги для cucumber через системные свойства. Но если мы вписываем теги в ‘@CucumberOptions(tags = {"@backend"})’, то условия, описанные выше в java-коде уже не срабатывают.
Есть какой-либо программный метод в cucumber-jvm или allure запросить, с каким тэгом был запущен данный сценарий и, соответственно, шаг в нём, чтобы реализовать условие, по которому бы формировался @Attachment, который будет прикрепляться к упавшему шагу в Allure-отчёте?
Чтобы было что-то типа:
if (failure.getTags().contains("@frontend")) {
// формируем скриншот
}