Автоматизированный тестовый фреймворк на базе Playwright для Python с использованием Page Object Model (POM) паттерна.
- Что такое Playwright?
- Структура проекта
- Установка
- Запуск тестов
- Полезные команды
- Полезные ссылки
- Архитектура
Playwright — это современный фреймворк для автоматизации тестирования веб-приложений, разработанный Microsoft. Он позволяет автоматизировать браузеры Chromium, Firefox и WebKit через единый API.
- ✅ Кросс-браузерное тестирование — поддержка Chromium, Firefox и WebKit
- ✅ Автоматическое ожидание — встроенные умные ожидания элементов
- ✅ Быстрая работа — параллельное выполнение тестов
- ✅ Мощные возможности — перехват сетевых запросов, моки, скриншоты, видео
- ✅ Отладка — встроенный trace viewer для анализа выполнения тестов
- ✅ Надежность — автоматические повторные попытки и ожидания
git clone <repository-url>
cd getting-started-python-playwrightpip install -r requirements.txt# Установка всех браузеров
playwright install
# Установка только Chromium
playwright install chromium
# Установка браузеров с системными зависимостями
playwright install --with-deps# Запуск всех тестов
pytest
# Запуск с подробным выводом
pytest -v
# Запуск конкретного тестового файла
pytest tests/test_todo.py
# Запуск конкретного теста
pytest tests/test_todo.py::test_new_year_checklist
# Запуск тестов по маркерам
pytest -m plw# Запуск с открытым браузером
pytest --headed
# Запуск конкретного теста с браузером
pytest tests/test_todo.py::test_new_year_checklist --headed# Запуск с включенным трейсингом (для отладки)
pytest -m plw --headed --tracing on
# Запуск с трейсингом и скриншотами
pytest -m plw --headed --tracing on --screenshot on
# Запуск с трейсингом, скриншотами и видео (сохраняется при падении)
pytest -m plw --headed --tracing on --screenshot on --video retain-on-failure# Генерация отчета Allure
pytest --alluredir=allure-results
# Просмотр отчета Allure
allure serve allure-results
# Генерация статического отчета
allure generate allure-results -o allure-report --clean# Запуск с остановкой на breakpoint
pytest tests/test_example.py::test_todo_add_item --headed --pdb
# Запуск с максимальным выводом
pytest -vvv --tb=short
# Запуск только упавших тестов из предыдущего запуска
pytest --lf # last failed# Запуск тестов в конкретном браузере
pytest --browser chromium
pytest --browser firefox
pytest --browser webkit
# Запуск во всех браузерах
pytest --browser allПосле запуска тестов с --tracing on, trace файлы сохраняются в test-results/. Для просмотра:
# Открыть trace viewer
playwright show-trace test-results/path/to/trace.zip# Удаление папки с результатами
rm -rf test-results/
# Удаление кэша pytest
rm -rf .pytest_cache/- Playwright для Python — официальная документация Playwright для Python
- Playwright API Reference — справочник API
- Playwright Best Practices — лучшие практики использования
- Playwright GitHub — репозиторий на GitHub
- Playwright Getting Started — руководство для начинающих
- Playwright Test Generator — генератор кода тестов
- Playwright Inspector — инструмент для отладки
- Playwright VS Code Extension — расширение для VS Code
- Playwright Trace Viewer — просмотр трейсов выполнения тестов
- Playwright Discord — Discord сообщество
- Stack Overflow - Playwright — вопросы и ответы
- Playwright YouTube Channel — видео туториалы
- Pytest Documentation — документация pytest
- Allure Framework — фреймворк для отчетов
- Page Object Model Pattern — паттерн Page Object Model
Проект использует паттерн Page Object Model для организации кода:
- Pages (
pages/) — классы, представляющие страницы приложения - Helpers (
helpers/) — вспомогательные утилиты и настройки - Tests (
tests/) — тестовые сценарии
Все URL проекта хранятся в helpers/settings.py в виде ENUM:
from helpers.settings import URLs
# Использование
page.goto(URLs.DEMO_TODOMVC.value)conftest.py— содержит общие фикстуры pytest- Автоматическое создание скриншотов при падении тестов
- Интеграция с Allure для отчетов
- Playwright — автоматизация браузеров
- Pytest — фреймворк для тестирования
- Allure — генерация отчетов
- axe-playwright-python — тестирование доступности (accessibility)