Отладка E2E-тестов может быть трудоёмкой задачей. При падении тестов Playwright нередко приходится вручную анализировать сообщения об ошибках и стек-трейсы, искать причины неудач (например, неправильно подобранный селектор, увеличенные задержки или неожиданные изменения в DOM) и пробовать разные варианты исправлений. Традиционно QA-инженерам приходится копировать текст ошибок и обращаться к документации или чат-ботам вроде ChatGPT с вопросами вроде «почему селектор не нашёлся» или «как увеличить таймаут». Это занимает время и отнимает ресурсы команды.

Рис. 1. Кнопка «Copy prompt» в отчёте Playwright 1.51 и выше копирует в буфер готовую подсказку для AI. По клику формируется текст, включающий детали падения теста и контекст, который потом можно вставить в ChatGPT для получения советов.
Рис. 1. Кнопка «Copy prompt» в отчёте Playwright 1.51 и выше копирует в буфер готовую подсказку для AI. По клику формируется текст, включающий детали падения теста и контекст, который потом можно вставить в ChatGPT для получения советов.

Впрочем, современные инструменты для тестирования предлагают поддержку AI на разных этапах. Например, начиная с версии Playwright 1.51 появилась встроенная функция «Copy prompt»: она добавляет кнопку в HTML-отчёт или в UI-режим, которая копирует в буфер заранее подготовленную подсказку с контекстом ошибки (текст ошибки, часть DOM, имя теста и т.п.). После этого разработчик вручную вставляет подсказку в инструмент на базе LLM (ChatGPT, GitHub Copilot и др.) и получает рекомендации. В Visual Studio Code расширение Playwright дополнительно предлагает «AI Fix» – кнопку в списке тестов, которая сразу анализирует неудачный тест и предлагает исправление прямо в редакторе.

Для фреймворка Cypress существует сторонний плагин cy-copy-prompt: при падении теста он автоматически собирает нужную информацию (сообщение об ошибке, шаги, стек-трейс) и формирует готовый текстовый запрос для чат-бота. 

А ещё существует библиотека auto-playwright, которая позволяет управлять браузером через естественный язык, отдавая команды ChatGPT (например, «взять текст заголовка» или «нажать на кнопку»).

import { test, expect } from "@playwright/test";
import { auto } from "auto-playwright";

test("auto Playwright example", async ({ page }) => {
  await page.goto("/");

  // `auto` can query data
  // In this case, the result is plain-text contents of the header
  const headerText = await auto("get the header text", { page, test });

  // `auto` can perform actions
  // In this case, auto will find and fill in the search text input
  await auto(`Type "${headerText}" in the search box`, { page, test });

  // `auto` can assert the state of the website
  // In this case, the result is a boolean outcome
  const searchInputHasHeaderText = await auto(
    `Is the contents of the search box equal to "${headerText}"?`,
    { page, test },
  );

  expect(searchInputHasHeaderText).toBe(true);
});

Существующие подходы к AI‑отладке тестов:

  • Встроенные инструменты Playwright: начиная с версии 1.51 Playwright умеет генерировать подсказку по нажатию «Copy prompt». Кроме того, расширение Playwright для VS Code добавляет кнопку «AI Fix», которая анализирует падение и предлагает исправление в коде. Оба варианта облегчают подготовку запроса к ИИ, но требуют ручного копирования/вставки подсказки.

  • Плагин Cypress (cy-copy-prompt): аналогичная идея реализована и для Cypress. При падении теста этот плагин «вытаскивает» ошибки, стек-трейсы и заголовки теста, а затем формирует готовую подсказку для LLM. Это экономит ручной сбор контекста, но пользователь всё равно вручную запускает чат-бота.

  • Библиотека Auto Playwright: позволяет задавать тестовые действия естественным языком (ChatGPT сам управляет браузером)[5][6]. Это скорее про создание и выполнение тестов, нежели про отладку уже упавших. Тем не менее, это пример другого способа интеграции AI в Playwright-код.

  • Другие фреймворки и плагины: помимо этого, появляются AI-плагины для других инструментов. Например, Microsoft упомянула Playwright MCP (Model Context Protocol) как мост между LLM и браузером, который уже используется внутри GitHub Copilot’s Coding Agent. Пока что это больше исследовательские возможности для генерации и верификации тестов, но они показывают тенденцию обогащения контекста для ИИ.

То есть многие современные инструменты дают AI больше информации: одни просто копируют готовую подсказку для вставки, другие (как Copilot) могут прямо править код. При этом все эти решения не автоматизируют весь цикл: обычно приходится самим запускать чат-бот, оценивать его ответ и вносить правки в тесты.

Плагин @playwright-ai/auto-debug и как он работает

