Автоматизация тест-кейса на связке Maven, Selenium, JUnit5, Allure. Документация на русском языке - согласно требованиям.
В окружении должна быть установлена (и прописана в PATH) java не ниже 11 версии и добавлена переменная среды JAVA_HOME.
./mvnw verify -DuseBrowserProfile=false
-
Если в окружении Allure не установлен:
./mvnw allure:install ./mvnw allure:serve
-
Если в окружении Allure установлен (2.24.0 и выше):
cd ./target allure serve
При запуске в CI бороться с капчами сложнее, поэтому результат оставляет желать лучшего. Тем не менее посмотреть отчет можно по этой ссылке, причем относительный интерес в нем, по понятным причинам, представляет собой только этот удачливый тест:
Как ни странно, могло быть и хуже (подробнее см. в заметке Удаленное противо-captcha-стояние).
Здесь руки не так связаны, поэтому результат соответствующий:
- Открыть браузер и развернуть на весь экран.
- Зайти на https://ya.ru/
- Нажать на строку поиска -> Кликнуть по Маркет
- Перейти в Каталог -> Навести курсор на раздел Электроника
- Выбрать раздел Смартфоны
- Задать параметр «Производитель» Apple.
- Дождаться результатов поиска.
- Убедиться, что в выборку попали только iPhone. Если страниц несколько – проверить все.
Тест должен работать для любого производителя из списка:
- ASUS
- Black Shark
- OnePlus
- Seals
Java, Junit Jupiter, Selenide, PageObject по стилю Selenide
- Тест разбит на шаги. Коллега без знаний программирования по аллюр отчету должен понимать что делает тест, какие проверки происходят
- Тест должен быть параметризован
- Необходимо использовать константы через проперти файл
- Все ассерты должны быть переопределены
- Если в коде используются циклы, необходимо исключить возможность бесконечного цикла
- Обязательно использовать Джава док для всех методов и переменных. На русском языке
- Недопустимо использования Thread.sleep и Трай\кетчи. За исключением, создания собственных ожиданий (к примеру каждый 5 миллисекунд проверяем что что-то случилось, и так не более 10 секунд.). Лучше обойтись явными\неявными ожиданиями
- Помните про универсальные методы. Старайтесь писать код, полезный в других тестах, полезный коллегам. Не будьте эгоистами!
- XPath не должен содержать индексов, динамических элементов
Раздел обновляется, а не переписывается, чтобы видеть прогресс.
- Судя по тест-кейсу при выставлении, например, производителя
Apple
наименования, содержащие подстроку "IPhone", но не содержащие подстроку "Apple", являются корректными. Автоматизированный тест не всегда соблюдает это условие - в демонстрационных целях (чтобы было видно, что тест действительно выполняет проверку, а не просто рисует отчет с зелеными галочками). - На каждой странице пагинации по товарам можно выполнять сколько угодно проверок, если
добавить их в
. "Падение" какой-либо из проверок не прерывает тест (использованы soft asserts).marketCheckAllPages()
Update. Эта ужасная функция удалена. Вместо нее использованPageableChecker
, который пора бы уже вынести в отдельный подпроект и отдельно протестировать. - Даже если среди проверок не осталось "не упавших", тест не прерывается. Проверяются все чеки на всех страницах.
Update. Чтобы использовать дефолтный "lazy" режим, достаточно убрать из теста.beLazy(false)
. В таком случае страницы проверяются пока остается хотя бы один незафейленный чек. При этом зафейленные чеки на последующих страницах не проверяются. - При наличии на странице нескольких товаров некорректных с точки зрения конкретного чека,
отчет
не говорит сколько этих товаров, не выводит их список, а сообщает о первом попавшемся.
Update. Теперь и количество сообщает. Кроме того если "плохих" элементов больше одного, помимо скриншота и веб-страницы в аттачментах появляется файл, в котором перечислены они все.
Update2. Все элементы-причины фейла всегда указываются в логах ошибки. К сожалению упавшие софт-ассерты плохо отображаются в отчете: галочки/стрелочки не меняют цвет с зеленого на красный. Пришлось тернарным оператором передавать разные сообщения для успешного и неуспешного выполнения таких ассертов (для последнего случая что-то бросающееся в глаза типа “<<< FAIL >>> Имя товара не соотв…
”).
Update. Allure действительно официально не поддерживаетsoft asserts
, но благодаря классуAllureLifeCycle
вPageableChecker
с этим справиться удалось.