Документация Запись UI-тестов

Запись UI-тестов

Записывайте действия в браузере (клики, ввод, навигацию) через расширение Mockarty для Chrome и превращайте их в переиспользуемые TCM тест-кейсы. Запись фиксирует Playwright-совместимые локаторы; runner воспроизводит их в реальном Chromium.

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

Страница рекордера

  1. Установите расширение — скачайте его командой mockarty-cli extension download (распаковывается в ~/.mockarty/extension/chrome/), затем откройте chrome://extensions/ → Режим разработчика → Загрузить распакованное → выберите ~/.mockarty/extension/chrome/.
  2. Подключитесь к админке — откройте боковую панель расширения, введите URL админки (http://127.0.0.1:5770), нажмите Reconnect.
  3. Начните запись — на вкладке Captures найдите карточку Record и нажмите Record (режим сценария).
  4. Выполняйте действия — перейдите на целевой сайт и выполняйте действия. Боковая панель показывает живой список UI Steps с каждым захваченным жестом.
  5. Сохраните как UI-тест — на странице Recorder в админке выберите сессию → Save as UI Test → проверьте шаги → Save.
  6. Создайте тест-кейс — откройте UI-тест → Promote to test case → каждое записанное действие становится шагом TCM.

Как работает запись

Content-скрипт слушает DOM-события в каждом фрейме:

Действие Записывается как Playwright-локатор
Клик по кнопке click role=button[name='Отправить']
Ввод в поле fill (debounce 300мс) input[name='email']
Переход / SPA-маршрут navigate url
Нажатие Enter / Tab / Esc press название клавиши
Выбор из списка select значение + селектор
Установка чекбокса check селектор

Стратегия селекторов: рекордер выбирает самый стабильный локатор по приоритету: data-testid → id → aria-label → role + accessible name → видимый текст → CSS-путь. Чувствительные поля (пароли, автозаполнение карт) обнуляются на стороне клиента — их значения заменяются на [redacted] и никогда не покидают браузер.

Живой показ шагов

Боковая панель расширения показывает записанные действия в реальном времени в секции UI Steps:

  • Каждый шаг пронумерован и показывает краткое описание с ключевым параметром.
  • Примеры: → https://example.com/login, Click button[type=submit], Fill input[name=email] ← user@test.com.
  • Кнопка Clear сбрасывает все накопленные шаги.
  • Счётчик показывает, сколько шагов в буфере до следующей отправки на сервер.

Сохранение как UI-тест

На странице Recorder в админке выберите активную сессию и нажмите Save as UI Test. Модальное окно показывает:

  • Поле имени (предзаполнено из названия сессии).
  • Выбор пространства (namespace).
  • Предпросмотр шагов — список всех записанных действий в человекочитаемом виде.
  • Нажмите Save UI Test для сохранения.

UI-тест хранится на сервере. Скриншоты вырезаются при сохранении — остаются только жесты (селекторы, значения), что делает определение компактным.

Создание TCM тест-кейса

На странице деталей UI-теста нажмите Promote to test case. Каждое записанное действие становится UI-тест-шагом TCM, несущим тип действия, селектор и значение. Runner воспроизводит шаги последовательно в рамках одного контекста браузера.

Имена шагов генерируются автоматически:

  • Navigate to https://example.com/login
  • Click button[type='submit']
  • Fill input[name='email']
  • Press Enter

Воспроизведение

Бинарник mockarty-runner воспроизводит сохранённые UI-тесты на лёгком движке (скриншоты через встроенный рендер-движок; RUNNER_BROWSER_PROVIDER=local для реального Chromium). См. раздел настройки раннера.

Безопасность

  • Чувствительные поля (пароли, OTP, автозаполнение карт, API-ключи) обнуляются на стороне клиента content-скриптом. Обнуление основано на эвристиках type, autocomplete, name, id, aria-label и placeholder — значение заменяется на [redacted] до отправки на сервер.
  • Скриншоты убираются из записанных действий перед сохранением теста. Исходные снимки остаются в сессии рекордера и удаляются вместе с ней.
  • Исключение фрейма админки — рекордер игнорирует жесты на UI самого Mockarty, предотвращая петли обратной связи.

Срок действия сценария Companion

При создании сценария Companion через POST /api/v1/companion/scenarios можно задать необязательное время expiresAt. После него сценарий сразу перестаёт выдаваться в списке, при прямом чтении и по публичной ссылке. Сервер закрывает просроченные сценарии в фоновом режиме. Удаление сценария также прекращает работу публичной ссылки.