Доброго времени суток, форумчане!
У меня сложилась следующая ситуация:
В фреймворке реализован подход PageObject (в том виде, как я его понимаю ), а именно имеется 3 уровня - Test -> Steps -> Page.
В качестве инструментов использую Java, Selenide,Allure.
Сложилась ситуация, когда на уровне “Step” (методы анатированные @Step) в описанных шагах или проверках (Assert) возможны 2 варианта: 1 - все выполняется удачно; 2 - степ/ассерт падает (AssertionError).
Для обычных степов применена “проброска” ошибки, которая наследована от AssertionError. т.е. если метод описанный в степе “ломается”, то он бросает ExtendetAssertionError, который в момент “полета”, если заранее были переданы параметры, делает скриншот или аттачит текст/файл.
Труднее обстоит дело со степами, в которых делается Assert. Для реализации двух указанных выше возможных вариантов, пришлось каждый Assert обернуть в try/catch и конкретно указать что я хочу (аттач файла/скрина/текста).
Описанная выше конструкция хоть и доказала свою жизнепригодность (хотя бы в рамках тех задач, что приходилось мне решать) но, на мой взгляд, является довольно громоздкой и примитивной. На данном етапе я пытаюсь изучить что-то новое и реализовать описанный механизм более гибче о корректнее.
К примеру, по аналогии с thucydides, где ты не задумываешся о том, как пройдет степ (положительно или упадет), а просто описываеш все нужное, а при падении или удачном прохождении скриншоты делаются автоматически.
Где то интуитивно понимаю, что нужно поработать с так называемыми “листнерми”, но ничего толкового, в плане информации, найти не могу.
Прошу строго не судить, указанный подход был реализован буквально в первые месяцы мей работы и подсказать, в какю сторону копать и что конкретно можно почитать по етому вопросу.