Пакет @playwright-ai/auto-debug призван автоматизировать именно рутинную часть: отправку ошибок в ИИ и получение рекомендаций. Его основной сценарий таков: после того как вы запустили npx playwright test и получили отчёт с множеством ошибок, вы запускаете npx playwright-ai. Плагин сканирует папку с результатами тестов (обычно это test-results), находит файлы ошибок (например, copy-prompt.txt, error.txt или другие), а затем поочерёдно отправляет их содержимое на анализ в выбранную AI-модель. После этого ответы ИИ автоматически встраиваются в отчёты: например, в HTML-отчёт каждая неудавшаяся проверка может получить «AI-блок» с описанием причины и предлагаемых исправлений, а если вы используете Allure, то ответы ИИ прикрепляются в виде вложений к упавшим тестам.

Использование довольно простое. Например:

# 1. Запустите тесты Playwright
npx playwright test       # упавшие тесты создадут файлы ошибок в test-results/
# 2. Запустите AI-отладку
npx playwright-ai         # анализирует все ошибки и добавляет AI-ответы в отчёты

При этом плагин не требует изменения конфигурации Playwright — он работает поверх обычного HTML- или Allure-отчёта. Конфигурация подключения к AI задаётся в файле ai.conf.js (или .env), где указывается ключ API, адрес сервера и модель, а также опциональные системные сообщения. Например, можно дать ИИ подсказку: «Ты – ассистент по отладке Playwright-тестов» и попросить его отвечать кратко и по существу.

import dotenv from 'dotenv';

dotenv.config();

export const ai_conf = {

  api_key: process.env.API_KEY,
  
  // Настройки AI сервера
  ai_server: 'http://localhost:1234/v1/chat/completions',
  model: 'qwen3-14b', 
  
  // Директории
  results_dir: 'test-results',
  report_dir: 'playwright-report',
  ai_responses_dir: 'ai-responses',
  
  // Настройки обработки
  max_prompt_length: 2000,
  request_delay: 1000,
  stream: true, 
  
  // Паттерны файлов ошибок
  error_file_patterns: [
    'copy-prompt.txt',
    'error-context.md',
    'error.txt',
    'test-error.md',
    '*-error.txt',
    '*-error.md'
  ],
  
  // Сохранение AI ответов
  save_ai_responses: true,
  ai_responses_dir: 'allure-results',
  ai_response_filename_template: 'ai-response-{timestamp}-{index}.md',
  include_metadata: true,
  
  // ? Allure интеграция - ВКЛЮЧЕНА
  allure_integration: true,
  allure_results_dir: 'allure-results',
  
  // Настройки AI сообщений
  messages: [
    {
      role: 'system',
      content: 'You are an AI assistant for debugging Playwright tests. Analyze errors and offer specific solutions in English. Answer briefly and to the point with code examples.'
    },
    {
      role: 'system',
      content: 'When analyzing errors, keep in mind: this is a demo project for playwright-ai-auto-debug. Offer practical solutions taking into account modern testing practices.'
    }
    ]
};

Ключевые возможности

  • Сквозное сканирование: находит все файлы с ошибками после запуска playwright test.

  • Отправка запросов и сбор ответов: на каждом файле генерируется отдельный запрос к выбранному AI (например, GPT или Mistral).

  • Встраивание результатов: готовые решения прикрепляются к тестам — в HTML-отчёте выводятся в едином стиле с остальной частью отчёта, а при использовании Allure добавляются как вложения к упавшим тестам (без создания новых записей тестов).

  • Умный подбор теста: начиная с версии 1.3.0 использует алгоритм «умного сопоставления» (Запуск с MCP Playwright), чтобы в точности привязать ответ ИИ к тому или иному тесту. Она анализирует названия тестов, стек-трейсы и ключевые слова, ставит баллы за совпадение и гарантирует, что каждому релевантному упавшему тесту прикрепится свой результат (а не только последнему тесту).

  • Умный подбор теста: начиная с версии 1.3.0 использует алгоритм «умного сопоставления» (Запуск с MCP Playwright), чтобы в точности привязать ответ ИИ к тому или иному тесту. Она анализирует названия тестов, стек-трейсы и ключевые слова, ставит баллы за совпадение и гарантирует, что каждому релевантному упавшему тесту прикрепится свой результат (а не только последнему тесту).

  • Потоковая трансляция: ответы ИИ можно видеть по мере их поступления, что удобно при больших объёмах данных (плагин выводит прогресс в консоль).

  • Чистая архитектура: код разделён на слои (domain, application, infrastructure, presentation), что упрощает добавление новых провайдеров ИИ или форматов отчётов без глобальных правок.

Таким образом, @playwright-ai/auto-debug автоматизирует процесс, который иначе QA-инженеру приходилось бы делать вручную: искать все «copy-prompt.txt» и т.п., открывать ChatGPT, копировать туда контекст и возвращать ответ в отчёт.

Сравнение с альтернативами

