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

- Установите расширение — скачайте его командой
mockarty-cli extension download(распаковывается в~/.mockarty/extension/chrome/), затем откройтеchrome://extensions/→ Режим разработчика → Загрузить распакованное → выберите~/.mockarty/extension/chrome/. - Подключитесь к админке — откройте боковую панель расширения, введите URL админки (
http://127.0.0.1:5770), нажмите Reconnect. - Начните запись — на вкладке Captures найдите карточку Record и нажмите Record (режим сценария).
- Выполняйте действия — перейдите на целевой сайт и выполняйте действия. Боковая панель показывает живой список UI Steps с каждым захваченным жестом.
- Сохраните как UI-тест — на странице Recorder в админке выберите сессию → Save as UI Test → проверьте шаги → Save.
- Создайте тест-кейс — откройте 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/loginClick 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. После него сценарий сразу перестаёт выдаваться в списке, при прямом чтении и по публичной ссылке. Сервер закрывает просроченные сценарии в фоновом режиме. Удаление сценария также прекращает работу публичной ссылки.