# OTUS Selenium Homework 1 ## Цель проекта Автоматизировать 3 UI-сценария на `https://otus.ru` с использованием Selenium WebDriver 4+, JUnit 5, Guice DI, listeners, Stream API, Jsoup и обязательных проверок качества (Checkstyle + SpotBugs). ## Стек технологий - Java 21 - Maven - Selenium `4.38.0` - WebDriverManager `6.3.3` - JUnit 5 - Guice - Jsoup - Checkstyle - SpotBugs ## Реализованные сценарии 1. Поиск курса по имени. - Открытие каталога `https://otus.ru/catalog/courses` - Поиск курса по имени через Stream API - Клик по плитке курса - Проверка заголовка открытого курса 2. Самые ранние/поздние курсы по дате старта. - Открытие каталога `https://otus.ru/catalog/courses` - Поиск ранних и поздних курсов через Stream API + `reduce` - При совпадении дат проверяются все курсы с этой датой - Проверка названия и даты старта на странице курса через Jsoup 3. Случайная категория с главной страницы. - Открытие `https://otus.ru` - Открытие меню «Обучение» - Выбор случайной категории - Проверка, что открыта корректная категория ## Архитектура - 2-уровневый тест-дизайн: `tests` + `page objects` - DI через Guice для тестов и страниц - JUnit 5 Extension (`GuiceExtension`), без базового класса-теста - Фабрика драйвера: - `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/java/ru/kovbasa/config` — JUnit extension для DI - `src/test/java/ru/kovbasa/tests` — автотесты ## Требования к окружению 1. Установлен JDK 21 (доступен в `PATH`) 2. Установлен Google Chrome 3. Установлен Maven 3.9+ 4. Есть доступ в интернет и к `otus.ru` (тесты запускаются на живом сайте) ## Запуск ### 1. Запуск только тестов ```bash mvn test ``` ### 2. Полная проверка (тесты + Checkstyle + SpotBugs) ```bash mvn verify ``` ### 3. Запуск отдельного тестового класса ```bash mvn "-Dtest=ru.kovbasa.tests.CourseSearchTest" test ``` ## Параметры запуска Пробрасываются через Maven Surefire: - `base.url` (по умолчанию `https://otus.ru`) - `course.name` (по умолчанию `Python Developer`) Пример переопределения: ```bash mvn "-Dcourse.name=Python Developer" test ``` ## Quality Gates - Checkstyle и SpotBugs выполняется в фазе `verify` ## Примечания - Тесты зависят от текущей верстки/контента `otus.ru`.