Я уже говорил про Allure и его удобные отчёты. Но я не говорил как им пользоваться и как его внедрить. Сегодня об этом поподробнее.
По моему примеру, мы уже умеем создавать абстрактный класс и запускать первый тест. Сейчас нам нужно научиться генерировать отчёт, но не простой, хотелось бы чтобы в нём были скриншоты и последовательность шагов, чтобы легче ход теста можно было отследить.
EventFiringWebDriver
Для логирования наших шагов наш Webdriver нужно заменить на EventFiringWebDriver. То есть в дальнейшем мы просто будем видеть куда мы нажимали на нашей странице.
Также добавим chromeoptions, они тоже очень полезны (разберём в следующих статьях), добавим их здесь, чтобы сразу показать как их инициализировать.
Класс ChromeOptions в Selenium предназначен для настройки параметров и опций, специфичных для ChromeDriver. Он позволяет управлять различными аспектами работы браузера Chrome, такими как:
- Настройки запуска: можно указать, должен ли браузер открываться в максимизированном состоянии, использовать определенный режим загрузки страницы и т.д.
- Управление расширениями: возможность отключить расширения или работать в режиме инкогнито, что предотвращает сохранение истории и файлов cookie.
- Взаимодействие с всплывающими окнами: можно настроить поведение при появлении всплывающих окон, например, отключить их или обрабатывать определенным образом.
- Получение информации о браузере: получение текущей версии браузера Chrome.
Использование класса ChromeOptions позволяет гибко настраивать поведение ChromeDriver в соответствии с требованиями вашего теста, обеспечивая более точное и предсказуемое выполнение сценариев тестирования.
Выглядеть это будет так:
Создаём отдельный класс Custom наследуем от нашего Abstract и имплементируем WebDriverEventListener, и создаём Logger для захвата наших действий, то есть прописываем:
Последовательность кликов в автотесте Allure
Затем Java предложит импортировать все элементы, с чем нужно согласиться. У нас появится множество методов, из названий которых можно понять, после какого действия произойдёт нужное событие — то, что нам понадобится.
Здесь всё зависит от вашей фантазии и знаний, но я рекомендую не усложнять и добавить в следующую аннотацию, что позволит отследить последовательность кликов в вашем автотесте.
Добавляем инициализацию Custom.
Скриншот после удачного/неудачного теста в отчёте Allure
В своей статье, как то говорил, что использование аннотации @AfterEach не очень удобно. Причина как раз таки в том, что к примеру нам нужны определённые условия только при падении теста, хотим скриншот и логи, а после удачного теста нам логи не особо то и нужны, всё же хорошо.
Поэтому создаём новый класс TestListener.
Копируем следующий код в этот класс:
public class TestListener implements TestWatcher {
@Override
public void testFailed(ExtensionContext context, Throwable cause) {
Allure.getLifecycle().addAttachment(
"Скриншот на месте падания теста", "image/png", "png",
((TakesScreenshot) Abstract.driver).getScreenshotAs(OutputType.BYTES)
);
Allure.addAttachment("Логи после падения теста: ", String.valueOf( Abstract.driver.manage().logs().get(LogType.BROWSER).getAll()));
WebDriverManager.chromedriver().quit();
Abstract.driver.quit();
}
@Override
public void testSuccessful(ExtensionContext context) {
Allure.getLifecycle().addAttachment(
"Скриншот после успешного прохождения теста", "image/png", "png",
((TakesScreenshot)Abstract.driver).getScreenshotAs(OutputType.BYTES)
);
Allure.addAttachment("Логи после успешного прохождения теста: ", String.valueOf( Abstract.driver.manage().logs().get(LogType.BROWSER).getAll()));
WebDriverManager.chromedriver().quit();
Abstract.driver.quit();
}
}
Из названия понятно, первый после падения теста, второй после успешного теста. В итоге у вас получится класс:
WebDriverManager.chromedriver().quit(); - завершаем chromedriver
Abstract.driver.quit(); - закрываем окно браузера
После этого в каждом классе с тестами нужно будет просто указывать аннотацию, чтобы отрабатывали эти методы. Не укажешь - не будут работать, всё просто.
Настройки расположения отчёта Allure
Нужно создать файл с ресурсами для определения положения наших фалов для отчёта.
Создаём папку resources и в ней файл allure.properties
Прописываем в этом файле строку - allure.results.directory=target/allure-results
Это нужно для того, чтобы Allure располагал свои результаты в target - папке, которую перед каждым запуском можно чистить с помощью команды clean.
В вайле pom.xml добавляем следующую строку:
Первый тест с отчётом Allure
Забежим немного вперёд и создадим тест с несколькими шагами которые приведут к успеху/провалу теста. После создадим отчёт и посмотрим что в итоге получилось.
Запускаем наши тесты:
Пока не обращаем внимание на сами тесты, в следующих статьях разберём всё методы подробно. Обращаем внимание только на то, что один тест успешно прошёл, другой упал.
Наши браузеры автоматически закрылись, благодаря аннотации TestListener. И теперь самое главное.
Генерация отчёта Allure
После всех тестов, открываем терминал и вводим команду:
allure generate target/allure-results --clean
Наш отчёт сформировался в папку allure-report, открываем ее и открываем файл index.html.
Скриншот после успешного теста
Скриншот после упавшего теста
Скриншоты позволяют увидеть, на каком этапе произошёл сбой теста, какие данные были введены и т. д. Логирование производится через браузер, и в этом случае ошибок не было, поэтому логи отсутствуют. После неудачного теста также доступен стек трейс — специальный трейс для отладки ошибки.
Использование Stak Trace
Копируем содержимое стек трейс, начиная с org... - переходим в Java - открываем вкладку Code - Analyze Stak Trace - Вставляем наш стек
Отображается место падения теста с номером строки, переходим и исправляем упавший тест!
Как видим Allure очень удобный инструмент, у него широкий функционал в следующих статьях разберём другие аннотации для добавления нужной информации в отчёт. Все вопросы пишите в комментариях, мы обязательно ответим!
Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!