webwright
Webwright — навык для задач, где результат нужно получить через реальные действия в браузере и сохранить проверяемые артефакты. Его исходный SKILL.md описывает работу с локальным Playwright в режиме «code-as-action»: агент выполняет по одной bash-команде за шаг, сохраняет скриншоты и журнал действий в каталоге final_runs/run_<id>/ и визуально проверяет, что сценарий действительно завершился. Это делает навык подходящим для поиска, фильтрации, заполнения форм, многошаговых переходов и извлечения данных, когда одного текстового ответа недостаточно. У навыка два режима. Режим по умолчанию решает конкретную задачу с теми значениями, которые указал пользователь. Параметризованный CLI-режим предназначен для повторного запуска: финальный скрипт получает функцию с Google-style Args-документацией и оболочку argparse, а значения из исходной задачи становятся значениями по умолчанию. В репозитории отдельно указано, что для этих режимов не нужны ключи API. Одноразовая подготовка запускается из корня Webwright и устанавливает Firefox для Playwright командой playwright install firefox. Рабочий контракт навыка фиксирует отдельный WORKSPACE_DIR для всех файлов и артефактов. Обязательный результат называется final_script.py. Каждый чистый запуск получает новый каталог final_runs/run_<id>/ с номером выше предыдущего; внутри хранятся копия финального скрипта, скриншоты с именами final_execution_<step_number>_<action>.png и final_script_log.txt. Журнал сбрасывается в начале чистого запуска и содержит по одной строке для каждого существенного взаимодействия, а итоговый факт задачи печатается в конце. Такой контракт помогает отличить исследовательский запуск от финального результата и не смешивать доказательства разных попыток. Проверка проходит последовательными этапами. Сначала фиксируются критические пункты: ограничения пользователя, фильтры, сортировка, выбранные значения и данные, которые должны быть доказаны. Затем исследуются стабильные селекторы, доступные подписи и состояние страницы; для этого исходный workflow рекомендует печатать ARIA snapshot, URL, title и видимые подписи. После этого создаётся инструментированный final_script.py, выполняется один чистый запуск, а затем каждый критический пункт сверяется с конкретным скриншотом или строкой журнала. Если пункт не доказан, причина исправляется, запускается следующий номер run и проверка повторяется. Важные ограничения относятся к достоверности результата. Нужно использовать стабильные селекторы и актуальные данные текущего запуска, а не угадывать состояние интерфейса. Если сайт предоставляет отдельный элемент для фильтра, сортировки или атрибута, поиск по общему текстовому полю не заменяет этот элемент. Точные числовые, датированные и количественные условия нельзя расширять до более грубой категории. Состояние, спрятанное после закрытия меню, нужно снова открыть либо зафиксировать видимым сводным индикатором. Утверждение о блокирующей ошибке требует повторного подтверждения в реальном интерфейсе. Для локального браузерного запуска используется свежий Firefox без постоянного состояния, viewport задаётся как 1280×1800, а полноэкранные full_page-скриншоты исходный контракт запрещает. Поэтому Webwright полезен там, где нужны воспроизводимые действия, журнал и визуальное доказательство, но он не заменяет проверку прав доступа, бизнес-решений или содержательной корректности данных, которую должен выполнить владелец задачи.
Для чего подходит
- Автоматизация браузерных сценариев
- Сбор скриншотов и action log
- Повторяемая проверка веб-интерфейса
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/microsoft/Webwright/tree/main/skills/webwright