1. Улучшение имеющегося функционала
1голос

В отчете запуска тестов не писать "Сломан" в шаге, где произошел Java exception и был успешно обработан.

отклонено

Фактическое
Пишу автотесты на  Java. В проекте с автотестами использую кастомные иксепшены, которые выбрасывают методы аннотированые @Step в момент нештатной ситуации. В стэке высзовов этот иксепшн отлавливается, обрабатывается и в результате тест может пройти успешно. В то время, как в отчете запуска теста, внутри шага, где произошел иксепшн, присутствует оранжевый блок с надписью "Сломан".

Ожидаемое
Не нужно самим делать выводы, что что-то сломано. Нужно писать именно то, что произошло - ошибка, exception и т.д.! )) А в случае, когда иксепшн произошел, не был отловлен, обработан и повлек остановку теста. Надпись "Сломан" уместно писать только в шапке самого теста.

Сценарий из практики
Например, если я использую в автотестах библиотеку Awaitility для выполнения ожиданий какого либо состояния системы, и объект Callable при каждой попытке вызова получает иксепшн и успешно его игнорирует. В результате тест проходит успешно, а внутри шагов зияют оранжевые блоки "Сломан"!


ТестОпс - Версия 5.14.0

Владимир Яковлев
Владимир Яковлев, официальный ответ
Спасибо за подробный сценарий. Здесь важный нюанс: статус «Сломан» у шага проставляет не ТестОпс, а адаптер в момент прогона — ТестОпс только отображает статус из загруженного результата как есть.
Когда метод под @Step бросает исключение, аспект allure фиксирует шаг как broken в момент выхода из метода и не может знать, что выше по стеку исключение поймают и проглотят. Поэтому «Сломан» здесь — это честный факт «шаг завершился исключением», а не вывод о всем тесте. В вашем кейсе с Awaitility/retry корень в том, что @Step стоит на коде, который штатно бросает на каждой попытке: решается на стороне автотестов (не помечать @Step ретраевые внутренности, либо использовать until(...)/ignoreExceptions() с булевым предикатом вместо бросающего Callable)
Само поведение относится к опенсорс-репозиторию allure report (https://github.com/allure-framework/allure2)