Привет, Хабр! ?

Меня зовут Вадим Лунин, и в обычной жизни я возглавляю команду тестирования в Альфа-Банке(Беларусь). Но есть у меня одна вредная привычка - в свободное время, которое я с трудом выкраиваю между работой и сном, я упорно мучаю свою библиотеку для автоматизации дебага Playwright тестов playwright-ai-auto-debug.

Началось всё с простой мысли: "А что если научить AI помогать с падающими тестами?" Теперь это превратилось в полноценный проект с Dependency Injection, стратегиями, фабриками и прочими словами, которые заставляют меня чувствовать себя настоящим архитектором (хотя по факту я просто тестировщик, который не может остановиться).

И вот, свет увидела версия 3.2.4. Что в ней такого особенного? Давайте разбираться!

Что обычно происходит?

Представьте: вы запустили 100 тестов, 15 из них упали. Вы открываете логи и видите там привычное:

Error: Timeout 30000ms exceeded
Error: Element not found
Error: Navigation failed

И вот вы сидите, смотрите на это и думаете: "Опять? Серьёзно?". А теперь представьте, что вместо ручного анализа каждой ошибки AI делает это за вас. Автоматически. Параллельно. С красивыми отчётами.

Вот для этого и существует моя библиотека. А в версии 3.2.4 она научилась делать это ещё круче.

Главные изменения релиза

TestDebugService - дирижёр нашего оркестра

Раньше у меня был код, который... эээ... работал. Вроде как. Иногда. Теперь же появился TestDebugService - единая точка входа для всей магии отладки. Это как иметь личного ассистента, который точно знает, к кому обратиться и что делать.

// Было: хаос из разных функций
// Стало: красота и порядок
const testDebugService = await container.get('testDebugService');
const results = await testDebugService.debugTests(projectPath, options);

AI Provider Factory - потому что провайдеров много не бывает

Помните те времена, когда у вас был один AI провайдер и жизнь казалась простой? Я тоже нет. Теперь библиотека поддерживает OpenAI, Mistral, и вообще любой локальный AI (Ollama, LMStudio).

Конфигурация проста как пять копеек:

// ai.conf.js
export default {
  api_key: process.env.API_KEY || '',
  ai_server: 'https://api.openai.com/v1/chat/completions',
  model: 'gpt-3.5-turbo',
  // ... остальной код
}

Система сама определит провайдера по URL. Магия? Нет, просто паттерн Factory. Но выглядит красиво! 

SummaryReporter - потому что один отчёт лучше, чем 15

Раньше после анализа я получал кучу отдельных файлов с результатами. Теперь SummaryReporter собирает всё в красивый сводный отчёт. В HTML. В Markdown. В JSON. Выбирайте, что душе угодно:

// ai.conf.js
summary_report: true,
summary_report_formats: ['html', 'markdown', 'json'],

И получаете:

  • Агрегированную статистику

  • Топ самых частых ошибок

  • Интеллектуальные рекомендации

  • Метрики производительности

UI Coverage Analysis - новый уровень паранойи

Знаете, что меня всегда беспокоило? Вопрос: "А все ли критичные элементы на странице мы вообще тестируем?" Теперь можно не гадать - система сама проанализирует DOM и скажет, что упущено.

Функции, которые заставляют чувствовать себя богом тестирования:

  • Критичные элементы - проверка наличия важных кнопок/форм

  • Golden snapshot - сравнение с эталонным состоянием

  • Accessibility анализ - потому что доступность важна

# Новая команда в вашем арсенале

npx playwright-ai coverage init

npx playwright-ai coverage info

Параллельная обработка - потому что жизнь коротка

Помните, я говорил про 15 упавших тестов? Представьте, что AI анализирует их не последовательно, а параллельно. В 4 потока по умолчанию (но можно настроить):

// ai.conf.js
parallel_enabled: true
parallel_limit: Math.max(1, Number(process.env.PW_AI_PARALLEL || 4)),

Теперь анализ занимает не 15 минут, а меньше 4. Математика работает!

Новые CLI команды для любителей консоли

doctor - ваш терапевт для окружения

