- Создатель Котов Александр Андреевич, отредактировано авг 15, 2025

chrome-plugins-main-QA Delayer (1).zip

# 🐌 QA Delayer - Chrome Extension

Специализированный плагин для QA тестирования - имитация задержек и HTTP ошибок для тестирования производительности и обработки ошибок.

## 🚀 Возможности

- 📡 Медленное соединение: универсальная задержка отправки запросов
- 🐌 Медленный сервер: точные задержки ответа для ERVU доменов + localhost
- ❌ Имитация HTTP ошибок: 400, 401, 403, 404, 422, 429, 500, 502, 503, 504, timeout
- 🎭 Мокинг ответов: полная замена ответа сервера на настраиваемый мок
- 🔧 Поддержка всех типов запросов: XHR, fetch, axios
- 🎯 Гибкие фильтры: RegExp паттерны для выборочного воздействия
- 🧪 Живое тестирование: проверка паттернов прямо в интерфейсе
- 📝 Подробное логирование: детальная информация о задержках и моках
- 🔄 Сброс настроек: быстрый возврат к дефолтным значениям

## 🔄 Режимы работы

### ⏱️ Задержка запросов

#### 📡 Медленное соединение

Универсальная имитация плохого интернет-соединения

    Клиент ──задержка 10сек──> Сервер ──> Быстрый ответ

- Поведение: запрос не отправляется указанное время
- DevTools: запрос появляется только через 10 сек и быстро выполняется
- Совместимость: работает для ВСЕХ доменов
- Использовать для:
  - Тестирования таймаутов бэкенда
  - Имитации плохой связи
  - Проверки retry логики

#### 🐌 Медленный сервер

Точная имитация медленно отвечающего сервера

    Клиент ──> Сервер ──задержка 10сек──> Клиент (точно через 10сек)

- Поведение: HTTP-запрос выполняется сразу, JavaScript ждет указанное время
- DevTools: запрос появляется сразу с реальным временем (например, 64мс)
- JavaScript: получает ответ точно через указанное время (10сек)
- Совместимость: только для поддерживаемых доменов
- Поддерживаемые домены:
  - `https://ervu-dev.ervu.rt-sk.ru/*`
  - `https://ervu-cert.ervu.rt-sk.ru/*`
  - `http://localhost:*/*` и `https://localhost:*/*`
- Использовать для:
  - Точного тестирования таймаутов приложения
  - Проверки UX при долгих операциях
  - Отладки лоадеров и индикаторов прогресса

### ❌ Имитация HTTP ошибок

Полная подмена ответа ошибкой (запрос не выполняется)

    Клиент ──X──> ❌ HTTP 500 Error (без обращения к серверу)

#### Доступные ошибки:

- 400 - Bad Request (неправильный запрос)
- 401 - Unauthorized (не авторизован)
- 403 - Forbidden (доступ запрещен)
- 404 - Not Found (не найдено)
- 422 - Unprocessable Entity (невалидные данные)
- 429 - Too Many Requests (превышен лимит)
- 500 - Internal Server Error (ошибка сервера)
- 502 - Bad Gateway (плохой шлюз)
- 503 - Service Unavailable (сервис недоступен)
- 504 - Gateway Timeout (таймаут шлюза)
- ⏰ Timeout - зависает навсегда

### 🎭 Мокинг ответов

Полная замена ответа сервера настраиваемым моком (запрос не выполняется)

    Клиент ──X──> 🎭 Мок-ответ (без обращения к серверу)

#### Настраиваемые параметры:

- HTTP статус: любой код от 100 до 599 (200, 404, 500...)
- Статус текст: "OK", "Not Found", "Internal Server Error"...
- Заголовки: JSON объект с заголовками ответа
- Тело ответа: любой контент (JSON, HTML, текст)

#### Автоматическая совместимость:

- fetch(): возвращает корректный Response объект
- XMLHttpRequest: эмулирует события и свойства XHR
- axios: возвращает объект в формате axios response

#### Использовать для:

- Разработки фронтенда когда бэкенд не готов
- Замены реального 410/500 ответа на нужный мок
- Тестирования различных сценариев без изменения сервера
- Имитации сложных API ответов

## 📦 Установка

1. Скачай или склонируй проект
2. Открой Chrome → Настройки → Расширения
3. Включи "Режим разработчика"
4. Нажми "Загрузить распакованное расширение"
5. Выбери папку с проектом
6. Готово! 🎉

## ⚙️ Использование

