Отладка тестов
Отладчик VS Code
Мы рекомендуем использовать расширение VS Code для отладки, чтобы улучшить опыт разработки. С помощью расширения VS Code вы можете отлаживать свои тесты прямо в VS Code, видеть сообщения об ошибках, устанавливать точки останова и пошагово проходить тесты.

Сообщения об ошибках
Если ваш тест не прошел, VS Code покажет вам сообщения об ошибках прямо в редакторе, показывая, что ожидалось, что было получено, а также полный журнал вызовов.

Живая отладка
Вы можете отлаживать свой тест в реальном времени в VS Code. После запуска теста с установленной опцией Show Browser
, нажмите на любой из локаторов в VS Code, и он будет выделен в окне браузера. Playwright также покажет вам, если есть несколько совпадений.

Вы также можете редактировать локаторы в VS Code, и Playwright покажет вам изменения в реальном времени в окне браузера.

Выбор локатора
Выберите локатор и скопируйте его в свой тестовый файл, нажав кнопку Pick locator на боковой панели тестирования. Затем в браузере нажмите на нужный элемент, и он появится в поле Pick locator в VS Code. Нажмите 'enter' на клавиатуре, чтобы скопировать локатор в буфер обмена, а затем вставьте его в код. Или нажмите 'escape', если хотите отменить.

Playwright проанализирует вашу страницу и выберет лучший локатор, отдавая приоритет ролям, тексту и тестовым id локаторам. Если Playwright найдет несколько элементов, соответствующих локатору, он улучшит локатор, чтобы сделать его устойчивым и уникально идентифицировать целевой элемент, чтобы вам не пришлось беспокоиться о сбоях тестов из-за локаторов.
Запуск в режиме отладки
Чтобы установить точку останова, нажмите рядом с номером строки, где вы хотите установить точку останова, пока не появится красная точка. Запустите тесты в режиме отладки, щелкнув правой кнопкой мыши на строке рядом с тестом, который вы хотите запустить.

Откроется окно браузера, и тест будет запущен и приостановлен в месте, где установлена точка останова. Вы можете пошагово проходить тесты, приостанавливать тест и перезапускать тесты из меню в VS Code.

Отладка в разных браузерах
По умолчанию отладка выполняется с использованием профиля Chromium. Вы можете отлаживать свои тесты в разных браузерах, щелкнув правой кнопкой мыши на значке отладки на боковой панели тестирования и выбрав опцию 'Select Default Profile' из выпадающего списка.

Затем выберите тестовый профиль, который вы хотите использовать для отладки своих тестов. Каждый раз, когда вы запускаете тест в режиме отладки, будет использоваться выбранный вами профиль. Вы можете запускать тесты в режиме отладки, щелкнув правой кнопкой мыши на номере строки, где находится ваш тест, и выбрав 'Debug Test' из меню.

Чтобы узнать больше об отладке, см. Отладка в Visual Studio Code.
Playwright Inspector
Playwright Inspector — это графический инструмент, который поможет вам отлаживать ваши тесты Playwright. Он позволяет пошагово проходить тесты, в реальном времени редактировать локаторы, выбирать локаторы и просматривать журналы доступности.

Запуск в режиме отладки
Запустите свои тесты с флагом --debug
, чтобы открыть инспектор. Это настраивает Playwright для отладки и открывает инспектор. Дополнительно полезные настройки по умолчанию конфигурируются при использовании --debug
:
- Браузеры запускаются в режиме с интерфейсом
- Тайм-аут по умолчанию устанавливается на 0 (= без тайм-аута)
Отладка всех тестов во всех браузерах
Чтобы отладить все тесты, выполните команду тестирования с флагом --debug
. Это запустит тесты по одному и откроет инспектор и окно браузера для каждого теста.
npx playwright test --debug
Отладка одного теста во всех браузерах
Чтобы отладить один тест на определенной строке, выполните команду тестирования, указав имя тестового файла и номер строки теста, который вы хотите отладить, с последующим флагом --debug
. Это запустит один тест в каждом браузере, настроенном в вашем playwright.config
, и откроет инспектор.
npx playwright test example.spec.ts:10 --debug
Отладка в конкретном браузере
В Playwright вы можете настроить проекты в вашем playwright.config
. После настройки вы можете отлаживать свои тесты в конкретном браузере или мобильном представлении, используя флаг --project
, за которым следует имя проекта, настроенного в вашем playwright.config
.
npx playwright test --project=chromium --debug
npx playwright test --project="Mobile Safari" --debug
npx playwright test --project="Microsoft Edge" --debug
Отладка одного теста в конкретном браузере
Чтобы запустить один тест в конкретном браузере, добавьте имя тестового файла и номер строки теста, который вы хотите отладить, а также флаг --project
, за которым следует имя проекта.
npx playwright test example.spec.ts:10 --project=webkit --debug
Пошаговое выполнение тестов
Вы можете воспроизводить, приостанавливать или пошагово выполнять каждое действие вашего теста, используя панель инструментов в верхней части Inspector. Вы можете видеть текущее действие, выделенное в тестовом коде, и соответствующие элементы, выделенные в окне браузера.

Запуск теста с определенной точки останова
Чтобы ускорить процесс отладки, вы можете добавить метод page.pause() в ваш тест. Таким образом, вам не придется пошагово проходить каждое действие вашего теста, чтобы добраться до точки, где вы хотите отладить.
await page.pause();
После добавления вызова page.pause()
, запустите ваши тесты в режиме отладки. Нажатие кнопки "Resume" в Inspector выполнит тест и остановится только на page.pause()
.

