2026-02-14 21:56:07 +03:00
2026-02-14 01:35:11 +03:00
2026-02-14 01:35:11 +03:00
2026-02-14 21:56:07 +03:00
2026-02-14 01:35:11 +03:00

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.38.0
  • JUnit 5
  • Cucumber (cucumber-java, cucumber-junit-platform-engine)
  • Guice
  • Jsoup
  • Checkstyle
  • SpotBugs

Реализованные BDD-сценарии

  1. Выбор браузера через feature.

    • Шаг: Дано Открыт браузер Chrome
    • Фабрика драйвера выбирается по browser property (chrome)
  2. Поиск курса по имени и случайный выбор при множественных результатах.

    • Название курса задается в feature
    • Выбирается случайный курс из найденных
    • Проверяется заголовок открытой страницы курса
  3. Поиск курсов, стартующих в указанную дату или позже.

    • Дата задается в feature (dd.MM.yyyy)
    • Выполняется фильтрация startDate >= dateFrom
    • В консоль выводится: название + дата старта
  4. Раздел «Обучение» -> «Подготовительные курсы».

    • Открывается пункт Подготовительные курсы из меню Обучение
    • При необходимости нажимается Показать еще ..., чтобы загрузить весь список
    • Из списка выбираются самый дорогой и самый дешевый
    • Выбор реализован через Stream API + filter
    • Информация о курсах выводится в консоль
  5. Общий каталог курсов: самый дорогой и самый дешевый по полной стоимости со скидкой.

    • Открывается 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 — фабрика и провайдер WebDriver
  • src/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 runner
  • src/test/java/ru/kovbasa/bdd/steps — step definitions
  • src/test/java/ru/kovbasa/bdd/hooks — lifecycle hooks

Требования к окружению

  1. Установлен JDK 21 (доступен в PATH)
  2. Установлен Google Chrome
  3. Установлен Maven 3.9+
  4. Есть доступ в интернет и к 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.
  • Для сдачи ДЗ достаточно успешного запуска mvn test.
Description
No description provided
Readme 95 KiB
Languages
Java 100%