### Быстрый старт

1. Кликни на иконку плагина в браузере
2. Включи плагин ✅
3. Выбери тип воздействия:
   - ⏱️ Задержка запроса
   - ❌ HTTP ошибка
   - 🎭 Мок ответа
4. Настрой параметры:
   - Для задержки: режим (соединение/сервер) + время в миллисекундах
   - Для ошибок: тип ошибки (400, 500, timeout...)
   - Для мокинга: статус, заголовки, тело ответа
5. Добавь URL паттерн или оставь пустым для всех запросов
6. Сохрани настройки или Сбрось к дефолтным

### Автоматический fallback

Если выбран 🐌 Медленный сервер, но домен не поддерживается:

    ⚠️ Domain not supported for slow server, using slow connection instead

Плагин автоматически переключится на 📡 Медленное соединение.

### Примеры паттернов

    /service/ervu-person-registry/conversion/v1/log    # Точный путь
    .*api.*                                            # Все API запросы
    ^https://localhost:8080.*                          # Конкретный домен
    /users/\d+                                         # RegExp: /users/123

### Тестирование паттернов

В popup используй поле "Тест URL":

    Введи: /service/ervu-person-registry/conversion/v1/log
    Результат: "URL подходит ✓" или "URL не подходит ✗"

## 💡 Примеры использования

### Точное тестирование медленного сервера

    Домен: ervu-dev.ervu.rt-sk.ru или localhost:3000
    Тип: ⏱️ Задержка запроса
    Режим: 🐌 Медленный сервер
    Задержка: 5000ms
    Паттерн: .*conversion.*
    Результат: В DevTools запрос выполнится за 64мс,
              но JavaScript получит ответ через 5000мс

### Тестирование обработки ошибок авторизации

    Тип: ❌ HTTP ошибка
    Ошибка: 401 - Unauthorized
    Паттерн: /api/user/.*
    Результат: Все запросы к пользователю вернут ошибку 401

### Мокинг API когда бэкенд не готов

    Тип: 🎭 Мок ответа
    HTTP статус: 200
    Заголовки: {"Content-Type": "application/json"}
    Тело: {"inc1342count": "15", "defectResolveEnable": true}
    Паттерн: /api/defect/info
    Результат: Вместо реального 410 получишь мок-данные

### Замена ошибочного ответа сервера

    Тип: 🎭 Мок ответа
    HTTP статус: 410
    Тело: {"error": "Resource has been moved permanently"}
    Паттерн: /service/legacy-api/.*
    Результат: Имитация корректного 410 ответа вместо багнутого

### Локальная разработка

    Домен: localhost:3000
    Режим: 🐌 Медленный сервер
    Задержка: 3000ms
    Результат: Локальные API будут отвечать точно через 3 секунды

## 🛠 Технические детали

### Как работают задержки

📡 Медленное соединение (универсальный):

    // Задерживаем отправку запроса
    await delay(5000);
    return fetch('/api');

🐌 Медленный сервер (для поддерживаемых доменов):

    // Отправляем запрос сразу, но задерживаем обработку
    const startTime = Date.now();
    const response = await fetch('/api');
    const actualDuration = Date.now() - startTime;

    // Ждем до полной задержки
    const remainingDelay = Math.max(0, delayMs - actualDuration);
    if (remainingDelay > 0) {
        await delay(remainingDelay);
    }
    return response;

## 🔍 Отладка

### Консоль браузера

При работе плагина увидишь:

    [QA Delayer] Ready - call qaDelayerDebug() for info

    # Медленное соединение:
    [QA Delayer] 📡 Simulating slow connection for POST /api/search - delaying request by 5000ms
    [QA Delayer] 📡 Now sending delayed XHR POST /api/search

    # Медленный сервер:
    [QA Delayer] 🐌 Simulating slow server response for: POST https://ervu-dev.ervu.rt-sk.ru/api/search - 20000ms
    [QA Delayer] 🐌 XHR completed in 64ms, waiting 19936ms more for total 20000ms

    # Fallback:
    [QA Delayer] ⚠️ Domain not supported for slow server, using slow connection instead: https://external-api.com/data

    # Ошибки:
    [QA Delayer] ❌ Simulating 500 error for axios POST /api/upload
    [QA Delayer] ❌ Simulating timeout error for fetch GET /api/status

    # Мокинг:
    [QA Delayer] 🎭 Returning mock response for fetch GET /api/defect/info
    [QA Delayer] 🎭 Creating mock response for /api/users: {status: 200, body: "..."}
    [QA Delayer] 🎭 Returning mock response for axios.post /api/search

