Playwright на Kotlin и Java: пишем E2E-тесты без боли
Когда продукт усложняется, ручное тестирование перестаёт справляться: релизы затягиваются, баги просачиваются в прод, а команда тратит часы на регрессионные прогоны. Многие команды в такой ситуации обращаются к Playwright — мощному фреймворку для end-to-end тестирования. Но большинство примеров в ин

Когда продукт усложняется, ручное тестирование перестаёт справляться: релизы затягиваются, баги просачиваются в прод, а команда тратит часы на регрессионные прогоны. Многие команды в такой ситуации обращаются к Playwright — мощному фреймворку для end-to-end тестирования. Но большинство примеров в интернете написаны на JavaScript или Python, а что делать, если ваш стек — JVM? Хорошая новость: Playwright официально поддерживает Java и Kotlin, и в этой статье мы разберём, как писать тесты на этих языках, на конкретном примере из реальной практики.
Playwright — это не просто библиотека, а целая экосистема для автоматизации браузеров. Она позволяет эмулировать действия пользователя, проверять состояние страницы, перехватывать сетевые запросы и многое другое. В отличие от Selenium, Playwright работает быстрее, стабильнее и предоставляет более удобный API. Особенно приятно, что для Java и Kotlin доступны все те же возможности, что и для других языков.
Настройка проекта и первые шаги
Чтобы начать писать тесты на Playwright с Kotlin или Java, первым делом нужно добавить зависимость в ваш проект. Если вы используете Maven, добавьте в pom.xml следующее:
xml com.microsoft.playwright playwright 1.48.0
Для Gradle в build.gradle.kts добавьте строку:
kotlin implementation("com.microsoft.playwright:playwright:1.48.0")
После этого необходимо установить браузеры, которые будет использовать Playwright. Это делается командой mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install" для Maven или ./gradlew playwright:install для Gradle, если вы используете плагин. Впрочем, можно просто запустить любой тест — Playwright сам предложит установить недостающие браузеры.
Теперь создадим простой тест. Вот как выглядит базовый сценарий на Kotlin:
kotlin import com.microsoft.playwright. import org.junit.jupiter.api.Test
class LoginTest { @Test fun should login with valid credentials() { Playwright.create().use { playwright - val browser = playwright.chromium().launch() val page = browser.newPage() page.navigate("https://example.com/login") page.fill("username", "testuser") page.fill("password", "password123") page.click("button[type=submit]") page.waitForSelector(".dashboard") println("Login successful!") browser.close() } } }
Как видите, API интуитивно понятен: мы создаём экземпляр Playwright, запускаем браузер, открываем новую страницу, выполняем действия и проверяем результат. В Java код будет выглядеть почти так же, только с более многословным синтаксисом.
Предыстория: почему мы выбрали Playwright
Наш продукт развивался, и через некоторое время мы заметили, что релизы стали приносить баги на прод. Ручное тестирование не успевало за скоростью разработки, а «тестировать на пользователях» — так себе стратегия. Нужна была автоматизация. Мы рассматривали разные варианты: Selenium, Cypress, но остановились на Playwright. Почему? Во-первых, он поддерживает все основные браузеры из коробки. Во-вторых, у него отличная скорость работы и стабильность. В-третьих, для нас было важно, чтобы тесты можно было писать на Kotlin — нашем основном языке. Playwright это позволяет.
Ещё один плюс — удобные инструменты для отладки. Например, можно запустить тест в headed-режиме и наблюдать за действиями в реальном времени, или использовать trace viewer для анализа шагов. Это сильно экономит время при поиске проблем.
Как это работает?
Playwright взаимодействует с браузером через протокол DevTools. Это значит, что он может делать всё то же, что и человек: кликать, вводить текст, скроллить, переключать вкладки. При этом он умеет ожидать появления элементов, обрабатывать всплывающие окна, перехватывать запросы и даже эмулировать мобильные устройства. Всё это делает тесты максимально приближёнными к реальному пользовательскому опыту.
Технические подробности: как устроен Playwright для JVM
Playwright для Java и Kotlin — это официальный порт, который поддерживается командой Microsoft. Он полностью повторяет функциональность JavaScript-версии, но адаптирован под JVM-экосистему. Например, вы можете использовать JUnit или TestNG для организации тестов, а также подключать Allure для красивых отчётов.
Одна из сильных сторон Playwright — это возможность работать с несколькими вкладками и контекстами. Это полезно, когда нужно проверить сценарий с открытием ссылки в новой вкладке или с разными пользователями одновременно. Также стоит отметить встроенную поддержку ожиданий: вы можете задать условие, которое должно выполниться, и Playwright будет ждать его появления в течение заданного таймаута.
Для нашего проекта мы написали несколько десятков тестов, покрывающих основные пользовательские сценарии: регистрация, вход, создание заказа, оплата. Каждый тест запускается в изолированном окружении, что исключает влияние тестов друг на друга. Мы также настроили параллельный запуск — это позволило сократить время прогона с 40 минут до 5.
Кого затронет и как
Если вы разработчик или тестировщик, работающий с Java или Kotlin, эта информация для вас. Playwright — отличная альтернатива Selenium, которая проще в использовании и надёжнее. Для бизнеса автоматизация тестирования означает меньше багов в проде и быстрее релизы. В России и СНГ Playwright тоже набирает популярность, особенно среди компаний, которые разрабатывают веб-приложения на JVM-стеке.
Что будет дальше
Playwright активно развивается: выходят новые версии, добавляются функции. В ближайшем будущем стоит ожидать улучшения поддержки мобильных браузеров и расширения возможностей по работе с сетью. Для нас важно, чтобы инструмент оставался стабильным и не требовал частых изменений в тестах. Пока что все обновления проходят гладко.
Итог
Playwright — это современный инструмент для E2E-тестирования, который отлично подходит для Java и Kotlin проектов. Он позволяет быстро создавать надёжные тесты, которые экономят время и нервы. Если вы ещё не пробовали — советую начать. Настройка займёт не больше часа, а выгода будет ощутимой уже после первого прогона.