Playwright — фреймворк для автоматизации браузеров¶
Playwright — это фреймворк с открытым исходным кодом для автоматизации веб-браузеров, разработанный компанией Microsoft. Он позволяет создавать скрипты для тестирования веб-приложений и выполнения браузерных задач на нескольких браузерных движках — Chromium, Firefox и WebKit — из единого API. Playwright поддерживает языки программирования TypeScript, JavaScript, Python, Java и C#, работает на Windows, Linux и macOS и ориентирован на надёжность, скорость и удобство отладки.
¶История
Playwright был создан командой, ранее работавшей над фреймворком Puppeteer в Google. После ухода из Google основатели проекта — Алексей Русаков, Дарья Ксения, Джеймс Лу, Джейсон Лейден и Павел Федосеев — присоединились к Microsoft, где в 2020 году был выпущен первый публичный релиз Playwright. Проект позиционировался как преемник Puppeteer, исправляющий его ограничения: в частности, изначальная версия Puppeteer поддерживала только Chromium, а Playwright изначально был рассчитан на мультибраузерность.
В 2021 году Microsoft выпустила Playwright для Python, а позже добавила поддержку Java и C#. В 2023 году появился Playwright для Ruby. В 2024 году вышла стабильная версия 1.44 с поддержкой новых возможностей браузеров и улучшенной трассировкой.
¶Возможности
Playwright предоставляет единый API для управления браузерами независимо от их движка. Основные возможности включают:
- Мультибраузерность — один и тот же тест может выполняться в Chromium, Firefox и WebKit без изменений.
- Автоматическое ожидание — встроенные механизмы ожидания элементов и событий устраняют необходимость в ручных задержках.
- Изоляция контекстов — каждый тест может запускаться в отдельном браузерном контексте, что ускоряет параллельное выполнение.
- Сетевые возможности — перехват и подмена сетевых запросов, эмуляция условий сети.
- Эмуляция устройств — имитация мобильных устройств, геолокации, языковых настроек.
- Действия с файлами — загрузка и скачивание файлов, работа с диалогами.
- Отладка — интеграция с инструментами разработчика, запись и воспроизведение сценариев.
¶Установка и базовое использование
Для установки Playwright через npm выполняется команда:
`` npm init playwright@latest ``
Для Python:
`` pip install playwright playwright install ``
Пример простого теста на TypeScript:
```typescript import { test, expect } from '@playwright/test';
test('главная страница открывается', async ({ page }) => { await page.goto('https://example.com'); await expect(page).toHaveTitle(/Example/); }); ```
¶Сравнение с Puppeteer
| Критерий | Playwright | Puppeteer |
|---|---|---|
| Браузеры | Chromium, Firefox, WebKit | преимущественно Chromium |
| Языки | TS, JS, Python, Java, C#, Ruby | JS, TS, Python |
| Автоожидание | встроено | частично |
| Параллельность | контексты из коробки | требует настройки |
¶Применение
Playwright широко используется для end-to-end тестирования веб-приложений, скрейпинга данных, автоматизации рутинных браузерных операций и построения инфраструктуры тестирования в CI/CD-конвейерах. Среди пользователей фреймворка — крупные технологические компании, применяющие его для проверки собственных продуктов.
¶Интересные факты
- Название Playwright отсылает к театральному термину «драматург», подчёркивая идею сценарного управления браузером.
- Playwright изначально поддерживал WebKit — движок Safari — что было нетипично для подобных инструментов на момент выхода.
- Команда разработчиков фреймворка активно участвует в стандартизации протокола CDP (Chrome DevTools Protocol) и разработке собственного протокола Playwright.
¶Источники
- Документация Playwright (playwright.dev)
- Блог Microsoft Developer
- Репозиторий проекта на GitHub (microsoft/playwright)