Можно ли выводить логи Селенида в консоль по ходу выполнения теста? если да, то как это сделать?
имею в виду логи Селенида которые отображаются в аллюр отчете:
на проекте используется maven+java+selenide+testng+allure
Можно ли выводить логи Селенида в консоль по ходу выполнения теста? если да, то как это сделать?
имею в виду логи Селенида которые отображаются в аллюр отчете:
на проекте используется maven+java+selenide+testng+allure
Готовой фичи нет. Да и зачем?
Но сделать легко.
В том же месте, где у вас прописано
SelenideLogger.addListener("AllureSelenide", ...)
Нужно добавить аналогичный код, но своим листенером:
SelenideLogger.addListener("AllureSelenide", new SelenideStepsLogger());
Который внутри очень просто реализуется:
class SelenideStepsLogger implements LogEventListener {
public void beforeEvent(com.codeborne.selenide.logevents.LogEvent logEvent) {}
public void afterEvent(com.codeborne.selenide.logevents.LogEvent logEvent) {
logger.info("Сделали то-то");
}
}
мм это немного не то что мне нужно)
в общем после прогона полного тест рана пользуемся Аллюр отчетом которого вполне хватает для всего
но еще захотелось видеть шаги по ходу выполнения теста в консоли IDE
не запаривайтесь сильно о том зачем оно мне это сложилось исторически, да и мне как-то спокойнее и удобнее видеть пробегающие шаги в консоли когда нужно проранить один тест к примеру
Спасибо большое за помощь, ваш первый ответ был абсолютно о том что нужно было)
Понятно, это я и хотел уточнить.
Я ещё пытаюсь понять, может, это для всех полезная фича, и стоит её в селенид добавить.
Вполне может быть полезной
Я неделю назад пытался отловить infinite loop с параллейным запуском
Логов по проекту крайне мало.
Чтобы стало понятно, на каком элементе было зацикливание, добавлял логирование в общие методы, которые переиспользуются в пейдж объектах
Благодаря тому, что 90% методов используют эти общие методы, зона поиска сузилась и отыскалась причина
Для нестабильных проектов, как например у нас - это неплохой способ хотя бы понимать на уровне логов, что происходит
Если изначально проект заложил хорошую базу, то там это не пригодиться. Но мне подсказывает интуиция, что преобладающее большинство проектов - это как у нас, с не очень хорошим качеством кода и т.п
Ух ты, как интересно. А как же вообще получилось сделать бесконечный цикл в тестах?
Где-то рекурсионный метод, где-то while цикл)
Например, кликать на кнопку следующей страницы до тех пор пока кол-во элементов на странице не N или пока делать пока аттрибут не поменяет свое значение + catch блоки без логов или ошибок
Одна из основных причин самом деле в тестируемом продукте
Ну и конечно качество кода автоматизации
Я осознаю масштабы появления этих проблем:
Есть где-то может клуб анонимных автоматизаторов, которые борються с этим каждый день ? =)
Да их навалом.
Собственно, этот сайт и есть такой клуб.
Есть ещё чатики в телеграме и слаке.
А как сделать так, чтобы совместить и логи теста (на пример клики) и логи приложения? Чтобы видеть, что мы кликнули на «сохранить» и ушел/пришел запрос. Такое вообще возможно ?
Попал в ситуацию, когда не дождавшись сохранения, перехожу на страницу, а данных нет. Тест падает. Такое происходит очень редко, но происходит. Долго разбирался в чем дело.
Самый простой и надёжный вариант, который мы обычно в своих тестах используем - это запускать приложение прямо из тестов. Spring boot так умеет из коробки (буквально вешаешь аннотацию типа @SpringBootTest на своих тестах).
Либо в @beforeAll
методе пишешь что-то вроде new MyApp().start();
Если у вас приложение так легко не запускается (дымящаяся кучка микросервисов, например), то придётся логи со всех сервисов сливать в один файл и сортировать по дате. Тоже делается простеньким скриптом.