Prog Academy
RU UA
QA и тестирование

Что такое Playwright?

Playwright — современный инструмент Microsoft для автоматизации браузеров и E2E-тестирования. Он управляет Chromium, Firefox и WebKit одним API и из коробки решает главную боль автотестов — нестабильность из-за таймингов.

Ключевая особенность — автоожидания: перед действием Playwright сам дожидается, пока элемент появится и станет кликабельным. Это убирает ручные паузы, из-за которых тесты падают через раз без всякой причины.

В комплекте идут удобные инструменты: запись сценария кликами, трассировка упавшего теста с историей шагов и скриншотами, параллельный запуск, перехват сетевых запросов. Пишут тесты чаще всего на TypeScript или Python.

Где применяется

Playwright чаще выбирают в продуктовых командах и новых проектах, где фронтенд написан на JavaScript или TypeScript: тесты живут в том же репозитории и на том же языке, что и приложение. Один набор проверок при этом выполняется в Chromium, Firefox и WebKit без переписывания.

Помимо самих тестов инструмент закрывает и смежные задачи: запись сценария по действиям в браузере, отладка с пошаговым просмотром, трассировка с видео и снимками экрана при падении, подмена сетевых запросов и эмуляция мобильных устройств. Это заметно сокращает время на разбор нестабильных прогонов.

Пример

Тест открывает каталог, применяет фильтр по цене и проверяет, что в выдаче не осталось товаров дороже заданной суммы. Ожидание появления обновлённого списка происходит автоматически — писать паузы вручную не приходится.

import { test, expect } from '@playwright/test';

test('submits a consultation request', async ({ page }) => {
  await page.goto('/ru/glossary');

  await page.getByRole('button', { name: 'Записаться' }).click();
  await page.getByLabel('Имя').fill('Анна');
  await page.getByLabel('Телефон').fill('+380991234567');
  await page.getByRole('button', { name: 'Отправить' }).click();

  await expect(page.getByText('Спасибо за заявку')).toBeVisible();
});
Проверка формы на Playwright: встроенные ожидания снимают необходимость в паузах.

Playwright или Selenium

Selenium — отраслевой стандарт с максимальной поддержкой языков и браузеров, чаще встречается в крупных и давних проектах, особенно на Java. Playwright моложе, быстрее в запуске и стабильнее по умолчанию, поэтому его чаще выбирают в новых проектах. Для карьеры в QA Automation полезно знать оба.

Частые вопросы

Чем Playwright лучше Selenium?

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

На каких языках можно писать тесты?

Официально поддерживаются TypeScript и JavaScript, Python, Java и C#. Наиболее полно и раньше всего возможности выходят в версии для TypeScript — именно её использует большинство команд и большая часть документации и примеров в сети.

Подходит ли Playwright для тестирования API?

Да, в нём есть встроенный клиент для HTTP-запросов. Это удобно в смешанных сценариях: подготовить данные запросом к API, а затем проверить, как они отображаются в интерфейсе. Для полноценного набора API-тестов чаще берут специализированные инструменты.

Стоит ли переводить существующие тесты с Selenium?

Только при реальной боли: постоянные падения, долгие прогоны, сложная поддержка. Переписывание большого набора — это недели работы. Частая практика — оставить существующие тесты и писать на Playwright всё новое, постепенно смещая баланс.

Связанные термины