Playwright — это платформа для веб-тестирования и автоматизации. Он позволяет тестировать Chromium, Firefox и WebKit с помощью единого API. Playwright создан для обеспечения кросс-браузерной веб-автоматизации, которая является вечно экологичной , функциональной , надежной и быстрой .
Линукс | macOS | Окна | |
---|---|---|---|
Хром 131.0.6778.33 | ✅ | ✅ | ✅ |
Вебкит 18.0 | ✅ | ✅ | ✅ |
Фаерфокс 132.0 | ✅ | ✅ | ✅ |
Безголовое выполнение поддерживается для всех браузеров на всех платформах. Подробности смотрите в системных требованиях.
Ищете драматурга для Python, .NET или Java?
У Playwright есть собственный тестировщик для сквозных тестов, мы называем его Playwright Test.
Самый простой способ начать работу с Playwright Test — запустить команду init.
# Run from your project's root directory
npm init playwright@latest
# Or create a new project
npm init playwright@latest new-project
Это создаст файл конфигурации, при необходимости добавит примеры, рабочий процесс GitHub Action и первый тестовый файл example.spec.ts. Теперь вы можете перейти непосредственно к разделу написания утверждений.
Добавьте зависимость и установите браузеры.
npm i -D @playwright/test
# install supported browsers
npx playwright install
При желании вы можете установить только выбранные браузеры. Подробную информацию см. в разделе «Установка браузеров». Или вы можете вообще не устанавливать браузеры и использовать существующие каналы браузера.
Авто-ожидание . Драматург ждет, пока элементы станут пригодными для действия, прежде чем выполнять действия. Он также имеет богатый набор событий самоанализа. Сочетание этих двух факторов устраняет необходимость в искусственных тайм-аутах — основной причине нестабильных тестов.
Утверждения, ориентированные на Интернет . Утверждения драматурга созданы специально для динамической сети. Проверки автоматически повторяются до тех пор, пока не будут выполнены необходимые условия.
Отслеживание . Настройте стратегию повтора теста, запишите трассировку выполнения, видео и снимки экрана для устранения фейков.
Браузеры запускают веб-контент, принадлежащий разным источникам, в разных процессах. Playwright соответствует архитектуре современных браузеров и запускает тесты вне процесса. Это освобождает Playwright от типичных ограничений запуска тестов в процессе.
Несколько всего . Сценарии тестирования, охватывающие несколько вкладок, несколько источников и нескольких пользователей. Создавайте сценарии с разными контекстами для разных пользователей и запускайте их на своем сервере в рамках одного теста.
Доверенные события . Наведите курсор на элементы, взаимодействуйте с динамическими элементами управления и создавайте доверенные события. Драматург использует реальный конвейер ввода браузера, неотличимый от реального пользователя.
Тестовые кадры, пробиваем Shadow DOM. Селекторы драматурга проникают в теневой DOM и позволяют беспрепятственно вводить кадры.
Контексты браузера . Драматург создает контекст браузера для каждого теста. Контекст браузера эквивалентен совершенно новому профилю браузера. Это обеспечивает полную изоляцию тестов с нулевыми издержками. Создание нового контекста браузера занимает всего несколько миллисекунд.
Войдите в систему один раз . Сохраните состояние аутентификации контекста и повторно используйте его во всех тестах. Это обходит повторяющиеся операции входа в систему в каждом тесте, но обеспечивает полную изоляцию независимых тестов.
Кодеген . Создавайте тесты, записывая свои действия. Сохраните их на любом языке.
Драматург-инспектор . Проверяйте страницу, создавайте селекторы, пошагово проходите выполнение теста, просматривайте точки кликов и изучайте журналы выполнения.
Средство просмотра трассировки . Соберите всю информацию для расследования сбоя теста. Трассировка Playwright содержит скринкаст выполнения тестов, снимки DOM в реальном времени, проводник действий, исходный код тестов и многое другое.
Ищете драматурга для TypeScript, JavaScript, Python, .NET или Java?
Чтобы узнать, как запустить эти примеры теста драматурга, ознакомьтесь с нашей документацией по началу работы.
Этот фрагмент кода переходит на домашнюю страницу Playwright и сохраняет снимок экрана.
import { test } from '@playwright/test' ;
test ( 'Page Screenshot' , async ( { page } ) => {
await page . goto ( 'https://playwright.dev/' ) ;
await page . screenshot ( { path : `example.png` } ) ;
} ) ;
Этот фрагмент эмулирует Mobile Safari на устройстве в заданном географическом положении, переходит на сайт maps.google.com, выполняет действие и делает снимок экрана.
import { test , devices } from '@playwright/test' ;
test . use ( {
... devices [ 'iPhone 13 Pro' ] ,
locale : 'en-US' ,
geolocation : { longitude : 12.492507 , latitude : 41.889938 } ,
permissions : [ 'geolocation' ] ,
} )
test ( 'Mobile and geolocation' , async ( { page } ) => {
await page . goto ( 'https://maps.google.com' ) ;
await page . getByText ( 'Your location' ) . click ( ) ;
await page . waitForRequest ( / .*preview/pwa / ) ;
await page . screenshot ( { path : 'colosseum-iphone.png' } ) ;
} ) ;
Этот фрагмент кода переходит на сайт example.com и выполняет скрипт в контексте страницы.
import { test } from '@playwright/test' ;
test ( 'Evaluate in browser context' , async ( { page } ) => {
await page . goto ( 'https://www.example.com/' ) ;
const dimensions = await page . evaluate ( ( ) => {
return {
width : document . documentElement . clientWidth ,
height : document . documentElement . clientHeight ,
deviceScaleFactor : window . devicePixelRatio
}
} ) ;
console . log ( dimensions ) ;
} ) ;
Этот фрагмент кода настраивает маршрутизацию запросов для страницы для регистрации всех сетевых запросов.
import { test } from '@playwright/test' ;
test ( 'Intercept network requests' , async ( { page } ) => {
// Log and continue all network requests
await page . route ( '**' , route => {
console . log ( route . request ( ) . url ( ) ) ;
route . continue ( ) ;
} ) ;
await page . goto ( 'http://todomvc.com' ) ;
} ) ;