Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Прикрепление скриншотов в шаги слушателем

listeners
screenshot
steps
allure
testng
Теги: #<Tag:0x00007f7b63e697f0> #<Tag:0x00007f7b63e69688> #<Tag:0x00007f7b63e69458> #<Tag:0x00007f7b63e69318> #<Tag:0x00007f7b63e69160>

(Vasiliy Rakshin) #1

Написан специальный класс-слушатель для степов:

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());
Слушатель работает, но странно - прикрепляет скриншоты, но не к степам, а ко всему тесту.
Если есть вложенные степы, то скриншоты крепятся к родительскому степу.
Кто-нить работает со степами? Как у вас скриншоты цепляются к степам с помощью систенера?


(Dmitrii Demin) #2

Все просто - Allure вызывает ваш листенер в конце, когда уже зафиксировал окончание Step’а. В итоге скриншот лепится к тесту, а не уже завершенному степу.

Я поднимал этот вопрос на GitHub’е о том, что кастомные листнеры для finished событий нужно выполнять в первую очередь. На данный момент вопрос в процессе решения, надеюсь в ближайших версиях они сделают…

P.S. Либо можете на коленке модифицировать Allure и использовать временно версию с вашими изменениями


(Vasiliy Rakshin) #3

Спасибо за подсказку, действительно, подправил порядок вызовов ListenersNotifier для степов в классе Allure из пакета ru.yandex.qatools.allure (Allure Java Adaptor Api). Скрины стали цепляться к степам в нужном месте.


(sidelnikovmike) #4

Еще кажется можно написать аспект с помощью aspectJ, как собственно и работают в allure степы и аттачи.


(Evgeny) #5

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


(Vasiliy Rakshin) #6

Он не для ассертов, он просто для снятия скриншотов в начале степа и в конце (но при условии что степ заканчивается корректно, без ошибки), если есть ошибка при выполнении степа, то срабатывает более общий листенер.