This commit is contained in:
2026-02-14 01:35:11 +03:00
commit 895bea43d2
27 changed files with 1210 additions and 0 deletions

94
README.md Normal file
View File

@@ -0,0 +1,94 @@
# 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`.