Все действия
Список доступных действий
send_message - Отправка текстового сообщения
send_photo - Отправка изображения
send_document - Отправка документа
send_voice - Отправка голосового сообщения
send_video - Отправка видео
click_button - Клик по кнопке
wait - Ожидание
wait_for_message - Ожидание сообщения от бота
wait_for_photo - Ожидание фото от бота
navigate_to_bot - Переход к боту
screenshot - Сделать скриншот
api_request - Выполнение API запроса
chat_summary - Сбор всех сообщений чата и анализ через Ollama
3. send_document - Отправка документа
Загружает и отправляет документ боту (PDF, DOC, ZIP и т.д.).
{
"id": "step-3",
"action": "send_document",
"data": {
"filePath": "./examples/test-data/document.pdf"
},
"waitTime": 3000,
"screenshot": true
}
Параметры data:
filePath (обязательно) - путь к файлу документа
4. send_voice - Отправка голосового сообщения
Загружает и отправляет голосовое сообщение (audio файл).
{
"id": "step-4",
"action": "send_voice",
"data": {
"filePath": "./examples/test-data/voice.ogg"
},
"waitTime": 3000,
"screenshot": true
}
Параметры data:
filePath (обязательно) - путь к аудио файлу
5. send_video - Отправка видео
Загружает и отправляет видео файл боту.
{
"id": "step-5",
"action": "send_video",
"data": {
"filePath": "./examples/test-data/video.mp4"
},
"waitTime": 5000,
"screenshot": true
}
Параметры data:
filePath (обязательно) - путь к видео файлу
6. click_button - Клик по кнопке
Нажимает на кнопку в интерфейсе бота (inline keyboard или обычная кнопка).
{
"id": "step-6",
"action": "click_button",
"data": {
"buttonText": "Начать"
},
"waitTime": 2000,
"screenshot": true
}
Параметры data:
buttonText (обязательно) - текст на кнопке для поиска
buttonData (опционально) - callback_data кнопки для более точного поиска
selector (опционально) - CSS селектор для поиска кнопки
7. wait - Ожидание
Простое ожидание указанное количество миллисекунд.
{
"id": "step-7",
"action": "wait",
"data": {
"waitTime": 5000
},
"screenshot": false
}
Параметры data:
waitTime (обязательно) - время ожидания в миллисекундах
8. wait_for_message - Ожидание сообщения от бота
Ожидает получения сообщения от бота с проверкой содержимого.
{
"id": "step-8",
"action": "wait_for_message",
"data": {
"messagesCount": 1
},
"waitTime": 10000,
"expectedResponse": {
"type": "text",
"contains": "привет",
"timeout": 10000
},
"screenshot": true
}
Параметры data:
messagesCount (опционально) - количество сообщений для ожидания (по умолчанию 1)
Параметры expectedResponse:
type - тип ожидаемого сообщения: 'text', 'photo', 'document', 'button', 'sticker', 'voice', 'video'
contains - текст должен содержать указанную подстроку
equals - текст должен точно совпадать
regex - текст должен соответствовать регулярному выражению
timeout - максимальное время ожидания в миллисекундах
9. wait_for_photo - Ожидание фото от бота
Ожидает получения фотографии от бота.
{
"id": "step-9",
"action": "wait_for_photo",
"data": {
"messagesCount": 1
},
"waitTime": 10000,
"expectedResponse": {
"type": "photo",
"timeout": 10000
},
"screenshot": true
}
10. navigate_to_bot - Переход к боту или группе
Выполняет поиск и переход к указанному боту или группе в Telegram Web. Поддерживает как боты (с @), так и групповые чаты (без @).
{
"id": "step-10",
"action": "navigate_to_bot",
"data": {
"username": "@my_bot"
},
"waitTime": 2000,
"screenshot": true
}
Параметры data:
username (обязательно) - username бота (с @, например @my_bot) или название группы (без @, например My Group)
Поддержка групп: Если указано название без символа @, система автоматически определит это как групповой чат и выполнит поиск по названию группы. Это позволяет использовать chat_summary для анализа групповых диалогов.
11. screenshot - Сделать скриншот
Делает скриншот текущего состояния чата.
{
"id": "step-13",
"action": "screenshot",
"data": {},
"screenshot": true
}
12. api_request - Выполнение API запроса
Выполняет HTTP запрос к внешнему API и использует ответ для отправки сообщения боту. Поддерживает множественные циклы обмена сообщениями и управление сессиями LLM. Также поддерживает WebSocket (WSS/WS) для GraphQL запросов.
{
"id": "step-4",
"action": "api_request",
"data": {
"apiUrl": "https://brown-icons-report.loca.lt/v1/chat/completions",
"apiMethod": "POST",
"apiHeaders": {
"Content-Type": "application/json"
},
"apiBody": {
"user_id": "exus00036",
"character": "Text_Tester",
"messages": [{"role": "user", "content": "{{lastMessage}}"}],
"max_tokens": 50
},
"apiTimeout": 120000,
"apiDelay": 2000,
"waitMessage": 5000,
"responseField": "choices.0.message.content",
"use_session": true,
"messagesCount": 8
},
"waitTime": 5000,
"screenshot": true
}
Параметры data:
apiUrl (обязательно) - URL API endpoint. Поддерживает HTTP/HTTPS (http://, https://) и WebSocket (ws://, wss://) для GraphQL запросов
apiMethod (обязательно) - метод HTTP: 'GET', 'POST', 'PUT', 'DELETE'. Для WebSocket запросов метод игнорируется
apiHeaders (опционально) - заголовки запроса (объект)
apiBody (опционально) - тело запроса (объект или строка JSON). При use_session=true обязательно укажите стабильный user_id, чтобы LLM могла идентифицировать пользователя
apiTimeout (опционально) - таймаут запроса в миллисекундах (по умолчанию 30000)
responseField (опционально) - путь к полю в JSON ответе для извлечения текста (например, \"choices.0.message.content\")
messagesCount (опционально) - количество циклов обмена сообщениями (по умолчанию 1). Каждый цикл: отправка ответа API боту → ожидание ответа → использование последнего сообщения в следующем запросе
apiDelay (опционально) - задержка (в миллисекундах) между отправкой ответа боту и следующим API запросом. Значение по умолчанию 2000 мс, можно увеличить до 60000 мс и более для ограничения частоты запросов.
waitMessage (опционально) - время ожидания ответа бота (в миллисекундах) перед продолжением сценария. По умолчанию 5000 мс.
use_session (опционально) - включает поддержку session_id, возвращаемого API. При включении бот сохранит session_id после первого запроса и будет автоматически подставлять его в дальнейшем. Это нужно для сохранения контекста: сервер LLM использует session_id, чтобы подгружать историю диалога и помнить контекст чата.
Важно: В apiBody можно использовать переменную {{lastMessage}}, которая будет заменена на последнее сообщение от бота перед каждым API запросом. При use_session=true второй и последующие запросы автоматически получают поле session_id от сервера.
Ответ API должен содержать: поле session_id, например \"session_id\": \"dd0369f7-7699-4bc3-8c10-f2a36edaa16b\". Если поле отсутствует, сессия не будет сохранена.
WebSocket поддержка для GraphQL: Для GraphQL запросов через WebSocket используйте URL с протоколом wss:// или ws://. Система автоматически определит протокол и установит WebSocket соединение. Поддерживаются протоколы graphql-ws (полная поддержка: connection_init, connection_ack, start, data, complete, stop, error) и прямые GraphQL запросы. Пример: "apiUrl": "wss://example.com/graphql" с apiBody в формате {"query": "...", "variables": {...}, "operationName": "..."}. Работает в Telegram и веб-тестах.
{
"id": "step-graphql",
"action": "api_request",
"data": {
"apiUrl": "wss://example.com/graphql",
"apiMethod": "POST",
"apiHeaders": {
"Authorization": "Bearer token"
},
"apiBody": {
"query": "query GetUser($id: ID!) { user(id: $id) { id name email } }",
"variables": {
"id": "123"
},
"operationName": "GetUser"
},
"apiTimeout": 10000,
"responseField": "data.user.name"
},
"waitTime": 2000,
"screenshot": false
}
Особенности GraphQL через WebSocket:
- Автоматическая поддержка протокола
graphql-ws с полным циклом сообщений
- Обнаружение ошибок GraphQL (
response.errors) с добавлением в findings
- Поддержка
responseField для извлечения вложенных полей (например, "data.user.name")
- Поддержка переменных (
variables) и имени операции (operationName)
- Работает как в Telegram тестах, так и в веб-тестах
13. chat_summary - Анализ диалога через Ollama
Автоматически собирает все сообщения из чата, промотав диалог снизу вверх, и получает AI-анализ диалога через Ollama. Результат сохраняется в отчете.
{
"id": "step-15",
"action": "chat_summary",
"data": {},
"screenshot": true
}
Параметры data:
- Параметры не требуются - действие работает автоматически
Как это работает:
- Скроллинг чата - система автоматически промотает весь диалог снизу вверх
- Сбор сообщений - собираются все сообщения с датами и никнеймами отправителей
- AI-анализ - весь диалог отправляется в
OLLAMA_URL для получения саммари
- Результат - в отчете сохраняется полный диалог и AI-саммари
Результат в отчете:
- 📊 Саммари от AI с анализом диалога (о чем был диалог, участники, краткий смысл)
- 💬 Полный список всех сообщений (первые 20 и последние 5)
- 🤖 Метаданные: имя бота, темы, длина диалога, дата анализа
Общие параметры шага
Каждый шаг сценария может содержать следующие общие параметры:
id (обязательно) - уникальный идентификатор шага
action (обязательно) - тип действия (см. список выше)
data (обязательно) - данные для действия (зависят от типа действия)
waitTime (опционально) - время ожидания после выполнения шага в миллисекундах
timeout (опционально) - максимальное время выполнения шага в миллисекундах
retries (опционально) - количество повторных попыток при ошибке
screenshot (опционально) - делать ли скриншот после выполнения шага (true/false)
expectedResponse (опционально) - ожидаемый ответ от бота (см. описание выше)
Полный пример сценария
Пример комплексного тестового сценария с использованием всех основных функций
{
"id": "comprehensive-test",
"name": "Complex test bot",
"description": "Test with all bot features",
"botUsername": "@example_bot",
"timeout": 60000,
"retries": 1,
"steps": [
{
"id": "step-1",
"action": "send_message",
"data": {
"text": "/start"
},
"waitTime": 2000,
"screenshot": true
},
{
"id": "step-2",
"action": "wait_for_message",
"data": {
"messagesCount": 1
},
"expectedResponse": {
"type": "text",
"contains": "Hello"
},
"waitTime": 5000,
"screenshot": true
},
{
"id": "step-3",
"action": "click_button",
"data": {
"buttonText": "Start"
},
"waitTime": 2000,
"screenshot": true
},
{
"id": "step-4",
"action": "send_message",
"data": {
"text": "How are you?"
},
"waitTime": 2000,
"screenshot": true
},
{
"id": "step-5",
"action": "api_request",
"data": {
"apiUrl": "https://api.example.com/v1/chat/completions",
"apiMethod": "POST",
"apiHeaders": {
"Content-Type": "application/json"
},
"apiBody": {
"user_id": "test_user",
"messages": [
{
"role": "user",
"content": "{{lastMessage}}"
}
]
},
"responseField": "choices.0.message.content",
"messagesCount": 3
},
"waitTime": 3000,
"screenshot": true
},
{
"id": "step-6",
"action": "send_photo",
"data": {
"filePath": "./examples/test-data/sample-image.jpg"
},
"waitTime": 3000,
"screenshot": true
},
{
"id": "step-7",
"action": "wait",
"data": {
"waitTime": 2000
},
"screenshot": false
}
]
}
Тестирование веб-сайтов
Автоматическое тестирование
BotFake автоматически анализирует веб-сайт и генерирует тестовые сценарии на основе структуры сайта.
Типы тестов для сайтов:
- Краулинг - автоматический обход всех страниц сайта (максимум 5 страниц)
- Клик-тесты - автоматические клики по ссылкам и элементам меню
- SEO анализ - комплексная проверка мета-тегов, заголовков, структуры, ссылок, sitemap, robots.txt
- Метрики производительности - скорость загрузки, размер страницы, network throttling
Расширенный SEO анализ
BotFake выполняет комплексный SEO анализ веб-сайтов, включая:
- Проверка ссылок (Broken Links) - автоматическая валидация всех внутренних и внешних ссылок с проверкой статус-кодов
- Валидация Canonical URL - проверка абсолютности, доступности и правильности canonical тегов
- Проверка Sitemap.xml - парсинг и валидация sitemap файлов (обычные и sitemap index)
- Проверка Robots.txt - парсинг всех директив (User-agent, Disallow, Allow, Sitemap)
- Анализ структуры URL - проверка длины, глубины, регистра, кириллицы, числовых ID
- Проверка дублей контента - обнаружение дублирующихся title, description, H1 тегов и похожих блоков контента
Все результаты SEO анализа автоматически включаются в HTML отчеты с детальными метриками, проблемами и рекомендациями.
Расширенные метрики производительности
BotFake включает комплексный анализ производительности веб-сайтов:
Network Throttling (Эмуляция сетевых условий)
Эмуляция различных сетевых условий для тестирования производительности:
- Предустановленные профили: offline, slow-3G, 3G, fast-3G, 4G
- Кастомные настройки: downloadThroughput, uploadThroughput, latency
- Использование: Автоматически применяется при тестировании или может быть настроено программно
CPU Throttling
Эмуляция медленного CPU для тестирования на слабых устройствах:
- Настраиваемый коэффициент замедления (rate: 1 = без throttling, 2 = 2x медленнее)
- Использует CDP команду
Emulation.setCPUThrottlingRate
Memory Profiling
Детальное профилирование использования памяти:
- Используемая память heap (usedJSHeapSize, totalJSHeapSize, jsHeapSizeLimit)
- Количество DOM узлов и документов
- Автоматически собирается при анализе производительности
Network Waterfall Analysis
Детальный анализ последовательности загрузки ресурсов:
- Метрики для каждого ресурса: DNS, TCP, SSL, Request, Response, Transfer, Blocked time
- Автоматическое определение блокирующих ресурсов (render-blocking CSS, blocking JS)
- Использует Resource Timing API для точных измерений
Long Tasks Detection
Обнаружение задач, блокирующих main thread:
- Обнаружение задач длительностью 50ms+
- Детальная информация о контейнере (iframe, worker)
- Использует Performance Observer API
JavaScript Bundle Analysis
Анализ размера и состава JS бандлов:
- Размер каждого бандла (transferSize, decodedBodySize)
- Анализ атрибутов загрузки (async, defer, module)
- Автоматические рекомендации по оптимизации (code splitting, lazy loading)
Примечание: Все метрики производительности автоматически собираются и включаются в HTML отчеты с детальными графиками и рекомендациями.
Запуск теста сайта
- Перейдите на вкладку "Тестер сайтов"
- Введите URL сайта для тестирования
- Выберите режим (headless или с браузером)
- Нажмите "Запустить тест"
- Дождитесь завершения и просмотрите результаты
Подсказка: Headless режим работает быстрее, но без визуального отображения браузера.
Автоматическая генерация тестовых сценариев
BotFake может автоматически генерировать тестовые сценарии для веб-сайтов на основе их структуры. Это позволяет быстро создавать тесты без ручного написания JSON.
Нужен более сложный сценарий? Используйте функцию "Сгенерировать сценарий с помощью ИИ" — опишите ваш сайт, и администратор создаст для вас полноценный тестовый сценарий в течение 2 дней!
Как работает генератор:
- Анализ структуры сайта - BotFake автоматически анализирует HTML структуру страницы
- Обнаружение элементов - Находит ссылки, кнопки, формы и другие интерактивные элементы
- Генерация шагов - Создает автоматические шаги для кликов, навигации и проверок
- Создание сценария - Формирует готовый JSON сценарий, который можно использовать или редактировать
Использование генератора:
- Введите URL сайта в поле "Тестер сайтов"
- Нажмите "Запустить тест" - система автоматически сгенерирует сценарий
- Просмотрите сгенерированный сценарий в логах выполнения
- При необходимости отредактируйте сценарий для более точного тестирования
Преимущества: Автоматическая генерация экономит время и позволяет быстро начать тестирование новых сайтов.
Visual Regression Testing (Регрессионное тестирование)
Visual Regression Testing позволяет сравнивать скриншоты страниц с baseline (эталонными) изображениями для обнаружения визуальных изменений в UI.
Как это работает:
- Baseline - эталонное изображение, сохраненное при первом запуске
- Сравнение - каждый последующий запуск сравнивает текущий скриншот с baseline
- Diff изображения - при обнаружении различий создается изображение с выделением измененных областей
- Порог различий - настраиваемый порог для определения значимости изменений
Использование в сценариях:
Добавьте параметр visualRegression в шаг сценария:
{
"id": "step-1",
"action": "send_message",
"data": { "text": "/start" },
"screenshot": true,
"visualRegression": {
"baseline": false,
"threshold": 0.1,
"failOnDiff": true,
"autoUpdateBaselineOnDimensionMismatch": false,
"compareOverlappingArea": true,
"ignoreAreas": [
{
"x": 0,
"y": 0,
"width": 100,
"height": 50,
"reason": "Ignore time area"
}
]
}
}
Параметры Visual Regression:
- baseline -
true для создания baseline при первом запуске, false для сравнения
- threshold - порог различий от 0.0 до 1.0 (по умолчанию 0.1 = 0.1%)
- failOnDiff - завершить тест с ошибкой при обнаружении различий (
true/false)
- ignoreAreas - массив областей для игнорирования при сравнении (x, y, width, height, reason)
- autoUpdateBaselineOnDimensionMismatch - автоматически обновлять baseline при изменении размеров изображений (
true/false, по умолчанию false)
- compareOverlappingArea - сравнивать только пересекающиеся области при разных размерах изображений (
true/false, по умолчанию false)
Работа с Baseline:
- Создание baseline - установите
\"baseline\": true в первом запуске теста
- Сравнение - последующие запуски с
\"baseline\": false будут сравниваться с baseline
- Обновление baseline - при необходимости обновите baseline, запустив тест с
\"baseline\": true
- Автоматическое обновление baseline - установите
\"autoUpdateBaselineOnDimensionMismatch\": true для автоматического обновления baseline при изменении размеров
- Просмотр результатов - Diff изображения сохраняются в папке
screenshots/baseline/{userId}/
Обработка разных размеров изображений:
Если размеры текущего скриншота отличаются от baseline, доступны следующие опции:
- Автоматическое обновление baseline - установите
\"autoUpdateBaselineOnDimensionMismatch\": true для автоматического обновления baseline (рекомендуется для динамического контента)
- Сравнение пересекающихся областей - установите
\"compareOverlappingArea\": true для сравнения только общей части изображений (например, верхней области)
- Предупреждение без сравнения - по умолчанию показывается предупреждение о несовпадении размеров без сравнения
Важно: Baseline изображения хранятся в screenshots/baseline/{userId}/. Не удаляйте их без необходимости!
Режимы тестирования веб-сайтов
BotFake поддерживает два режима тестирования веб-сайтов:
1. Автосценарий (по умолчанию)
AI автоматически анализирует сайт и генерирует тестовый сценарий на основе структуры и доступных элементов.
- ✅ Быстрый старт без ручной настройки
- ✅ Автоматическое обнаружение форм, кнопок, ссылок
- ✅ Интеллектуальная генерация тестовых шагов
- ✅ Подходит для первичного анализа сайта
2. Редактор сценариев (ручной режим)
Создавайте собственные сценарии тестирования с точным контролем каждого шага.
- ✅ Полный контроль над действиями и селекторами
- ✅ Использование готовых веб-шаблонов
- ✅ Редактирование JSON сценариев
- ✅ Подходит для регрессионного тестирования
Переключение режима: Используйте тумблер «Режим тестирования» в форме настроек теста.
Новые действия для веб-тестирования
Доступны специальные действия для детального тестирования веб-сайтов:
1. web_navigate - Навигация на URL
Открывает указанный URL в браузере.
{
"id": "step-1",
"action": "web_navigate",
"data": {
"url": "https://example.com"
},
"screenshot": true
}
2. web_click - Клик по элементу
Находит элемент по CSS селектору и выполняет клик.
{
"id": "step-2",
"action": "web_click",
"data": {
"buttonSelector": "button.primary-btn",
"waitForSelector": ".success-message",
"waitTime": 1000,
"clickOptions": {
"button": "left",
"clickCount": 1,
"delay": 100
}
},
"screenshot": true
}
Параметры:
buttonSelector - CSS селектор элемента для клика (обязательно)
waitForSelector - Селектор элемента, появление которого нужно ждать после клика
waitTime - Задержка после клика в мс (по умолчанию 1000)
selectorTimeout - Время ожидания появления элемента в мс (по умолчанию 10000)
clickOptions - Дополнительные опции клика (button, clickCount, delay, force)
3. web_click_submenu - Клик по подменю
Наводит курсор на родительский элемент меню, затем кликает по элементу подменю.
{
"id": "step-3",
"action": "web_click_submenu",
"data": {
"submenuParentSelector": "nav .catalog-menu",
"submenuSelector": "nav .catalog-menu .category-electronics",
"waitTime": 1000
},
"screenshot": true
}
Параметры:
submenuParentSelector - Селектор родительского элемента меню (обязательно)
submenuSelector - Селектор элемента подменю для клика (обязательно)
waitTime - Задержка после наведения перед кликом в мс (по умолчанию 1000)
4. web_login - Авторизация на сайте
Автоматически заполняет и отправляет форму входа.
{
"id": "step-4",
"action": "web_login",
"data": {
"username": "test@example.com",
"password": "SecurePassword123",
"loginSelectors": {
"username": "input[name='email']",
"password": "input[name='password']",
"submit": "button[type='submit']"
},
"loginTimeout": 10000
},
"screenshot": true
}
Параметры:
username - Логин/email пользователя (обязательно)
password - Пароль пользователя (обязательно)
loginSelectors - Кастомные CSS селекторы для полей формы (опционально)
loginTimeout - Таймаут ожидания элементов формы в мс (по умолчанию 30000)
Автоматические селекторы по умолчанию:
- Username:
input[type=\"text\"], input[type=\"email\"], input[name=\"username\"], input[name=\"email\"]
- Password:
input[type=\"password\"], input[name=\"password\"]
- Submit:
button[type=\"submit\"], input[type=\"submit\"], button:has-text(\"Login\"), button:has-text(\"Sign in\")
5. web_fill_form - Заполнение формы
Заполняет несколько полей формы и опционально отправляет её.
{
"id": "step-5",
"action": "web_fill_form",
"data": {
"formFields": [
{
"selector": "input[name='name']",
"value": "Иван Тестовый",
"type": "text"
},
{
"selector": "input[name='email']",
"value": "test@example.com",
"type": "email"
},
{
"selector": "input[name='phone']",
"value": "+7 (999) 123-45-67",
"type": "text"
},
{
"selector": "input[name='agree']",
"value": "true",
"type": "checkbox"
},
{
"selector": "select[name='country']",
"value": "RU",
"type": "select"
}
],
"formSubmitSelector": "button[type='submit']",
"waitTime": 500
},
"screenshot": true
}
Параметры:
formFields - Массив полей для заполнения (обязательно). Каждое поле может содержать:
selector - CSS селектор поля (обязательно)
value - Значение для заполнения (обязательно)
type - Тип поля: text, email, password, number, select, checkbox, radio
required - Проверять обязательность поля (по умолчанию проверяется атрибут required)
pattern - Regex паттерн для валидации значения
min - Минимальное значение для числовых полей
max - Максимальное значение для числовых полей
minLength - Минимальная длина для текстовых полей
maxLength - Максимальная длина для текстовых полей
formSubmitSelector - Селектор кнопки отправки формы (опционально)
waitTime - Задержка между заполнением полей в мс (по умолчанию 500)
validateForm - Включить валидацию полей перед отправкой (по умолчанию false)
checkErrorMessages - Проверять сообщения об ошибках после отправки (по умолчанию false)
errorMessageSelectors - Массив селекторов для поиска сообщений об ошибках (например, [".error", ".invalid-feedback"])
expectedErrors - Массив ожидаемых сообщений об ошибках (для проверки валидации)
waitForSuccess - Ожидать индикатор успешной отправки (по умолчанию false)
successSelector - Селектор элемента, указывающего на успешную отправку
expectedUrl - Ожидаемый URL после отправки формы (для проверки редиректа)
Пример с валидацией:
{
"id": "step-5-validated",
"action": "web_fill_form",
"data": {
"formFields": [
{
"selector": "input[name='email']",
"value": "test@example.com",
"type": "email",
"required": true,
"pattern": "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$"
},
{
"selector": "input[name='age']",
"value": "25",
"type": "number",
"min": 18,
"max": 100
},
{
"selector": "input[name='password']",
"value": "SecurePass123",
"type": "password",
"minLength": 8,
"maxLength": 50
}
],
"formSubmitSelector": "button[type='submit']",
"validateForm": true,
"checkErrorMessages": true,
"errorMessageSelectors": [".error", ".invalid-feedback", "[role='alert']"],
"waitForSuccess": true,
"successSelector": ".success-message",
"expectedUrl": "/success",
"waitTime": 500
},
"screenshot": true
}
Пример с проверкой ошибок валидации:
{
"id": "step-5-error-check",
"action": "web_fill_form",
"data": {
"formFields": [
{
"selector": "input[name='email']",
"value": "invalid-email",
"type": "email"
}
],
"formSubmitSelector": "button[type='submit']",
"checkErrorMessages": true,
"errorMessageSelectors": [".error-message"],
"expectedErrors": ["Некорректный email", "Invalid email"],
"waitTime": 500
},
"screenshot": true
}
Важно: При включении validateForm система проверяет все поля перед отправкой формы. Если найдены ошибки валидации, форма не будет отправлена. При включении checkErrorMessages система автоматически ищет сообщения об ошибках после отправки формы, используя указанные селекторы или стандартные селекторы (.error, .invalid-feedback, [role=\"alert\"]).
6. web_scroll_screenshot - Скролл с скриншотами
Прокручивает страницу сверху вниз с автоматическим созданием скриншотов каждого экрана.
{
"id": "step-6",
"action": "web_scroll_screenshot",
"data": {
"scrollStep": 800,
"scrollDelay": 500,
"screenshotFullPage": false
},
"screenshot": true
}
Параметры:
scrollStep - Количество пикселей для прокрутки за один шаг (по умолчанию 800)
scrollDelay - Задержка между шагами прокрутки в мс (по умолчанию 500)
screenshotFullPage - Делать полный скриншот страницы или только видимой области
Применение: Идеально подходит для создания полного превью лендингов и длинных страниц.
7. web_wait - Ожидание
Простая пауза между действиями.
{
"id": "step-7",
"action": "web_wait",
"data": {
"waitTime": 2000
}
}
8. web_screenshot - Создание скриншота
Делает скриншот текущего состояния страницы.
{
"id": "step-8",
"action": "web_screenshot",
"data": {
"screenshotFullPage": true
}
}
9. crawler - Многоуровневый обход сайта
Автоматически обходит все страницы сайта, собирая ссылки и анализируя структуру с настраиваемой глубиной вложенности.
{
"id": "step-9",
"action": "crawler",
"data": {
"startUrl": "https://example.com",
"crawlerMaxDepth": 3,
"crawlerMaxPages": 50,
"crawlerTimeout": 15000,
"crawlerSameDomain": true,
"crawlerFollowExternalLinks": false,
"crawlerRespectRobots": true,
"crawlerTestPages": true,
"crawlerDelay": 1000,
"crawlerScreenshotPerPage": true
},
"screenshot": true
}
Параметры:
startUrl - URL для начала обхода (опционально, используется текущий URL)
crawlerMaxDepth - Максимальная глубина вложенности (по умолчанию 2)
crawlerMaxPages - Максимальное количество страниц для обхода (по умолчанию 20)
crawlerTimeout - Таймаут загрузки каждой страницы в мс (по умолчанию 15000)
crawlerSameDomain - Обходить только страницы того же домена (по умолчанию true)
crawlerFollowExternalLinks - Следовать внешним ссылкам (по умолчанию false). Если true, краулер будет обходить ссылки на другие домены. Внимание: это может привести к обходу всего интернета, используйте с осторожностью!
crawlerRespectRobots - Учитывать robots.txt (по умолчанию true)
crawlerTestPages - Тестировать каждую найденную страницу на ошибки (по умолчанию false)
crawlerDelay - Задержка между запросами в мс для предотвращения перегрузки (по умолчанию 1000)
crawlerScreenshotPerPage - Делать скриншот для каждой обойденной страницы (по умолчанию false). Скриншоты отображаются в отчете под информацией о каждой странице.
Применение: Идеально для полного аудита сайта, проверки всех страниц на работоспособность, поиска битых ссылок и анализа структуры навигации.
Примечание: Crawler автоматически учитывает robots.txt и добавляет задержки между запросами, чтобы не перегружать целевой сервер.
Важно: По умолчанию crawlerFollowExternalLinks=false, что означает, что краулер будет пропускать ссылки на другие домены. Это нормальное поведение и не является ошибкой. Если вы видите сообщение \"внешняя ссылка (followExternalLinks=false)\" в логах - это информационное сообщение о том, что ссылка была пропущена. Если вам нужно обходить внешние ссылки, установите crawlerFollowExternalLinks: true, но будьте осторожны - это может привести к обходу всего интернета!
10. security - Security Scan (базовый набор)
Запускает комплексное сканирование сайта на распространённые уязвимости из OWASP Top 10: SSL/TLS, заголовки безопасности, XSS, SQL Injection, Path Traversal, анализ cookie, CORS и др.
{
"id": "step-10",
"action": "security",
"data": {
"startUrl": "https://example.com/login",
"securityChecks": [
"ssl",
"headers",
"info-disclosure",
"cors",
"clickjacking",
"rate-limit",
"open-redirect",
"xss",
"sqli",
"path-traversal",
"crypto",
"csrf",
"session-management",
"jwt",
"oauth",
"csp",
"sri"
],
"securityDepth": "standard",
"securityMaxPayloads": 60,
"securityIncludeProof": true,
"securityStopOnCritical": true
}
}
Параметры:
startUrl — начальный URL (опционально, по умолчанию используется текущий адрес теста)
securityChecks — список включённых проверок (см. ниже)
securityDepth — интенсивность сканирования: basic, standard, aggressive
securityMaxPayloads — ограничение на количество payload в XSS/SQLi тестах (по умолчанию 50)
securityIncludeProof — сохранять ли сниппеты-доказательства в отчёт
securityStopOnCritical — остановка сканирования при первой критической уязвимости
UI: конфигуратор Security Scan вынесен в отдельный блок с двухколоночной сеткой чекбоксов, компактным дизайном и кастомными тултипами без Bootstrap.
Логи: на вкладке результатов показывается прогресс по payload'ам, время каждой проверки и итоговая сводка (критические/высокие/средние находки, общее число проверок).
Что проверяется:
- SSL/TLS: валидность сертификата, версия TLS, redirect HTTP→HTTPS, HSTS, смешанный контент.
- Security Headers: наличие CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Strict-Transport-Security, Permissions-Policy и др.
- Information Disclosure: открытые конфиги (.env, config.php), backup-файлы, directory listing, версии ПО, debug-страницы, stacktrace.
- XSS (Phase 2): 18+ Reflected/DOM payload'ов (скрипты, события, DOM-инъекции, iframes, embed и т.д.).
- SQL Injection (Phase 2): классические, union-, error- и time-based payload'ы (в т.ч. WAITFOR DELAY, ORDER BY).
- Path Traversal (Phase 2): чтение системных и конфигурационных файлов, URL/double-encoded и Windows пути.
- CORS: wildcard + credentials, null origin, отражённые origin, небезопасные протоколы.
- Clickjacking: защита от iframe (X-Frame-Options, CSP frame-ancestors).
- Rate Limiting: throttling на логин/регистрацию, наличие капчи, блокировка после N попыток.
- Open Redirect: редирект-параметры (https, data URI, javascript:, \\evil.com и пр.).
- Crypto & Cookies (Phase 2): флаги Secure/HttpOnly, политика SameSite, наличие HSTS.
- CSRF Protection: проверка наличия CSRF токенов, SameSite cookies, проверка Origin/Referer заголовков, тестирование endpoint'ов на уязвимость к CSRF атакам.
- Session Management: проверка предсказуемости session ID, наличие HttpOnly/Secure флагов, timeout сессий, безопасное хранение session ID.
- JWT Token Security: проверка алгоритмов подписи, наличие времени истечения (exp), безопасное хранение токенов, проверка на передачу токенов через URL.
- OAuth Flow Security: проверка наличия state параметра, валидация redirect_uri, использование HTTPS для callback, проверка на open redirect уязвимости.
- Content Security Policy (CSP): проверка наличия CSP заголовка, валидация директив, проверка на небезопасные значения (unsafe-inline, unsafe-eval), наличие важных директив.
- Subresource Integrity (SRI): проверка наличия integrity атрибутов у внешних скриптов и стилей, валидация формата хешей (sha256, sha384, sha512).
Важно: Запускайте Security Scan только на ресурсах, тестирование которых вам разрешено. В режиме aggressive количество запросов возрастает и может вызвать срабатывание WAF/IDS.
11. seo_analysis - Расширенный SEO анализ
Запускает комплексный SEO анализ страницы, включая проверку broken links, canonical URLs, sitemap.xml, robots.txt, анализ структуры URL и проверку дублей контента.
{
"id": "step-11",
"action": "seo_analysis",
"data": {}
}
Параметры:
- Не требует дополнительных параметров - анализ выполняется автоматически для текущей страницы
Что проверяется:
- Проверка внутренних и внешних ссылок (broken links)
- Валидация canonical URLs
- Проверка sitemap.xml
- Проверка robots.txt
- Анализ структуры URL
- Проверка дублей контента
Применение: Используйте для полного SEO аудита страницы. Результаты автоматически включаются в отчет с детальными метриками и рекомендациями.
12. network_throttling - Эмуляция сетевых условий
Устанавливает эмуляцию различных сетевых условий для тестирования производительности на медленных соединениях.
{
"id": "step-12",
"action": "network_throttling",
"data": {
"networkThrottlingProfile": "3G"
}
}
Параметры:
networkThrottlingProfile - Профиль сети: \"offline\", \"slow-3G\", \"3G\", \"fast-3G\", \"4G\", \"custom\" (по умолчанию \"3G\")
networkThrottlingCustom - Кастомные настройки (только для profile=\"custom\"):
downloadThroughput - Скорость загрузки в bytes per second
uploadThroughput - Скорость отдачи в bytes per second
latency - Задержка в миллисекундах
disableNetworkThrottling - Отключить throttling (установить в true)
Пример с кастомными настройками:
{
"id": "step-12-custom",
"action": "network_throttling",
"data": {
"networkThrottlingProfile": "custom",
"networkThrottlingCustom": {
"downloadThroughput": 262144,
"uploadThroughput": 131072,
"latency": 100
}
}
}
Применение: Используйте перед тестированием производительности для эмуляции медленных сетей. Throttling применяется ко всем последующим запросам до отключения.
13. cpu_throttling - Эмуляция медленного CPU
Устанавливает эмуляцию медленного CPU для тестирования производительности на слабых устройствах.
{
"id": "step-13",
"action": "cpu_throttling",
"data": {
"cpuThrottlingRate": 2
}
}
Параметры:
cpuThrottlingRate - Коэффициент замедления: 1 = без throttling, 2 = в 2 раза медленнее, 4 = в 4 раза медленнее и т.д. (по умолчанию 2)
disableCPUThrottling - Отключить throttling (установить в true)
Применение: Используйте для тестирования производительности на слабых устройствах. Throttling применяется ко всем JavaScript операциям до отключения.
14. performance_analysis - Анализ производительности
Собирает комплексные метрики производительности страницы, включая memory profiling, network waterfall, long tasks detection и JavaScript bundle analysis.
{
"id": "step-14",
"action": "performance_analysis",
"data": {}
}
Параметры:
- Не требует дополнительных параметров - анализ выполняется автоматически
Что собирается:
- Core Web Vitals: FCP, LCP, TTI, CLS, TBT
- Memory Profiling: usedJSHeapSize, totalJSHeapSize, jsHeapSizeLimit, nodesCount, documentsCount
- Network Waterfall: Детальные метрики для каждого ресурса (DNS, TCP, SSL, Request, Response, Transfer, Blocked time)
- Long Tasks Detection: Обнаружение задач, блокирующих main thread на 50ms+
- JavaScript Bundle Analysis: Размер, тип, async/defer/module атрибуты, рекомендации по оптимизации
Применение: Используйте для полного анализа производительности страницы. Результаты автоматически включаются в отчет с детальными метриками и рекомендациями.
Примечание: Для более точных результатов рекомендуется установить network throttling перед запуском анализа производительности.
15. accessibility - Анализ доступности (a11y)
Выполняет комплексный анализ доступности страницы согласно стандартам WCAG (Web Content Accessibility Guidelines).
{
"id": "step-15",
"action": "accessibility",
"data": {}
}
Параметры:
- Не требует дополнительных параметров - анализ выполняется автоматически
Что проверяется:
- ARIA атрибуты: Проверка наличия доступных имен для интерактивных элементов, валидность ARIA roles
- Alt-тексты для изображений: Обнаружение изображений без alt атрибутов или с пустыми alt
- Семантическая разметка: Проверка наличия семантических тегов (header, nav, main, footer)
- Иерархия заголовков: Проверка правильной последовательности h1-h6, отсутствие пропущенных уровней
- Формы: Проверка наличия label для полей формы, aria-required для обязательных полей
- Навигация с клавиатуры: Проверка tabindex, доступности элементов с role для клавиатурной навигации
- axe-core интеграция: Автоматический запуск axe-core для дополнительных проверок
- Lighthouse интеграция: Автоматический запуск Lighthouse accessibility audit для комплексной проверки
Результаты:
- Оценка доступности (0-100 баллов) с комбинированием результатов (70% наш анализ + 30% Lighthouse)
- WCAG уровень соответствия (AAA, AA, A, F)
- Детальный список проблем с рекомендациями
- Результаты axe-core анализа (если доступно)
- Результаты Lighthouse accessibility audit (если доступно)
Применение: Используйте для проверки соответствия сайта стандартам доступности WCAG. Результаты автоматически включаются в отчет с детальными метриками и рекомендациями.
Примечание: Анализ доступности включает интеграцию с axe-core и Lighthouse для более глубокой проверки. Если эти инструменты не загрузятся, анализ все равно выполнится с базовыми проверками.
16. mobile_device - Эмуляция мобильного устройства
Эмулирует различные мобильные устройства (iPhone, Android, планшеты) с правильными viewport размерами, User-Agent и device scale factor.
{
"id": "step-16",
"action": "mobile_device",
"data": {
"deviceName": "iPhone 13"
}
}
Параметры:
deviceName - Название устройства. Доступные значения:
'iPhone 13' - iPhone 13 (390x844, scale 3x)
'iPhone 13 Pro' - iPhone 13 Pro (390x844, scale 3x)
'iPhone 12' - iPhone 12 (390x844, scale 3x)
'iPhone 11' - iPhone 11 (414x896, scale 2x)
'iPhone SE' - iPhone SE (375x667, scale 2x)
'iPhone 8' - iPhone 8 (375x667, scale 2x)
'iPad Pro' - iPad Pro (1024x1366, scale 2x)
'iPad Air' - iPad Air (820x1180, scale 2x)
'iPad Mini' - iPad Mini (768x1024, scale 2x)
'Galaxy S21' - Samsung Galaxy S21 (360x800, scale 3x)
'Galaxy S20' - Samsung Galaxy S20 (360x800, scale 3x)
'Galaxy Note 20' - Samsung Galaxy Note 20 (412x915, scale 3x)
'Pixel 5' - Google Pixel 5 (393x851, scale 2.75x)
'Pixel 4' - Google Pixel 4 (393x851, scale 3x)
'Nexus 10' - Google Nexus 10 (800x1280, scale 2x)
'Nexus 7' - Google Nexus 7 (600x960, scale 2x)
'custom' - Кастомное устройство (требует указания параметров viewport вручную)
viewportWidth (для custom) - Ширина viewport в пикселях
viewportHeight (для custom) - Высота viewport в пикселях
deviceScaleFactor (для custom) - Коэффициент масштабирования устройства (1-4)
isMobile (для custom) - Является ли устройство мобильным
hasTouch (для custom) - Поддержка touch событий
Доступные устройства:
- iPhone: iPhone 13, iPhone 13 Pro, iPhone 12, iPhone 11, iPhone SE, iPhone 8
- iPad: iPad Pro, iPad Air, iPad Mini
- Android: Galaxy S21, Galaxy S20, Galaxy Note 20, Pixel 5, Pixel 4, Nexus 10, Nexus 7
- Custom: Произвольное устройство с указанием параметров вручную
Применение: Используйте для тестирования responsive design и мобильной версии сайта. Устройство эмулируется с правильными размерами экрана и User-Agent.
17. viewport - Установка viewport
Устанавливает произвольный размер viewport для тестирования на разных разрешениях экрана.
{
"id": "step-17",
"action": "viewport",
"data": {
"viewportWidth": 1920,
"viewportHeight": 1080,
"deviceScaleFactor": 1,
"isMobile": false,
"hasTouch": false
}
}
Параметры:
viewportWidth - Ширина viewport в пикселях (обязательно)
viewportHeight - Высота viewport в пикселях (обязательно)
deviceScaleFactor - Коэффициент масштабирования (по умолчанию 1)
isMobile - Является ли устройство мобильным (по умолчанию false)
hasTouch - Поддержка touch событий (по умолчанию false)
Применение: Используйте для тестирования responsive design на конкретных разрешениях экрана без эмуляции полного устройства.
18. orientation - Ориентация экрана
Изменяет ориентацию экрана между portrait (вертикальная) и landscape (горизонтальная).
{
"id": "step-18",
"action": "orientation",
"data": {
"orientation": "landscape"
}
}
Параметры:
orientation - Ориентация экрана: \"portrait\" (вертикальная) или \"landscape\" (горизонтальная)
Применение: Используйте для тестирования адаптации сайта к разным ориентациям экрана. Размеры viewport автоматически меняются местами.
19. touch_swipe - Жест swipe (свайп)
Выполняет жест свайпа в указанном направлении. Полезно для тестирования мобильных интерфейсов с жестами.
{
"id": "step-19",
"action": "touch_swipe",
"data": {
"swipeDirection": "up",
"swipeDistance": 300,
"swipeDuration": 300
}
}
Параметры:
swipeDirection - Направление свайпа: \"up\", \"down\", \"left\", \"right\"
swipeDistance - Расстояние свайпа в пикселях (по умолчанию 300)
swipeDuration - Длительность жеста в миллисекундах (по умолчанию 300)
Применение: Используйте для тестирования мобильных интерфейсов с поддержкой жестов (карусели, слайдеры, навигация свайпом).
20. touch_pinch - Жест pinch (масштабирование)
Выполняет жест pinch-to-zoom для увеличения или уменьшения масштаба страницы.
{
"id": "step-20",
"action": "touch_pinch",
"data": {
"pinchType": "zoomIn",
"pinchScale": 1.5
}
}
Параметры:
pinchType - Тип жеста: \"zoomIn\" (увеличить) или \"zoomOut\" (уменьшить)
pinchScale - Коэффициент масштабирования (по умолчанию 1.5)
Применение: Используйте для тестирования поведения сайта при масштабировании (zoom in/out) на мобильных устройствах.
21. touch_tap - Касание (tap)
Выполняет касание (tap) в указанных координатах. Полезно для тестирования мобильных интерфейсов.
{
"id": "step-21",
"action": "touch_tap",
"data": {
"tapX": 100,
"tapY": 100,
"tapCount": 1
}
}
Параметры:
tapX - X координата касания в пикселях (обязательно)
tapY - Y координата касания в пикселях (обязательно)
tapCount - Количество тапов (по умолчанию 1, максимум 5 для двойного/тройного тапа)
Применение: Используйте для тестирования мобильных интерфейсов, где нужно точно указать координаты касания. Альтернатива web_click для touch устройств.
20. api_test - Тестирование REST API
Выполняет HTTP запрос к API endpoint и валидирует ответ.
{
"id": "step-api-1",
"action": "api_test",
"data": {
"apiEndpoint": "/api/users",
"apiMethod": "GET",
"apiHeaders": {
"Content-Type": "application/json",
"Authorization": "Bearer token123"
},
"apiQueryParams": {
"page": 1,
"limit": 10
},
"expectedStatus": 200,
"apiTimeout": 30000,
"apiAuthType": "bearer",
"apiAuthToken": "your-jwt-token",
"validateSchema": true,
"expectedResponseSchema": {
"type": "object",
"required": ["users", "total"],
"properties": {
"users": { "type": "array" },
"total": { "type": "number" }
}
}
}
}
Параметры:
apiEndpoint - API endpoint URL (обязательно, может быть относительным или абсолютным)
apiMethod - HTTP метод: GET, POST, PUT, DELETE, PATCH (по умолчанию GET)
apiHeaders - Заголовки запроса (JSON объект)
apiBody - Тело запроса (JSON объект или строка, для POST/PUT/PATCH)
apiQueryParams - Query параметры (JSON объект)
expectedStatus - Ожидаемый HTTP статус-код или массив кодов (по умолчанию [200, 201, 204])
apiTimeout - Таймаут запроса в миллисекундах (по умолчанию 30000)
apiAuthType - Тип аутентификации: none, bearer, basic, apikey (по умолчанию none)
apiAuthToken - Токен для Bearer или API Key аутентификации
apiAuthUsername - Имя пользователя для Basic Auth
apiAuthPassword - Пароль для Basic Auth
apiAuthHeaderName - Имя заголовка для API Key (по умолчанию X-API-Key)
followRedirects - Следовать редиректам (по умолчанию true)
validateSchema - Валидировать JSON схему ответа (по умолчанию false)
expectedResponseSchema - JSON схема для валидации ответа
validateHeaders - Объект с ожидаемыми заголовками ответа (ключ - имя заголовка, значение - строка или RegExp)
Примеры использования:
- GET запрос с query параметрами:
{
"action": "api_test",
"data": {
"apiEndpoint": "/api/users",
"apiMethod": "GET",
"apiQueryParams": { "page": 1, "limit": 20 },
"expectedStatus": 200
}
}
- POST запрос с аутентификацией:
{
"action": "api_test",
"data": {
"apiEndpoint": "/api/users",
"apiMethod": "POST",
"apiBody": { "name": "John", "email": "john@example.com" },
"apiAuthType": "bearer",
"apiAuthToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expectedStatus": 201
}
}
- Валидация схемы ответа:
{
"action": "api_test",
"data": {
"apiEndpoint": "/api/users/1",
"apiMethod": "GET",
"validateSchema": true,
"expectedResponseSchema": {
"type": "object",
"required": ["id", "name", "email"],
"properties": {
"id": { "type": "number" },
"name": { "type": "string" },
"email": { "type": "string", "format": "email" }
}
}
}
}
Автоматическое использование cookies: Если перед API тестом выполнен web_login или другая авторизация через браузер, cookies из браузера автоматически передаются в API запросы. Это позволяет тестировать авторизованные endpoints без необходимости явно указывать токены в заголовках.
Пример с авторизацией через браузер:
{
"steps": [
{
"id": "step-1",
"action": "web_navigate",
"data": { "url": "https://example.com/login" }
},
{
"id": "step-2",
"action": "web_login",
"data": {
"username": "user@example.com",
"password": "password123"
}
},
{
"id": "step-3",
"action": "api_test",
"data": {
"apiEndpoint": "/api/user/profile",
"apiMethod": "GET",
"expectedStatus": 200
}
}
]
}
Применение: Используйте для тестирования REST API endpoints, проверки корректности ответов, валидации схем данных и тестирования различных сценариев аутентификации. Результаты тестирования сохраняются в apiTestResults и отображаются в отчете.
WebSocket поддержка через api_request: Для тестирования GraphQL API через WebSocket (WSS/WS) используйте действие api_request вместо api_test. Укажите URL с протоколом wss:// или ws:// в параметре apiUrl. Система автоматически определит протокол и установит WebSocket соединение с полной поддержкой протокола graphql-ws. См. раздел api_request для подробностей.
21. graphql_test - Тестирование GraphQL API
Выполняет GraphQL запрос к endpoint и валидирует ответ, включая проверку на GraphQL ошибки. Примечание: Для GraphQL через WebSocket (WSS/WS) используйте действие api_request с URL протокола wss:// или ws://.
{
"id": "step-graphql-1",
"action": "graphql_test",
"data": {
"graphqlEndpoint": "/graphql",
"graphqlQuery": "query { users { id name email } }",
"graphqlVariables": {
"limit": 10
},
"graphqlOperationName": "GetUsers",
"apiHeaders": {
"Content-Type": "application/json"
},
"apiAuthType": "bearer",
"apiAuthToken": "your-jwt-token",
"apiTimeout": 30000,
"graphqlValidateErrors": true
}
}
Параметры:
graphqlEndpoint - GraphQL endpoint URL (обязательно, может быть относительным или абсолютным)
graphqlQuery - GraphQL query строка (обязательно)
graphqlVariables - GraphQL variables (JSON объект, опционально)
graphqlOperationName - Имя операции (опционально)
graphqlExpectedData - Ожидаемая структура данных в ответе (опционально)
graphqlValidateErrors - Валидировать наличие GraphQL ошибок (по умолчанию false)
apiHeaders - Заголовки запроса (JSON объект)
apiTimeout - Таймаут запроса в миллисекундах (по умолчанию 30000)
apiAuthType - Тип аутентификации: none, bearer, basic, apikey (по умолчанию none)
apiAuthToken - Токен для Bearer или API Key аутентификации
apiAuthUsername - Имя пользователя для Basic Auth
apiAuthPassword - Пароль для Basic Auth
apiAuthHeaderName - Имя заголовка для API Key (по умолчанию X-API-Key)
Примеры использования:
- Простой GraphQL запрос:
{
"action": "graphql_test",
"data": {
"graphqlEndpoint": "/graphql",
"graphqlQuery": "query { users { id name } }",
"apiAuthType": "bearer",
"apiAuthToken": "token123"
}
}
- GraphQL запрос с переменными:
{
"action": "graphql_test",
"data": {
"graphqlEndpoint": "/graphql",
"graphqlQuery": "query GetUser($id: ID!) { user(id: $id) { id name email } }",
"graphqlVariables": { "id": "1" },
"graphqlOperationName": "GetUser"
}
}
Автоматическое использование cookies: Как и в api_test, GraphQL тесты автоматически используют cookies из браузера, если была выполнена авторизация через web_login или другой способ.
WebSocket для GraphQL: Действие graphql_test использует HTTP/HTTPS протокол. Если ваш GraphQL сервер работает только через WebSocket (WSS/WS), используйте действие api_request с URL протокола wss:// или ws://. Это обеспечит полную поддержку протокола graphql-ws с connection_init, start, data, complete сообщениями.
Применение: Используйте для тестирования GraphQL API endpoints через HTTP/HTTPS, проверки корректности GraphQL запросов и ответов, валидации структуры данных и обнаружения GraphQL ошибок. Для WebSocket используйте api_request. Результаты тестирования сохраняются в graphqlTestResults и отображаются в отчете.
22. rate_limit_test - Тестирование Rate Limiting
Отправляет серию запросов к endpoint для проверки наличия rate limiting защиты.
{
"id": "step-rate-limit-1",
"action": "rate_limit_test",
"data": {
"rateLimitEndpoint": "/api/endpoint",
"rateLimitMethod": "GET",
"rateLimitRequests": 10,
"rateLimitInterval": 100,
"rateLimitExpectedStatus": 429,
"rateLimitExpectedHeader": "X-RateLimit-Remaining",
"apiHeaders": {
"Content-Type": "application/json"
},
"apiAuthType": "bearer",
"apiAuthToken": "your-token",
"apiTimeout": 30000
}
}
Параметры:
rateLimitEndpoint - Endpoint для тестирования rate limiting (обязательно)
rateLimitMethod - HTTP метод: GET, POST, PUT, DELETE, PATCH (по умолчанию GET)
rateLimitRequests - Количество запросов для отправки (по умолчанию 10)
rateLimitInterval - Интервал между запросами в миллисекундах (по умолчанию 100)
rateLimitExpectedStatus - Ожидаемый статус-код при достижении rate limit (по умолчанию 429)
rateLimitExpectedHeader - Ожидаемое имя заголовка, указывающего на rate limit (например, X-RateLimit-Remaining)
apiHeaders - Заголовки запроса (JSON объект)
apiAuthType - Тип аутентификации: none, bearer, basic, apikey (по умолчанию none)
apiAuthToken - Токен для Bearer или API Key аутентификации
apiTimeout - Таймаут запроса в миллисекундах (по умолчанию 30000)
Примеры использования:
- Базовый тест rate limiting:
{
"action": "rate_limit_test",
"data": {
"rateLimitEndpoint": "/api/users",
"rateLimitMethod": "GET",
"rateLimitRequests": 20,
"rateLimitInterval": 50
}
}
- Тест с проверкой заголовка rate limit:
{
"action": "rate_limit_test",
"data": {
"rateLimitEndpoint": "/api/endpoint",
"rateLimitMethod": "POST",
"rateLimitRequests": 15,
"rateLimitInterval": 200,
"rateLimitExpectedStatus": 429,
"rateLimitExpectedHeader": "X-RateLimit-Remaining",
"apiBody": { "action": "test" }
}
}
Автоматическое использование cookies: Rate limiting тесты также автоматически используют cookies из браузера для авторизованных запросов, что позволяет тестировать rate limiting на защищенных endpoints.
Применение: Используйте для проверки наличия и корректности работы rate limiting защиты на API endpoints. Тест отправляет указанное количество запросов с заданным интервалом и проверяет, срабатывает ли rate limiting (возвращается ожидаемый статус-код). Результаты тестирования сохраняются в rateLimitTestResults и включают информацию о количестве успешных и ограниченных запросов, среднее время ответа и детали каждого запроса.
Пример полного сценария с SEO и производительностью
Пример JSON сценария, демонстрирующий использование всех новых действий:
{
"id": "full-seo-performance-test",
"name": "Full SEO & Performance test",
"description": "Complex test with SEO & speed",
"startUrl": "https://example.com",
"timeout": 300000,
"steps": [
{
"id": "step-1",
"action": "web_navigate",
"data": {
"url": "https://example.com"
},
"screenshot": true
},
{
"id": "step-2",
"action": "network_throttling",
"data": {
"networkThrottlingProfile": "3G"
}
},
{
"id": "step-3",
"action": "cpu_throttling",
"data": {
"cpuThrottlingRate": 2
}
},
{
"id": "step-4",
"action": "performance_analysis",
"data": {}
},
{
"id": "step-5",
"action": "seo_analysis",
"data": {}
},
{
"id": "step-6",
"action": "network_throttling",
"data": {
"disableNetworkThrottling": true
}
},
{
"id": "step-7",
"action": "cpu_throttling",
"data": {
"disableCPUThrottling": true
}
}
]
}
Примечания:
- SEO анализ запускается автоматически в конце теста, но вы можете запустить его вручную в любой момент через
seo_analysis
- Анализ производительности также запускается автоматически, но можно запустить вручную через
performance_analysis
- Network и CPU throttling можно установить перед тестированием для более реалистичных условий
- Не забудьте отключить throttling после тестирования, если нужно продолжить с нормальной скоростью
Готовые веб-шаблоны
В системе доступны 6 готовых шаблонов для веб-тестирования:
🔐 Login Form Test
Комплексный тест формы входа с проверкой успешной авторизации.
- Навигация на страницу входа
- Заполнение логина и пароля
- Отправка формы
- Проверка успешного входа
🧭 Site Crawl Audit
Многоуровневый обход сайта с настраиваемой глубиной и количеством страниц.
- Автоматический обход всех страниц сайта
- Настраиваемая глубина вложенности
- Проверка работоспособности ссылок
- Анализ структуры навигации
📸 Full Site Scroll Preview
Полный скролл сайта с автоматическими скриншотами.
- Открытие сайта
- Постепенный скролл сверху донизу
- Автоматическое создание скриншотов каждого экрана
- Возврат наверх
🛡️ Security Scan Baseline
Быстрая проверка базовых параметров безопасности сайта.
- Проверка SSL/TLS сертификата
- Анализ security headers
- Проверка CORS настроек
- Тестирование rate limiting
- Проверка open redirect уязвимостей
🔍 SEO & Performance Analysis
Комплексный анализ SEO и производительности сайта.
- SEO анализ: broken links, canonical URLs, sitemap.xml, robots.txt, структура URL, дубли контента
- Network throttling: эмуляция различных сетевых условий (3G, 4G, slow-3G)
- CPU throttling: эмуляция медленного CPU
- Performance метрики: memory profiling, network waterfall, long tasks detection, JS bundle analysis
- Core Web Vitals: FCP, LCP, TTI, CLS, TBT
Применение: Используйте для полного аудита SEO и производительности сайта. Шаблон автоматически устанавливает throttling, выполняет анализ и отключает throttling в конце.
📱 Mobile Testing & Responsive Design
Комплексное мобильное тестирование с эмуляцией устройств и проверкой responsive design.
- Эмуляция устройств: поддержка 16 популярных устройств:
- iPhone: iPhone 13, iPhone 13 Pro, iPhone 12, iPhone 11, iPhone SE, iPhone 8
- iPad: iPad Pro, iPad Air, iPad Mini
- Android: Galaxy S21, Galaxy S20, Galaxy Note 20, Pixel 5, Pixel 4, Nexus 10, Nexus 7
- Custom: возможность задать произвольные параметры viewport
Все устройства имеют правильные viewport размеры, User-Agent и device scale factor
- Responsive design: тестирование на разных разрешениях viewport (375x667 для мобильных, 768x1024 для планшетов) с автоматическими скриншотами
- Ориентация экрана: тестирование в portrait и landscape режимах с автоматическим изменением размеров viewport
- Touch жесты: тестирование swipe жестов (вверх, вниз) для проверки мобильных интерфейсов с поддержкой жестов
- Автоматическое создание скриншотов на каждом этапе для визуальной проверки адаптации сайта
Применение: Используйте для проверки корректного отображения сайта на мобильных устройствах и планшетах. Шаблон автоматически переключает устройства, ориентацию и выполняет touch жесты с созданием скриншотов.
🔌 API Testing
Комплексное тестирование REST API с поддержкой различных методов HTTP и аутентификации.
- HTTP методы: GET, POST, PUT, DELETE, PATCH
- Валидация статус-кодов: проверка ожидаемых HTTP статус-кодов ответов
- Проверка заголовков: валидация заголовков ответов (Content-Type, Authorization и др.)
- Валидация JSON схем: проверка структуры ответа API на соответствие JSON схеме
- Аутентификация: поддержка различных типов аутентификации:
- Bearer Token: JWT токены и OAuth токены
- Basic Auth: базовая HTTP аутентификация
- API Key: ключи API в заголовках (X-API-Key и др.)
- Query параметры: поддержка передачи параметров в URL
- Request body: отправка JSON и других типов данных в теле запроса
- Custom headers: возможность задать произвольные заголовки запроса
- Таймауты: настраиваемые таймауты для запросов
- Redirects: поддержка следования редиректам (опционально)
- Автоматическое использование cookies: API тесты автоматически используют cookies из браузера, если была выполнена авторизация через
web_login. Это позволяет тестировать авторизованные endpoints без явного указания токенов.
Применение: Используйте для тестирования REST API endpoints, проверки корректности ответов, валидации схем данных и тестирования различных сценариев аутентификации. Для тестирования авторизованных endpoints сначала выполните web_login, затем API тесты автоматически будут использовать cookies сессии.
Совет: Используйте готовые шаблоны как основу для своих сценариев. Загрузите шаблон и адаптируйте его под ваш сайт.