public class StepListener extends LifecycleListener {
@Override
public void fire(StepStartedEvent event) {
attachScreenshotByDriver("В начале шага");
}
@Override
public void fire(StepFinishedEvent event) {
attachScreenshotByDriver("В конце шага");
}
}
Слушатель подключен к тестам (как указано в описании LifecycleListener):
Allure.LIFECYCLE.addListener(new StepListener());
Слушатель работает, но странно - прикрепляет скриншоты, но не к степам, а ко всему тесту.
Если есть вложенные степы, то скриншоты крепятся к родительскому степу.
Кто-нить работает со степами? Как у вас скриншоты цепляются к степам с помощью систенера?
Все просто - Allure вызывает ваш листенер в конце, когда уже зафиксировал окончание Step’а. В итоге скриншот лепится к тесту, а не уже завершенному степу.
Я поднимал этот вопрос на GitHub’е о том, что кастомные листнеры для finished событий нужно выполнять в первую очередь. На данный момент вопрос в процессе решения, надеюсь в ближайших версиях они сделают…
P.S. Либо можете на коленке модифицировать Allure и использовать временно версию с вашими изменениями
Спасибо за подсказку, действительно, подправил порядок вызовов ListenersNotifier для степов в классе Allure из пакета ru.yandex.qatools.allure (Allure Java Adaptor Api). Скрины стали цепляться к степам в нужном месте.
Он не для ассертов, он просто для снятия скриншотов в начале степа и в конце (но при условии что степ заканчивается корректно, без ошибки), если есть ошибка при выполнении степа, то срабатывает более общий листенер.