«Playwright уже 4 года удерживает лидерство в своей сфере, по многим причинам — интеграция с другими рабочими инструментами и GitHub, имея поддержку мощного спонсора (Microsoft), и, конечно, благодаря большому комьюнити.
Внедрение ChatGPT в QA-процессы сделало очевидной важную вспомогательную роль ИИ в устранении проблем с тестовыми окружениями и языками. Такой помощник упрощает процессы, обогащает инструментарий, обеспечивает адаптируемый подход. Конечно, опыт и скиллы тестировщиков по-прежнему решают (тестирует-то все равно человек, а не машина), но теперь люди получили очень толкового (и очень быстрого!) помощника.
С момента выпуска Microsoft в 2020 году Playwright в тот же год вырвался в топ благодаря полноценной поддержке всех браузеров (Chrome, Firefox, Edge и WebKit). Имея «врожденную» способность интегрироваться со всеми языками и обеспечивать стабильность результатов, Playwright быстро стал едва ли не основным элементом современных QA-процессов в вебе. О беспроблемном внедрении и радушном принятии в QA-сообществе свидетельствуют стабильная уже 4 года база пользователей и количество звезд на GitHub.
( Лидерство Playwright нехотя признается и идейными, упорными его недоброжелателями. Также Playwright является самым быстрым QA-фреймворком, по результатам независимых исследований.)
Далее расскажу, как ChatGPT упрощает задачи в Playwright; например, помогает найти причины ошибок, транслировать код с одного языка на другой, и настраивать вводы и нужные результаты. Я собрал несколько характерных кейсов, чтобы показать уровень ChatGPT-4 на практике.
Генерация кода на TypeScript
В основном работая не на TypeScript, я использовал ChatGPT, чтобы переводить некоторые проекты на TS. ChatGPT оказался очень сообразительным, «схватывая» суть кода и переводя его на TypeScript. Можно сказать, он помог мне выучить этот язык, «сгладил кривую обучения».
Первый промпт: «Переведи мне этот код на TypeScript»:
Такой результат получен:
С уточняющими комментариями. Отлично. Также ChatGPT включил в сгенерированный код импорт Playwright, необходимый для UI-теста.
Ок. Далее я дал новую задачу:
Ответ получился очень детализированным:
Переключение на другой язык часто вызывает проблемы с типами данных. К счастью, ChatGPT справляется с этим неплохо, и добавляет комментарии:
Полная версия чата здесь: https://chat.openai.com/share/9656950e-b8a8-477d-afbc-f555a11db748.
Интеграция с GitHub Actions через ChatGPT
Когда UI-тест запущен, самое время создать workflow для выполнения теста с помощью GitHub Actions. Это обеспечит бесшовную интеграцию тестирования в цикл разработки, повышая надежность CI/CD-конвейера.
Для этого я написал промпт:
как запустить UI-тест playwright с помощью GitHub actions при каждом слиянии в main-ветку
ChatGPT быстро выдал простое и понятное пошаговое руководство.
Желая получить доступ к Playwright-репорту из GitHub Action, я дописал следующий промпт:
как сохранить репорт Playwright, созданный во время GitHub action, чтобы потом иметь к нему доступ?
ChatGPT порекомендовал artifact uploading feature на GitHub. Однако я столкнулся с проблемой, когда задача загрузки не выполнялась если UI-тест завершался с ошибкой, и я ввел следующий промпт:
Я хочу изменить так, чтобы артефакт загружался даже при ошибке в GitHub action
Предложение ChatGPT было полезным, но оно приводило к ложнопозитивному срабатыванию, когда GitHub Action казалось успешным, даже если UI-тест падал с кодом ошибки. Это потребовало дальнейшей доработки:
если нужно экспортировать репорт Playwright только в случае failure, как мне добавить это в GitHub action?
Завершая эту часть практикума, могу сказать, что создание упорядоченного процесса для UI-тестов — очень полезно для любого проекта. Это хорошо интегрирует тестирование в цикл разработки, и повышает общую эффективность и надежность CI/CD-конвейера. На протяжении всего процесса внедрение ChatGPT оказалось полезным для совершенствования подхода, подчеркивая необходимость четкой коммуникации и итеративной обратной связи. Пример выше показывает ценность продуманных, точных промптов-уточнений, и также показывает простоту решения кажущихся проблем с ChatGPT.
Полный чат я сохранил здесь: https://chat.openai.com/share/2998ae7d-3d76-49a4-87ae-f16793c0171e.
Обработка ошибок в ChatGPT
У каждого есть опыт с невнятными сообщениями об ошибках, которые отправляют нас в кроличью нору бесконечных поисков в Google, чтения форумов и статей. К счастью, ChatGPT позволяет не нырять в океан нерелевантной информации. Далее пример, как ChatGPT помог справиться с ошибкой, возникшей при настройке GitHub action.
Вот сообщение об ошибке:
ChatGPT предложил два решения: запустить браузер в headless-режиме, или использовать xvfb-run для симуляции окружения. Учитывая, что тестирование связано с Chrome-расширением, которое требует запуска в headless-режиме, я решил взять подход xvfb-run. Обычно, получив такое сообщение об ошибке, я погружаюсь в форумы и статьи. На этот раз ChatGPT решил проблему, быстро предоставив мне два надежных варианта. Я выбрал второй вариант, попробовал xvfb-run, и все заработало. Это сэкономило мне массу времени.
Внимательность и опыт
Интеграция ChatGPT с Playwright дает целый ряд практических результатов, показывая неплохой потенциал (но и, как видим, несовершенство подобных ИИ-инструментов). Но использование ИИ для обработки ошибок и перевод идей в код на TypeScript — этого уже достаточно, это позволяет оптимизировать многие рутинные задачи в QA-процессах. Такой подход ускоряет итерации и позволяет сосредоточиться на качестве, а не на рутине.
Однако, несмотря на эти уже явные достижения и преимущества, проблемы остаются. Одна из проблем заключается в том, что никогда нельзя полностью полагаться на решения, генерируемые ИИ. Их всегда нужно внимательно перепроверять. Все-таки нужна роль человека-контролера для оценки и доработки генерируемых результатов, с учетом особенностей проектов.
Точность и продуманность промптов — это скилл, который будет решающим в работе с ChatGPT. Правильный промпт — основа всего.
Нужно освоить этот специфический скилл: «чувствовать ChatGPT». Развивать критическое мышление, и нарабатывать опыт. ИИ автоматизирует рутинные, часто повторяемые и не слишком сложные задачи, и делает это иногда очень эффективно. Но ИИ не понимает нюансы проекта, и не адаптируется так быстро и гибко, как это делает человек с опытом.
Выводы
Возможно, стоит со временем обратить внимание на такие поделки, как Auto Playwright и ZeroStep. Эти инструменты призваны упростить некоторые аспекты QA, и они ориентированы, судя по всему, на компании, в которых нет выделенных QA-команд. При этом важно понимать, что эти фреймворки, какими бы инновационными они не казались, вряд ли смогут заменить опытных тестировщиков. Как уже говорилось выше, ИИ в его нынешнем состоянии просто не в состоянии воспроизвести знания, критическое мышление и опыт людей. После беглого знакомства с этими системами я сомневаюсь в их эффективности, по сравнению с работой квалифицированного тестировщика.
Со временем ИИ будет играть важную роль в упрощении и ускорении рутинных задач, особенно таких как стабильность селекторов — распространенная проблема. Любой, кто сталкивался с селекторами, знает, как с ними бывает сложно, и способность ИИ быстро определять нестабильные селекторы, предлагая действенные (и быстрые) исправления, может значительно улучшить этот аспект.
«Костыль» в виде ChatGPT в оптимизации стандартных QA-задач Playwright определенно убедил меня продолжать использовать его в будущих проектах (особенно для обработки простых ошибок для экономии времени). Рекомендую QA-автоматизаторам, да и разработчикам поработать с ним, и изучать потенциал ИИ-ассистентов (не только ChatGPT).»