98 lines
4.0 KiB
Markdown
98 lines
4.0 KiB
Markdown
# OTUS Selenium Homework 1
|
||
|
||
## Цель проекта
|
||
Автоматизировать 3 UI-сценария на `https://otus.ru` с использованием Selenium WebDriver 4+, JUnit 6, Guice DI, listeners, Stream API, Jsoup и обязательных проверок качества (Checkstyle + SpotBugs).
|
||
|
||
## Стек технологий
|
||
- Java 21
|
||
- Maven
|
||
- Selenium `4.40.0`
|
||
- WebDriverManager `6.3.3`
|
||
- JUnit `6.0.2`
|
||
- Guice `7.0.0`
|
||
- Jsoup `1.22.1`
|
||
- Guava `33.5.0-jre`
|
||
- SLF4J `2.0.17`
|
||
- Logback `1.5.31`
|
||
- 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 6 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`.
|