### Функции отладки

В консоли браузера доступны:

    qaDelayerDebug()                    // Показать текущие настройки
    qaDelayerTest("/api/users")         // Проверить подходит ли URL

### Если не работает

1. Проверь консоль на ошибки и логи
2. Убедись что плагин активен (статус в popup)
3. Проверь паттерны через тестер в popup
4. Для медленного сервера убедись что домен поддерживается
5. Для localhost используй http://localhost:PORT или https://localhost:PORT

## 🎯 Сценарии использования

### QA тестировщику ERVU:

- 🎯 Медленный сервер: точное тестирование таймаутов на dev/cert окружениях
- 📡 Медленное соединение: имитация плохой связи для всех запросов
- 🏠 Localhost: тестирование локальных разработок с теми же условиями
- ⚡ Fallback: работа на любых сайтах без дополнительных настроек
- 🔒 Ошибки: полная проверка обработки 4xx/5xx статусов
- 🎭 Мокинг: тестирование с правильными данными когда бэк возвращает 410
- 🔄 Быстрый сброс: возврат к дефолтным настройкам одной кнопкой

### Frontend разработчику:

- 🎨 Отладить состояния загрузки и error states
- 📊 Проверить UX при медленных ответах сервера vs медленном соединении
- ⚡ Различить проблемы сети (64мс в DevTools) и логики приложения (20сек ожидания)
- 🔄 Отработать retry механизмы при разных типах задержек
- 🎭 Проверить корректность лоадеров и таймеров
- 🔧 Мокинг API: разработка фронтенда без готового бэка
- 📋 Тестирование разных сценариев: быстрая смена ответов для edge cases
- 🎯 Дебаг конкретных багов: воспроизведение проблемных ответов сервера

## 🌟 Уникальные особенности

### Специализация под ERVU

- Точные permissions только для нужных доменов
- Автоматическое определение относительных путей
- Localhost support для полного цикла разработки
- Умный fallback для неподдерживаемых доменов

### Реалистичность тестирования

- Медленный сервер: видишь реальное время сети (64мс) + точную задержку приложения
- Медленное соединение: видишь полную задержку в DevTools
- Правильные логи: различаешь что именно замедляется

### Developer Experience

- Живая валидация паттернов в UI
- Подробные логи с временными метриками
- Автоматические подсказки по совместимости режимов
- Отладочные функции в консоли браузера
- Умные моки: автопарсинг JSON, корректные заголовки
- Кнопка сброса: быстрый возврат к чистому состоянию
- Гибкие настройки: от простого статуса до сложных API ответов

💡 Рекомендации по использованию:

- 📡 Медленное соединение: используй для тестирования сетевых таймаутов и retry логики
- 🐌 Медленный сервер: используй на ERVU доменах и localhost для точного тестирования логики приложения
- 🎭 Мокинг: незаменим когда бэк возвращает 410 или еще не готов
- 🔍 DevTools: при медленном сервере смотри на реальное время запроса vs время ожидания в коде
- ⚠️ Fallback: если видишь предупреждение о неподдерживаемом домене - это нормально, работает медленное соединение
- 🧪 Тестирование: комбинируй все режимы для полного покрытия сценариев
- 📊 Метрики: используй логи для понимания реального vs искусственного времени
- 🔄 Быстрый сброс: не накапливай сложные настройки, сбрасывай к дефолтным

Создано специально для QA команды ERVU 🧪✨

Нравится Лошкарев Вадим Игоревич нравится это

- Нет меток
- Редактировать метки

Написать комментарий...

Добавить комментарий

Обзор
Инструменты контента
{"serverDuration": 98, "requestCorrelationId": "6d2e009fe286be1e"}
search
recentlyviewed
attachments
weblink
advanced
image-effects
image-attributes

- Абзац

- Жирный
- Курсив
- Подчеркнутый
- Cредство выбора цвета
  Дополнительные цвета
- Форматирование

- Маркированный список
- Нумерованный список

- Список задач

- Убрать отступ
- Сделать отступ

- Выровнить по левому краю
- Выровнить по центру
- Выровнить по правому краю

- Разметка страницы

- Ссылка

- Таблица

- Вставить

- Разметка страницы

- Отменить
- Восстановить

- Найти/Заменить

- Справка по быстрым ссылкам на клавиатуре

Подключение...