OTUS Selenium Homework 2 (BDD + Cucumber)
Цель проекта
Реализовать BDD-подход на https://otus.ru с использованием Selenium WebDriver 4+, Cucumber (русские feature), JUnit 5, Guice DI, listeners, Stream API, Jsoup и проверок качества (Checkstyle + SpotBugs).
Стек технологий
- Java 21
- Maven
- Selenium
4.40.0 - JUnit
5.14.2+ JUnit Platform Suite1.14.2 - Cucumber (
cucumber-java7.34.2,cucumber-junit-platform-engine7.34.2) - Guice
7.0.0 - Jsoup
1.22.1 - Guava
33.5.0-jre - SLF4J
2.0.17 - Logback
1.5.31 - Checkstyle
- SpotBugs
Реализованные BDD-сценарии
-
Выбор браузера через feature.
- Шаг:
Дано Открыт браузер Chrome - Фабрика драйвера выбирается по
browserproperty (chrome)
- Шаг:
-
Поиск курса по имени и случайный выбор при множественных результатах.
- Название курса задается в feature
- Выбирается случайный курс из найденных
- Проверяется заголовок открытой страницы курса
-
Поиск курсов, стартующих в указанную дату или позже.
- Дата задается в feature (
dd.MM.yyyy) - Выполняется фильтрация
startDate >= dateFrom - В консоль выводится: название + дата старта
- Дата задается в feature (
-
Раздел «Обучение» -> «Подготовительные курсы».
- Открывается пункт
Подготовительные курсыиз менюОбучение - При необходимости нажимается
Показать еще ..., чтобы загрузить весь список - Из списка выбираются самый дорогой и самый дешевый
- Выбор реализован через Stream API +
filter - Информация о курсах выводится в консоль
- Открывается пункт
-
Общий каталог курсов: самый дорогой и самый дешевый по полной стоимости со скидкой.
- Открывается
https://otus.ru/catalog/courses - Для каждого курса берется цена сравнения:
- В приоритете
Полная->Полная стоимость со скидкой - Для упрощенных online-страниц используется fallback по видимой цене
- Через
filterвыбираются max/min, результат выводится в консоль
- Открывается
Архитектура
- 2-уровневый тест-дизайн:
BDD steps+page objects - DI через Guice для step definitions и страниц
- Фабрика драйвера:
DriverFactory(интерфейс)ChromeDriverFactory(реализация)WebDriverProvider(жизненный цикл драйвера + декоратор listener)
- Подсветка через listener:
- Подсветка ставится в
beforeClick - Снимается в
afterClick - Стиль элемента возвращается в исходное состояние
- Подсветка ставится в
Структура проекта
src/main/java/ru/kovbasa/config— DI-конфигурацияsrc/main/java/ru/kovbasa/driver— фабрика и провайдер WebDriversrc/main/java/ru/kovbasa/listeners— listener подсветкиsrc/main/java/ru/kovbasa/pages— Page Object классыsrc/main/java/ru/kovbasa/elements— типизированные UI-элементыsrc/test/resources/features—.featureфайлы (русский язык)src/test/java/ru/kovbasa/bdd— Cucumber runnersrc/test/java/ru/kovbasa/bdd/steps— step definitionssrc/test/java/ru/kovbasa/bdd/hooks— lifecycle hooks
Требования к окружению
- Установлен JDK 21 (доступен в
PATH) - Установлен Google Chrome
- Установлен Maven 3.9+
- Есть доступ в интернет и к
otus.ru(тесты запускаются на живом сайте)
Запуск
1. Запуск всех тестов
mvn test
2. Запуск конкретного Cucumber runner
mvn "-Dtest=ru.kovbasa.bdd.CucumberTest" test
3. Локальная полная проверка (необязательно для сдачи ДЗ)
mvn verify
Параметры запуска
Пробрасываются через Maven Surefire:
base.url(по умолчаниюhttps://otus.ru)course.name(по умолчаниюPython Developer)browser(по умолчаниюchrome)
Пример переопределения:
mvn "-Dbrowser=chrome" "-Dcourse.name=Python" test
Quality Gates
- Checkstyle и SpotBugs выполняются в фазе
verify(опционально)
Примечания
- Тесты зависят от текущей верстки/контента
otus.ru. - По умолчанию в
mvn testзапускается толькоCucumberTest.
Description
Languages
Java
100%