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

Для реализации мы выбрали Playwright — мощный, гибкий и активно развивающийся инструмент с большим сообществом. К тому же у нас его активно начали внедрять вместо собственной разработки на основе Selenium.

Запустив Codegen, мы сразу столкнулись с проблемой поиска локаторов по тестовому Data-атрибуту. Определяет он их хорошо, но если внутри есть, например, Span с текстом, в локаторе появлялся не Data-атрибут, а селектор с контентом, который нам не подходит. Выглядело это так:

Бейдж с ошибкой вылетает, если локатор найден не методом getByTestId
Бейдж с ошибкой вылетает, если локатор найден не методом getByTestId

Чтобы решить проблему, мы разметили атрибутами все компоненты дизайн-системы. Пришлось немного их переверстать, особенно компоненты для загрузки файлов (чтобы в локаторе был именно input и файл корректно добавлялся в поле при прогоне), а также поле ввода SMS, состоящее из нескольких input.

Нам удалось преодолеть эти сложности и даже «протыкать» тесты, которые затем успешно прогонялись. Однако мы пришли к неприятному выводу: чтобы записывать их более-менее качественно, нужно понимать, куда нажимать, смотреть на то, что предлагает Codegen, и всё равно в результате лишних действий в процессе генерации теста получаются «мусорные» шаги.

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

Итоги

Инструмент интересный, хотя его авторы признают, что он помогает лишь создать каркас, а доработку всё равно придётся делать вручную. На мой взгляд, можно добиться того, чтобы тест полностью создавался через Codegen, а разработчик, видя проблемы с локатором, добавлял недостающую разметку на сайт и корректировал тесты. Но это потребует значительных усилий.

Пока мы решили сосредоточиться на создании CMS для написания тестовых сценариев, хранения и запуска по расписанию, а также для аналитики, и прикрутить Quality Gate в CI/CD. В планах — вернуться к упрощению создания тестов с помощью ИИ или Codegen и решить все проблемы после завершения работы над CMS.

Я планирую делиться опытом по созданию инфраструктуры для развития автотестирования. Очень интересно узнать, как другие справляются с проблемой покрытия продукта автотестами и поддержания их в актуальном состоянии. Получалось ли у кого-то упростить создание тестов с помощью ИИ или генерирования? Я постарался кратко описать наш случай — если хотите узнать подробнее, напишите в комментариях.

Когтев Евгений

Руководитель направления разработки