Playwright, Selenium и Cypress

Сравниваем три популярных инструмента автоматизации браузера и объясняем выбор Playwright.

Playwright — библиотека от Microsoft для автоматизации браузеров (Chromium, Firefox, WebKit) с упором на скорость и устойчивость тестов.

Зачем автоматизировать браузер

Можно проверять сценарии вручную: открыл сайт, потыкал, посмотрел. Но при каждом изменении это нужно повторять, а человек устаёт и ошибается. Автоматизация браузера поручает эти клики программе: тест запускает настоящий браузер и выполняет шаги быстрее и одинаково каждый раз. Так регрессию из часа ручной работы прогоняют за минуту. Чем больше становится приложение, тем дороже ручная проверка и тем сильнее окупается автоматизация.

Три главных инструмента

Selenium — ветеран, появился ещё в 2004 году. Работает через стандарт WebDriver, поддерживает множество языков (Java, Python, C#, JS) и браузеров. Минус: исторически требует ручных ожиданий и склонен к флаки-тестам, настройка тяжеловесна. Это до сих пор отраслевой стандарт во многих больших компаниях, особенно там, где тесты пишут на Java.

Cypress — современный инструмент, работает внутри браузера. Очень удобный для отладки: у него наглядный интерфейс с «путешествием во времени» по шагам. Но из-за архитектуры он долго не поддерживал несколько вкладок и другие браузеры, а тесты пишут только на JavaScript/TypeScript.

Playwright — относительно новый (2020), от создателей Puppeteer. Управляет браузером снаружи через протокол, поддерживает Chromium, Firefox и WebKit одним API. Главная фишка — встроенные авто-ожидания: Playwright сам ждёт, пока элемент появится и станет кликабельным.

КритерийSeleniumCypressPlaywright
Браузерывсе основныеChromium, FirefoxChromium, Firefox, WebKit
Авто-ожиданиянет (вручную)естьесть
ЯзыкимногоJS/TSJS/TS, Python, Java, C#
Несколько вкладокдаограниченнода

Почему в курсе именно Playwright

У Playwright удачное сочетание свойств для тех, кто начинает с E2E:

  • Авто-ожидания из коробки — меньше флаки-тестов и почти не нужны sleep.
  • Локаторы «как пользователь» — поиск по роли, тексту, метке, а не по хрупким CSS-селекторам.
  • Мощная отладка — trace viewer показывает запись прогона по шагам.
  • Параллельный запуск и изоляция встроены в test-раннер.

Как выглядит код на разных инструментах

Один и тот же шаг «кликнуть по кнопке» на Selenium требует явного ожидания, а на Playwright — нет.

// Selenium (Java): нужно явно ждать элемент
WebElement button = new WebDriverWait(driver, Duration.ofSeconds(5))
  .until(ExpectedConditions.elementToBeClickable(By.id("submit")));
button.click();

// Playwright (JS): ожидание встроено в действие
await page.getByRole('button', { name: 'Submit' }).click();

Разница в эргономике огромна: Playwright делает рутинную работу за вас, и код читается как описание сценария. Это не значит, что Selenium «плохой» — просто Playwright изначально проектировали с учётом боли прошлого поколения инструментов.

Итог

  • Автоматизация браузера заменяет ручную проверку сценариев программой и окупается тем сильнее, чем больше приложение.
  • Selenium — универсальный ветеран, но требует ручных ожиданий.
  • Cypress удобен для отладки, но ограничен JS и архитектурой «внутри браузера».
  • Playwright даёт авто-ожидания, три движка браузеров и сильную отладку — поэтому выбран для курса.
Проверьте себя
1. Какая ключевая особенность Playwright уменьшает число флаки-тестов?
AЗапуск тестов только в одном браузере
BВстроенные авто-ожидания перед действиями и проверками
CОтсутствие поддержки JavaScript
DОбязательные ручные паузы sleep
2. Какие движки браузеров поддерживает Playwright одним API?
AТолько Chromium
BChromium и Internet Explorer
CChromium, Firefox и WebKit
DТолько Firefox и WebKit
3. Чем исторически неудобен Selenium по сравнению с Playwright?
AНе поддерживает Java
BТребует явных ручных ожиданий и склонен к флаки
CНе умеет кликать по кнопкам
DРаботает только внутри браузера
Поддержать проект