Выше я перечислил основные AI‑инструменты для отладки тестов. Основные отличия плагина @playwright-ai/auto-debug следующие:

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

  • В отличие от простого копирования подсказок, плагин напрямую интегрируется с отчётами (HTML и Allure). Как отмечено в документации, AI-ответы «неявно» встраиваются в отчёт Allure, автоматически прикрепляясь к упавшим тестам, «не создавая дополнительных результатов». То есть финальный отчет выглядит цельно и аккуратно.

  • Благодаря алгоритму сопоставления плагин пытается давать максимально релевантные решения именно к конкретному тесту. Анализ названий и путей файлов, стек-трейсов и ключевых слов позволяет снизить число «ложных срабатываний», когда ответ ИИ случайно присоединялся не к тому тесту.

  • По сравнению с auto-playwright – плагином другого рода – @playwright-ai/auto-debug не генерирует тестовые шаги, а именно анализирует ошибки существующих тестов. Auto Playwright упрощает написание тестов через ChatGPT, а @playwright-ai/auto-debug помогает понять, почему ваши тесты упали, и как их починить.

Среди прочих аналогов стоит упомянуть встроенный подход Playwright: на картинке выше (рис. 1) показана кнопка «Copy prompt». Она действительно облегчает создание подсказки, но ответ всё равно получаем вручную. В вариантах же, где контекст прост – например, без MCP – GPT часто выдает банальные советы. Как показывает опыт, если отправить в GPT только текст ошибки “Timeout ... waiting for selector "#submit-btn"”, он просто посоветует «увеличить таймаут», хотя реальная причина могла быть другая. После подключения MCP (получения снимка страницы и состояния элементов) ИИ уже видит, что кнопка существует, но disabled, и предлагает дождаться активации элемента. 

? Без MCP GPT получает:

Error: Timeout 30000ms exceeded.
waiting for selector "#submit-btn"

✅ С MCP GPT получает:

{
  "selector": "#submit-btn",
  "action": "click",
  "htmlSnapshot": "<div><button id='submit-btn' disabled>Send</button></div>",
  "logs": ["click intercepted by disabled button"],
  "testTitle": "should submit the form",
  "location": "tests/form.spec.ts:23"
}

Встроенный Copy Prompt даёт подобную возможность лишь вручную: вы можете скопировать подсказку с контекстом и сами вставить в LLM. Плагин же стремится получить такой подробный контекст автоматически (есть опция --use-mcp), чтобы ответы были точнее.

Из этого следует, что @playwright-ai/auto-debug значительно экономит время на рутинном копировании и сборе контекста. В реальных проектах, где десятки тестов падают по самым разным причинам, плагин позволяет за минуты собрать решения в одном отчёте. Например, за счёт автоматизации интеграции можно совместно с командой быстро пройтись по всем падениям и сразу получить предложения по фиксам – вместо того, чтобы каждый инженер вручную смотрел на свой стек и задавал похожие вопросы в чат. Я надеюсь, что такой подход позволит сэкономить время на анализ ошибок.

Однако стоит помнить, что AI – не панацея. Подсказки могут быть неточными или очевидными (особенно без полной информации о состоянии страницы). Также плагин требует наличия ключа API и сетевого соединения. Но если использовать его грамотно (например, дополняя ai_conf нужными подсказками про проект или увеличивая таймауты запросов), он заметно ускоряет цикл отладки.

Ниже можно увидеть пример сформированного отчета с использованием MCP:

Выводы

Использование AI для отладки тестов – это стремление освободить разработчиков и QA от рутинной работы. @playwright-ai/auto-debug демонстрирует одну из форм такой автоматизации: он избавляет от ручного копирования ошибок в чат-бот, автоматически получает рекомендации и встраивает их в отчёты. В отличие от встроенных в Playwright функций, плагин предлагает «автофикс» на уровне отчёта и единый запуск всех запросов.

При этом ни один из инструментов не может гарантировать 100% решения всех проблем – ИИ по-прежнему лишь ассистент. Вероятны случаи, когда придётся проверить подсказку вручную или скорректировать её. Тем не менее систематизация процесса и возможность передать ему «вопросы» от всех упавших тестов одновременно – большое подспорье.

Сравнение с альтернативами показывает, что ключевое различие в степени автоматизации и интеграции. Например, встроенная кнопка Copy Prompt в отчётах Playwright всего лишь генерирует текст для ручной отправки в модель. Cypress-плагин упрощает сбор данных для ChatGPT. А @playwright-ai/auto-debug автоматизирует весь поток: от сканирования ошибок до прикрепления ответов, сохраняя чистоту и понятность отчётов.

В итоге эта библиотека может стать полезным дополнением к стандартным средствам отладки Playwright. Она позволяет команде быстрее видеть конкретные предложения по исправлению тестов и экономит до десятков часов на рутинных задачах. Конечно, решение не отменяет необходимости понимать логику тестов и приложения – но снимает большую часть «ручной копипасты» при обращении к AI.

Комментарии (0)