Playwright Codegen: где заканчивается магия и начинается ручной труд
Привет! Меня зовут Евгений Когтев, я руководитель направления разработки в команде дизайн-системы «LUNA» в Домклик. Хочу рассказать, как у нас появилась идея упростить создание тестов с помощью Codegen: просто ходишь по сайту, как обычный пользователь, а в соседнем окне послушно рождается аккуратный, подсвеченный синтаксисом код. Никакой магии — сплошная инженерия, подумали мы.
Для реализации мы выбрали Playwright — мощный, гибкий и активно развивающийся инструмент с большим сообществом. К тому же у нас его активно начали внедрять вместо собственной разработки на основе Selenium.
Запустив Codegen, мы сразу столкнулись с проблемой поиска локаторов по тестовому Data-атрибуту. Определяет он их хорошо, но если внутри есть, например, Span с текстом, в локаторе появлялся не Data-атрибут, а селектор с контентом, который нам не подходит. Выглядело это так:

Чтобы решить проблему, мы разметили атрибутами все компоненты дизайн-системы. Пришлось немного их переверстать, особенно компоненты для загрузки файлов (чтобы в локаторе был именно input и файл корректно добавлялся в поле при прогоне), а также поле ввода SMS, состоящее из нескольких input.
Нам удалось преодолеть эти сложности и даже «протыкать» тесты, которые затем успешно прогонялись. Однако мы пришли к неприятному выводу: чтобы записывать их более-менее качественно, нужно понимать, куда нажимать, смотреть на то, что предлагает Codegen, и всё равно в результате лишних действий в процессе генерации теста получаются «мусорные» шаги.
Разбираться с такими проблемами силами разработчика, даже имея скриншоты шагов и скринкаст записи, выходит дороговато. Проще самостоятельно накодить весь тест.
Итоги
Инструмент интересный, хотя его авторы признают, что он помогает лишь создать каркас, а доработку всё равно придётся делать вручную. На мой взгляд, можно добиться того, чтобы тест полностью создавался через Codegen, а разработчик, видя проблемы с локатором, добавлял недостающую разметку на сайт и корректировал тесты. Но это потребует значительных усилий.
Пока мы решили сосредоточиться на создании CMS для написания тестовых сценариев, хранения и запуска по расписанию, а также для аналитики, и прикрутить Quality Gate в CI/CD. В планах — вернуться к упрощению создания тестов с помощью ИИ или Codegen и решить все проблемы после завершения работы над CMS.
Я планирую делиться опытом по созданию инфраструктуры для развития автотестирования. Очень интересно узнать, как другие справляются с проблемой покрытия продукта автотестами и поддержания их в актуальном состоянии. Получалось ли у кого-то упростить создание тестов с помощью ИИ или генерирования? Я постарался кратко описать наш случай — если хотите узнать подробнее, напишите в комментариях.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.