Автоматизированные тесты для веб-приложения Sauce Demo — интернет-магазина для тестирования.
Проект содержит E2E-тесты для проверки функционала авторизации и корзины покупок интернет-магазина Sauce Demo. Реализован на Python с использованием:
- pytest — фреймворк для написания тестов
- Selenium WebDriver — управление браузером
- Page Object Model — паттерн проектирования для организации кода
- Allure — генерация отчётов о результатах тестирования
- Docker — контейнеризация для запуска тестов в изолированной среде
├── conftest.py # Фикстуры pytest (настройка WebDriver)
├── data.py # Тестовые данные (пользователи, URL, сообщения)
├── locators.py # Локаторы элементов страниц
├── Dockerfile # Docker-образ для запуска тестов
├── requirements.txt # Python-зависимости
├── page/ # Page Object классы
│ ├── base_page.py # Базовый класс с общими методами
│ ├── login_page.py # Страница авторизации
│ └── inventory_page.py # Страница инвентаря/корзины
└── tests/ # Тестовые сценарии
└── test_saucedemo.py # Тесты авторизации и корзины
| Компонент | Версия |
|---|---|
| Python | 3.10 |
| pytest | 9.0.2 |
| selenium | 4.39.0 |
| allure-pytest | 2.15.2 |
| Google Chrome | latest (в контейнере) |
-
Создайте виртуальное окружение:
.venv\Scripts\Activate.ps1 # Windows # или source .venv/bin/activate # Linux/macOS
-
Установите зависимости:
pip install -r requirements.txt
-
Запустите тесты:
python -m pytest tests -v -s
-
Запуск с генерацией отчёта Allure:
python -m pytest tests -v -s --alluredir=allure-results allure serve allure-results
-
Соберите образ:
docker build -t test_docker_selenium . -
Запустите тесты:
docker run --rm test_docker_selenium
-
С отчётом Allure (сохранение результатов в локальную директорию):
docker run --rm -v ${PWD}/docker_results:/app/allure-results test_docker_selenium -
Просмотр результатов из контейнера:
$env:JAVA_HOME = "C:\Program Files\Java\jdk-21" # Windows (если ошибка нахождения JAVA_HOME) allure serve docker_results
| Тест | Описание | Ожидаемый результат |
|---|---|---|
test_login_user_ok |
Успешный вход с валидными учётными данными | Переход на страницу инвентаря |
test_error_password_user |
Вход с неверным паролем | Сообщение об ошибке |
test_locked_out_user |
Вход заблокированным пользователем | Сообщение о блокировке |
test_clear_username_field |
Вход с пустыми полями | Сообщение о необходимости заполнения |
test_login_glitch_user |
Вход пользователем с задержкой | Успешный вход (проверка отказоустойчивости) |
| Тест | Описание | Ожидаемый результат |
|---|---|---|
test_add_to_cart |
Добавление товара в корзину | Товар отображается в корзине |
test_remove_from_cart |
Удаление товара из корзины | Товар отсутствует в корзине |
| Пользователь | Логин | Пароль |
|---|---|---|
| standard_user | standard_user |
secret_sauce |
| locked_out_user | locked_out_user |
secret_sauce |
| performance_glitch_user | performance_glitch_user |
secret_sauce |
Все тестовые данные вынесены в файл data.py:
- DataUser — учётные данные пользователей
- DataUrl — URL-адреса страниц
- DataMessages — сообщения об ошибках
- DataInventory — названия товаров
Настройки браузера (headless-режим) находятся в conftest.py:
- Headless-режим для фонового выполнения
- Режим инкoгнито
- Размер окна: 1920x1080
- Отключение расширений и infobars
- Оптимизация для Docker (
--no-sandbox,--disable-dev-shm-usage)
# После выполнения тестов локально получаем отчет
allure generate allure-results -o allure-report
allure open allure-reportПроект создан для образовательных целей и тестирования.