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 сам ждёт, пока элемент появится и станет кликабельным.
| Критерий | Selenium | Cypress | Playwright |
| Браузеры | все основные | Chromium, Firefox | Chromium, Firefox, WebKit |
| Авто-ожидания | нет (вручную) | есть | есть |
| Языки | много | JS/TS | JS/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 даёт авто-ожидания, три движка браузеров и сильную отладку — поэтому выбран для курса.