npx playwright-ai doctor --fix

Проверяет всё ли в порядке с окружением и чинит, что сломалось. Как настоящий доктор, только без медицинской лицензии.

info - для любопытных

npx playwright-ai info

Расскажет всё про текущее состояние системы. DI контейнер, AI провайдеры, архитектурные детали. Для тех, кто любит знать, что происходит под капотом.

Dependency Injection Container - пересмотрел архитектуру

Признаюсь честно: я добавил DI контейнер не потому, что он был критически необходим. А потому что хотел. И знаете что? Оказалось, что это реально удобно!

Теперь есть:

  • Lifecycle management (Singleton/Transient)

  • Middleware для логирования

  • Защита от циклических зависимостей

  • Health checks

Всё как в большом enterprise приложении, только это библиотека для тестов. Оверинжиниринг? Возможно. Круто? Определённо!

MCP Integration - WebSocket магия

Model Context Protocol интеграция через WebSocket. Звучит сложно, но по факту это просто позволяет получать DOM snapshots и валидировать действия в реальном времени:

// ai.conf.js
mcp_integration: false, // Включается через --use-mcp
mcp_ws_host: 'localhost',
mcp_ws_port: 3001,
mcp_timeout: 30000,
npx playwright-ai debug --use-mcp

И вуаля - AI видит то же, что видит ваш тест!

Кастомизируемые промпты

Одна из моих любимых фич - возможность настроить, КАК именно AI будет анализировать ошибки:

// ai.conf.js
messages: [
  {
    role: 'system',
    content: 'Ты AI помощник по отладке Playwright тестов. Анализируй ошибки и предлагай конкретные решения на русском языке. Отвечай кратко и по делу.'
  },
  {
    role: 'system',
    content: 'При анализе ошибок учитывай специфику нашего проекта: используем React, TypeScript и тестируем e-commerce функционал.'
  }
]

Хотите, чтобы AI отвечал на русском? Пожалуйста. Хотите учитывать специфику вашего проекта? Легко. Хотите, чтобы он шутил? Ну... можно попробовать ?

Allure интеграция - потому что красивые отчёты важны

// ai.conf.js
allure_integration: true,
allure_results_dir: 'allure-results',

AI анализ автоматически прикрепляется к Allure отчётам. Ваш менеджер будет доволен красивыми на человеческом языке отчетам. Вы будете довольны тем, что не нужно всё объяснять на очередном митинге.

Allure Report
Allure 3
? AI Analysis

Обратная совместимость - мы не монстры

Самое классное - все старые команды и конфигурации продолжают работать. Миграция на новую версию? Просто обновите пакет:

npm update playwright-ai

Вот и всё. Никаких breaking changes, никаких "переписать всё с нуля". Потому что я сам ненавижу, когда библиотеки ломают обратную совместимость.

Демо-проект - потому что примеры лучше документации

В репозитории есть полноценный демо-проект с:

  • 25+ тестовыми сценариями

  • Разными типами ошибок

  • Примерами UI Coverage

  • Performance тестами

  • Accessibility проверками

Клонируйте, запускайте, ломайте. Это же демо!

Заключение

Версия 3.2.4 - это результат бессонных ночей, кофе и упорного желания сделать жизнь QA инженеров чуточку легче. Получилось ли? Надеюсь, что да!

Библиотека абсолютно бесплатна и open source. Если хотите попробовать:

npm install playwright-ai
npx playwright-ai init
npx playwright-ai debug

Есть вопросы, баги, пожелания? Welc̀ome в issues! Хотите поучаствовать в развитии? Pull requests приветствуются!

А я пойду выкраивать ещё немного свободного времени.

P.S. Кот так и не понял, что 4 утра - не время для завтрака. Но зато библиотека теперь умеет анализировать UI покрытие. Приоритеты, знаете ли ?

P.P.S. Если вы дочитали до конца - вы молодец! Оставьте комментарий, расскажите, какие фичи вам нужны больше всего и приходите ко мне в канал https://t.me/it_vadimqa 

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


  1. evestranger
    14.10.2025 14:07

    Опять интровертов с асоциалами путают.