Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Отчёты и отладка
debugging

Отчёты и отладка

HTML-отчёты, Trace Viewer, пошаговая отладка, скринкасты, диагностика падений

Отчёты и отладка

Когда тест падает — нужно понять почему. Playwright предоставляет мощные инструменты: HTML-отчёты, Trace Viewer, видео и интерактивный инспектор.

#1. HTML-отчёт

Запуск с генерацией отчёта:

pytest tests/ --browser chromium --reporter=html

Отчёт создаётся в playwright-report/. Откройте его:

playwright show-report

Отчёт содержит:

  • Список всех тестов с статусами
  • Скриншоты (если включены)
  • Стектрейсы упавших тестов
  • Фильтрация по статусу, браузеру, тегам

#2. Trace Viewer

Trace Viewer — самый детальный инструмент отладки. Запись включается флагом:

# Запись для всех тестов pytest tests/ --tracing=on # Запись только для упавших тестов pytest tests/ --tracing=retain-on-failure # Запись только при первом повторе (с pytest-rerunfailures) pytest tests/ --tracing=on-first-retry

Просмотр trace:

npx playwright show-trace test-results/trace.zip

Trace Viewer показывает:

  • Скриншоты до и после каждого действия
  • DOM-снимки — можно инспектировать элементы на каждом шаге
  • Сетевые запросы — URL, метод, статус, тело запроса и ответа
  • Логи консоли — console.log, console.error из браузера
  • Стектрейсы — полный traceback при ошибке

#3. Пошаговая отладка через pause()

Вставьте page.pause() в любое место теста:

def test_debug_example(page): page.goto('/dashboard') page.pause() # Тест остановится здесь # Действия после pause — через Inspector page.get_by_role('button', name='Settings').click()

При запуске откроется Playwright Inspector:

pytest tests/ --headed

Inspector позволяет:

  • Выполнять действия по шагам (Step over)
  • Редактировать локаторы и проверять их
  • Выполнять произвольные команды
  • Просматривать текущий DOM

#4. Codegen для генерации кода

Codegen записывает ваши действия в код:

playwright codegen https://example.com playwright codegen --target python https://example.com

Откроется браузер. Кликайте, заполняйте — код генерируется в соседнем окне.

#5. Скриншоты при падении

# Скриншот только при падении pytest tests/ --screenshot=only-on-failure # Скриншот для каждого теста pytest tests/ --screenshot=on

Скриншоты сохраняются в test-results/ и включаются в HTML-отчёт.

#6. Видео тестов

# В conftest.py @pytest.fixture def page_with_video(browser): context = browser.new_context(record_video_dir='videos/') page = context.new_page() yield page context.close() # Видео сохраняется при закрытии контекста

Видео записывается для каждого контекста. Полезно для понимания, что происходило на странице перед падением.

#7. Отладка сетевых запросов

Просмотр всех запросов:

page.on('request', lambda req: print(f'>> {req.method} {req.url}')) page.on('response', lambda res: print(f'<< {res.status} {res.url}')) page.goto('/dashboard')

Вывод:

>> GET https://example.com/dashboard
>> GET https://example.com/api/stats
<< 200 https://example.com/dashboard
<< 500 https://example.com/api/stats

#8. Консоль браузера

Перехват console.log из браузера:

page.on('console', lambda msg: print(f'[{msg.type}] {msg.text}')) page.goto('/app') # [log] App initialized # [warning] Deprecated API used # [error] Failed to load module

#9. Диагностика «работает локально, падает в CI»

Самая частая проблема. Стратегия:

Шаг 1: Проверьте скриншоты упавшего теста в CI — что видит браузер?

Шаг 2: Откройте trace-файл в Trace Viewer — какой шаг упал? Что было в DOM?

Шаг 3: Проверьте сетевые запросы в trace — был ли ответ от API?

Шаг 4: Сравните окружения:

  • ОС (mac локально vs Linux в CI)
  • Версия Python и зависимостей
  • Переменные окружения
  • Данные в тестовой среде

Шаг 5: Запустите CI-тест локально в Docker:

docker run --rm -v $(pwd):/app -w /app python:3.12-bookworm \ bash -c "pip install -r requirements.txt && playwright install chromium && pytest tests/"

#10. Типичные ошибки

❌ page.pause() в CI. Inspector требует GUI. В headless-сервере pause() зависнет. Используйте pause() только локально.

❌ Запись trace для всех тестов в production CI. Trace-файлы большие (10-50 МБ на тест). Используйте retain-on-failure.

❌ Отсутствие артефактов при падении. Без if: always() в GitHub Actions отчёт и trace не загрузятся — вы не сможете диагностировать падение.

✅ Правильный подход: --tracing=retain-on-failure в CI, page.pause() локально, HTML-отчёт с загрузкой артефактов, Trace Viewer для детальной диагностики.


#Упражнения

  1. Запустите тест с --reporter=html и откройте отчёт через playwright show-report.
  2. Добавьте page.pause() в середину теста и попробуйте выполнить действия через Inspector.
  3. Запустите тест с --tracing=on, найдите trace-файл и откройте его в Trace Viewer.
  4. Настройте перехват сетевых запросов и логов консоли — запустите тест и изучите вывод.

#Поздравляем!

Вы прошли все 12 тем курса по Playwright. Теперь вы умеете:

  • Писать стабильные e2e-тесты с auto-waiting
  • Использовать семантические локаторы
  • Перехватывать и мокировать API
  • Сохранять и переиспользовать сессии
  • Эмулировать мобильные устройства
  • Структурировать код через Page Object Model
  • Запускать тесты в CI/CD
  • Диагностировать падения через Trace Viewer

Сдайте основной экзамен, чтобы подтвердить свои знания!