Skip to content

Latest commit

 

History

History
121 lines (101 loc) · 9.2 KB

README.md

File metadata and controls

121 lines (101 loc) · 9.2 KB

Автоматизация тест-кейса Яндекс Маркета

Автоматизация тест-кейса на связке Maven, Selenium, JUnit5, Allure. Документация на русском языке - согласно требованиям.

Содержание

Build

В окружении должна быть установлена (и прописана в PATH) java не ниже 11 версии и добавлена переменная среды JAVA_HOME.

Запуск:

./mvnw verify -DuseBrowserProfile=false

Сгенерировать отчет:

  • Если в окружении Allure не установлен:

    ./mvnw allure:install
    ./mvnw allure:serve
    
  • Если в окружении Allure установлен (2.24.0 и выше):

    cd ./target
    allure serve
    

Allure отчет

Запуск тестов и деплой отчета джобой (GitHub Actions)

При запуске в CI бороться с капчами сложнее, поэтому результат оставляет желать лучшего. Тем не менее посмотреть отчет можно по этой ссылке, причем относительный интерес в нем, по понятным причинам, представляет собой только этот удачливый тест:


gif-ci


Как ни странно, могло быть и хуже (подробнее см. в заметке Удаленное противо-captcha-стояние).

Запуск локально и деплой отчета руками

Здесь руки не так связаны, поэтому результат соответствующий:


gif-local


Требования

Тест кейс

  1. Открыть браузер и развернуть на весь экран.
  2. Зайти на https://ya.ru/
  3. Нажать на строку поиска -> Кликнуть по Маркет
  4. Перейти в Каталог -> Навести курсор на раздел Электроника
  5. Выбрать раздел Смартфоны
  6. Задать параметр «Производитель» Apple.
  7. Дождаться результатов поиска.
  8. Убедиться, что в выборку попали только iPhone. Если страниц несколько – проверить все.

Тест должен работать для любого производителя из списка:

  • ASUS
  • Black Shark
  • OnePlus
  • Google
  • Seals

Стек

Java, Junit Jupiter, Selenide, PageObject по стилю Selenide

Прочее

  • Тест разбит на шаги. Коллега без знаний программирования по аллюр отчету должен понимать что делает тест, какие проверки происходят
  • Тест должен быть параметризован
  • Необходимо использовать константы через проперти файл
  • Все ассерты должны быть переопределены
  • Если в коде используются циклы, необходимо исключить возможность бесконечного цикла
  • Обязательно использовать Джава док для всех методов и переменных. На русском языке
  • Недопустимо использования Thread.sleep и Трай\кетчи. За исключением, создания собственных ожиданий (к примеру каждый 5 миллисекунд проверяем что что-то случилось, и так не более 10 секунд.). Лучше обойтись явными\неявными ожиданиями
  • Помните про универсальные методы. Старайтесь писать код, полезный в других тестах, полезный коллегам. Не будьте эгоистами!
  • XPath не должен содержать индексов, динамических элементов

Особенности реализации

Раздел обновляется, а не переписывается, чтобы видеть прогресс.

  • Судя по тест-кейсу при выставлении, например, производителя Apple наименования, содержащие подстроку "IPhone", но не содержащие подстроку "Apple", являются корректными. Автоматизированный тест не всегда соблюдает это условие - в демонстрационных целях (чтобы было видно, что тест действительно выполняет проверку, а не просто рисует отчет с зелеными галочками).
  • На каждой странице пагинации по товарам можно выполнять сколько угодно проверок, если добавить их в marketCheckAllPages(). "Падение" какой-либо из проверок не прерывает тест (использованы soft asserts).
    Update. Эта ужасная функция удалена. Вместо нее использован PageableChecker, который пора бы уже вынести в отдельный подпроект и отдельно протестировать.
  • Даже если среди проверок не осталось "не упавших", тест не прерывается. Проверяются все чеки на всех страницах.
    Update. Чтобы использовать дефолтный "lazy" режим, достаточно убрать из теста .beLazy(false). В таком случае страницы проверяются пока остается хотя бы один незафейленный чек. При этом зафейленные чеки на последующих страницах не проверяются.
  • При наличии на странице нескольких товаров некорректных с точки зрения конкретного чека, отчет не говорит сколько этих товаров, не выводит их список, а сообщает о первом попавшемся.
    Update. Теперь и количество сообщает. Кроме того если "плохих" элементов больше одного, помимо скриншота и веб-страницы в аттачментах появляется файл, в котором перечислены они все.
    Update2. Все элементы-причины фейла всегда указываются в логах ошибки.
  • К сожалению упавшие софт-ассерты плохо отображаются в отчете: галочки/стрелочки не меняют цвет с зеленого на красный. Пришлось тернарным оператором передавать разные сообщения для успешного и неуспешного выполнения таких ассертов (для последнего случая что-то бросающееся в глаза типа “<<< FAIL >>> Имя товара не соотв…”).
    Update. Allure действительно официально не поддерживает soft asserts, но благодаря классу AllureLifeCycle в PageableChecker с этим справиться удалось.