| name | mansoni-browser-agent |
| description | Mansoni browser agent — управляет браузером без скриншотов, видит реальный UI, тестирует проект в реальном времени. Использует Playwright для навигации, проверки состояния и интерактивного тестирования. |
| trigger | /browser-test |
/browser-test
Mansoni browser agent — тестирование проекта в реальном браузере без скриншотов.
Возможности
- Видеть браузер без скриншотов — прямой доступ к DOM, console, network
- Интерактивное тестирование — клики, ввод, навигация
- Мониторинг ошибок — console errors, page errors, network failures
- Проверка состояния UI — видимые элементы, enabled/disabled, текст
Использование
/browser-test <url> # открыть URL и начать тестирование
/browser-test --dev # открыть localhost:5173 (Vite dev)
/browser-test --prod # открыть mansoni.ru
/browser-test --check-auth # проверить auth flow
/browser-test --check-chat # проверить чат
/browser-test --check-calls # проверить звонки
Browser Session
Запуск браузера
import { chromium } from 'playwright';
const browser = await chromium.launch({
headless: false,
args: ['--start-maximized']
});
const page = await browser.newPage();
await page.setViewportSize({ width: 1920, height: 1080 });
page.on('console', msg => {
if (msg.type() === 'error') {
console.log('❌ CONSOLE ERROR:', msg.text());
}
});
page.on('pageerror', err => {
console.log('❌ PAGE ERROR:', err.message);
});
page.on('requestfailed', request => {
console.log('❌ FAILED:', request.url());
});
Проверки состояния
const button = await page.locator('button:has-text("Отправить")');
const isVisible = await button.isVisible();
const isEnabled = await button.isEnabled();
const text = await page.locator('.message').first().textContent();
const url = page.url();
await page.waitForSelector('.chat-messages', { timeout: 5000 });
Интерактивные действия
await page.click('button:has-text("Войти")');
await page.fill('input[name="email"]', 'test@example.com');
await page.fill('input[name="password"]', 'password123');
await page.click('button:has-text("Войти")');
await page.goto('https://mansoni.ru/chat');
await page.waitForLoadState('networkidle');
Тестовые сценарии
Auth Flow
async function testAuth() {
await page.goto('https://mansoni.ru/auth');
await page.fill('input[type="email"]', testEmail);
await page.fill('input[type="password"]', testPassword);
await page.click('button[type="submit"]');
await page.waitForURL('**/chat/**', { timeout: 10000 });
const userAvatar = await page.locator('.user-avatar').isVisible();
console.log('Auth successful:', userAvatar);
}
Chat Flow
async function testChat() {
await page.goto('https://mansoni.ru/chat');
const chats = await page.locator('.chat-list-item').count();
console.log('Chats loaded:', chats);
await page.click('.chat-list-item:first-child');
const messages = await page.locator('.message').count();
console.log('Messages:', messages);
await page.fill('.message-input', 'Привет!');
await page.click('button:has-text("Отправить")');
await page.waitForSelector('.message:has-text("Привет!")');
}
Calls Flow
async function testCalls() {
await page.goto('https://mansoni.ru/calls');
const callButton = await page.locator('button:has-text("Позвонить")');
const isEnabled = await callButton.isEnabled();
if (isEnabled) {
await callButton.click();
await page.waitForSelector('.call-active', { timeout: 5000 });
await page.click('button:has-text("Завершить")');
}
}
Автоматический репортинг
async function generateTestReport(page, testName) {
const consoleErrors = [];
const pageErrors = [];
const networkFailures = [];
const url = page.url();
const title = await page.title();
return {
testName,
url,
title,
consoleErrors,
pageErrors,
networkFailures,
timestamp: new Date().toISOString()
};
}
MANSONI Integration
Mansoni использует browser-agent для:
- Верификации фич — перед коммитом проверить что UI работает
- Отладки UI багов — увидеть реальное поведение
- E2E тестирования — проверить critical user flows
- Мониторинга ошибок — поймать console errors в production
mansoni-queen → mansoni-tester → browser-agent → report
Команды для Mansoni
/browser-test --dev — открыть dev сервер
/browser-test --prod — открыть production
/browser-test --auth — проверить auth
/browser-test --chat — проверить чат
/browser-test --calls — проверить звонки
/browser-test --full — полный набор тестов