Files
homework_1/README.md

98 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.