Редактирование локаторов в реальном времени
Во время работы в режиме отладки вы можете редактировать локаторы в реальном времени. Рядом с кнопкой 'Pick Locator' есть поле, показывающее локатор, на котором тест приостановлен. Вы можете редактировать этот локатор прямо в поле Pick Locator, и соответствующие элементы будут выделены в окне браузера.

Выбор локаторов
Во время отладки вам может понадобиться выбрать более устойчивый локатор. Вы можете сделать это, нажав на кнопку Pick Locator и наведя курсор на любой элемент в окне браузера. При наведении курсора на элемент вы увидите код, необходимый для нахождения этого элемента, выделенный ниже. Нажатие на элемент в браузере добавит локатор в поле, где вы затем можете либо настроить его, либо скопировать в ваш код.

Playwright проанализирует вашу страницу и выберет лучший локатор, отдавая приоритет ролям, тексту и тестовым id локаторам. Если Playwright найдет несколько элементов, соответствующих локатору, он улучшит локатор, чтобы сделать его устойчивым и уникально идентифицировать целевой элемент, чтобы вам не пришлось беспокоиться о сбоях тестов из-за локаторов.
Журналы доступности
К моменту, когда Playwright приостановился на действии клика, он уже выполнил проверки доступности, которые можно найти в журнале. Это может помочь вам понять, что произошло во время вашего теста и что Playwright сделал или пытался сделать. Журнал сообщает вам, был ли элемент видимым, включенным и стабильным, разрешился ли локатор в элемент, прокрутился ли он в видимую область и многое другое. Если доступность не может быть достигнута, действие будет показано как ожидающее.

Trace Viewer
Trace Viewer Playwright — это графический инструмент, который позволяет вам исследовать записанные трассы ваших тестов Playwright. Вы можете перемещаться вперед и назад через каждое действие на левой стороне и визуально видеть, что происходило во время действия. В центре экрана вы можете видеть снимок DOM для действия. На правой стороне вы можете видеть детали действия, такие как время, параметры, возвращаемое значение и журнал. Вы также можете исследовать сообщения консоли, сетевые запросы и исходный код.
Чтобы узнать больше о том, как записывать трассы и использовать Trace Viewer, ознакомьтесь с руководством Trace Viewer.
Инструменты разработчика браузера
При запуске в режиме отладки с PWDEBUG=console
объект playwright
доступен в консоли инструментов разработчика. Инструменты разработчика могут помочь вам:
- Исследовать дерево DOM и находить селекторы элементов
- Смотреть журналы консоли во время выполнения (или узнать, как читать журналы через API)
- Проверять сетевую активность и другие функции инструментов разработчика
Это также установит тайм-ауты по умолчанию в Playwright на 0 (= без тайм-аута).

Чтобы отладить ваши тесты с использованием инструментов разработчика браузера, начните с установки точки останова в вашем тесте, чтобы приостановить выполнение, используя метод page.pause().
await page.pause();
После того, как вы установили точку останова в вашем тесте, вы можете запустить ваш тест с PWDEBUG=console
.
- Bash
- PowerShell
- Batch
PWDEBUG=console npx playwright test
$env:PWDEBUG="console"
npx playwright test
set PWDEBUG=console
npx playwright test
Как только Playwright запустит окно браузера, вы можете открыть инструменты разработчика. Объект playwright
будет доступен в панели консоли.
playwright.$(selector)
Запрос селектора Playwright, используя фактический механизм запроса Playwright, например:
playwright.$('.auth-form >> text=Log in');
<button>Log in</button>
playwright.$$(selector)
То же, что и playwright.$
, но возвращает все соответствующие элементы.
playwright.$$('li >> text=John')
[<li>, <li>, <li>, <li>]
playwright.inspect(selector)
Показать элемент в панели Elements.
playwright.inspect('text=Log in')
playwright.locator(selector)
Создать локатор и запросить соответствующие элементы, например:
playwright.locator('.auth-form', { hasText: 'Log in' });
Locator ()
- element: button
- elements: [button]
playwright.selector(element)
Генерирует селектор для данного элемента. Например, выберите элемент в панели Elements и передайте $0
:
playwright.selector($0)
"div[id="glow-ingress-block"] >> text=/.*Hello.*/"
Подробные журналы API
Playwright поддерживает подробное ведение журналов с помощью переменной окружения DEBUG
.
- Bash
- PowerShell
- Batch
DEBUG=pw:api npx playwright test
$env:DEBUG="pw:api"
npx playwright test
set DEBUG=pw:api
npx playwright test
Для WebKit: запуск WebKit Inspector во время выполнения предотвратит дальнейшее выполнение скрипта Playwright и сбросит предварительно настроенный пользовательский агент и эмуляцию устройства.
Режим с интерфейсом
По умолчанию Playwright запускает браузеры в безголовом режиме. Чтобы изменить это поведение, используйте headless: false
в качестве параметра запуска.
Вы также можете использовать опцию slowMo, чтобы замедлить выполнение (на N миллисекунд на операцию) и следить за процессом отладки.
// Chromium, Firefox, или WebKit
await chromium.launch({ headless: false, slowMo: 100 });