Распределённая сеть выполнения
Mockarty может выполнять ваши тесты на машинах, которые у команды уже есть —
ноутбуках, десктопах, сборочных агентах — вместо выделенных серверов в облаке
или вместе с ними. Каждая подключённая машина становится узлом сети: она
сама забирает задачи у вашего admin‑узла Mockarty и отчитывается о результатах.
Так свободные ресурсы команды превращаются в частный эластичный пул для
UI‑тестов в headless‑браузерах, нагрузочных тестов и (с подключённым телефоном)
мобильных тестов.
Узлы подключаются только исходящими соединениями — они сами обращаются к
admin и забирают работу, поэтому ноутбук за домашним роутером или корпоративным
NAT входит в сеть без входящих правил фаервола.
Зачем это нужно
- Используйте то, что уже есть. Не нужно поднимать облачные раннеры или
CI‑агентов под каждый прогон — простаивающие машины делают работу. - Эластично и автоматически. Узел измеряет собственные CPU и память и сам
решает, сколько headless‑браузеров потянет. Машина загружена → меньше; свободна
→ больше. - Таргетируемо. Каждый узел объявляет метки (ОС, число ядер, память,
владелец и любые ваши) — можно направить прогон на нужные машины. - Приватно по умолчанию. Личная машина может войти в ограниченном режиме, где
ничего чувствительного не раскрывается.
Runner Console
Самый простой способ превратить машину в узел — Runner Console, небольшое
десктоп‑приложение. Запускаете, заполняете два поля, нажимаете Подключить.
Настройка
- Запустите Runner Console — откроется небольшое окно управления.
- Подключение — вставьте Admin URL вашего Mockarty и интеграционный
токен (создайте его в Админ → Интеграции). - Идентичность узла — при желании укажите имя, namespace и дополнительные
метки (region=eu, team=qa). Метки ОС, числа ядер и памяти добавляются
автоматически — их вводить не нужно. - Участие — выберите, как машина участвует в сети:
- Приватно (личная): для вашего ноутбука. Вход в согласованном,
ограниченном режиме — перехват сообщений и перенос состояния приложений
остаются выключенными, пока вы не разрешите их на конкретный прогон, а
личные данные никогда не раскрываются сети. - Полностью (выделенная): для общей тестовой машины. Полный доступ.
- Приватно (личная): для вашего ноутбука. Вход в согласованном,
- Что выполняет узел — включите Headless‑браузеры и/или Подключённые
устройства. Оставьте Макс. браузеров =0, чтобы узел сам подобрал
число под железо, или задайте жёсткий лимит. - Доступность — выберите, когда машина в сети:
- Всегда (пока консоль подключена),
- Только ночью (22:00–06:00),
- Рабочие часы (Пн–Пт 09:00–18:00) или
- Свой график — раскрасьте недельную сетку по часам.
Нажмите Подключить. Индикатор покажет подключение, затем в сети,
когда узел зарегистрирован и работает. По графику узел входит и выходит сам —
например, отдаёт ресурсы только на ночь.
Headless‑браузеры
Браузеры ставятся при первом использовании — большого пакета заранее качать не
нужно. Можно нажать Установить сейчас в консоли, чтобы скачать их заранее и
сделать первый прогон мгновенным.
Инспектор экрана устройства
Записывать шаг по координатам тапа — хрупко: тот же тап на другом размере
экрана попадёт не туда. Инспектор устройства позволяет выбрать сам элемент.
Откройте подключённое устройство на вкладке Grid страницы UI Testing и
нажмите Inspect.
Mockarty прочитает экран с устройства и переключит вид в режим инспекции: клик
теперь выбирает то, что под ним, а не тапает.
По выбранному элементу вы получаете:
- как к нему обратиться — селектор для шага. Клик по селектору копирует его.
- уникален ли он — инспектор пишет
unique, если селектор совпадает ровно с
одним элементом на экране, иmatches several, если нет. Вы узнаёте это до
того, как шаг станет нестабильным. - что он умеет —
clickable,editable,scrollable,checkableи
отмечен ли сейчас (checked).
После перехода в приложении нажмите Re-read screen: инспектор показывает
экран таким, каким прочитал его в последний раз, это не живой поток.
У части элементов нет ни id, ни подписи, ни текста. Инспектор говорит об этом
прямо, а не придумывает селектор — такие шаги записывайте по координатам.
Для агентов. Те же две операции доступны по MCP: grid_device_screen_read
читает текущий экран устройства (передайте deviceId из grid_devices_list), а
grid_device_element_at возвращает элемент в точке (x, y в пикселях
устройства — оба обязательны: (0,0) — легальная точка, и подставленное по
умолчанию значение уверенно отвечало бы про не тот угол).
Нагрузочные тесты на подключённом телефоне
На странице UI Testing → Grid выберите подключённый телефон и запустите
сохранённый нагрузочный тест. В Недавних прогонах видны устройство, число
запросов, ошибки запросов и задержка p95. Цель должна быть доступна с телефона:
его 127.0.0.1 — не localhost компьютера. Используйте адрес в локальной сети
или настройте USB-проброс порта для сервиса на компьютере. Mockarty ограничивает
число виртуальных пользователей по текущему запасу телефона по нагреву и заряду.
Таргетинг узлов по меткам
Запуская нагрузочный тест, UI‑тест или тест‑план, можно потребовать конкретные
метки — тогда работа попадёт только на подходящие узлы. Доступные авто‑метки:
| Метка | Пример | Значение |
|---|---|---|
os |
os=linux |
операционная система узла |
arch |
arch=arm64 |
архитектура CPU |
cpu |
cpu=8 |
число логических ядер |
ram_gb |
ram_gb=16 |
объём памяти в ГБ |
owner |
owner=alice |
кто держит узел |
usage_kind |
usage_kind=dedicated |
личная или выделенная машина |
Добавляйте свои метки в консоли (или через переменную окружения
RUNNER_LABELS, через запятую) и комбинируйте их с авто‑метками при выборе
раннеров. См. Метки раннеров и таргетинг.
Утилизация
В разделе раннеров admin показаны статус каждого узла, набор меток, сколько
слотов он объявляет, сколько занято, а также текущие CPU и память — так вы
видите весь парк сразу и понимаете, на каких машинах есть запас.
Армия headless‑браузеров вкратце
- Один узел держит много браузерных слотов, число подбирается из CPU и RAM.
- Оно адаптируется по мере загрузки машины, поэтому одолженный ноутбук не
перегружается. - Браузеры ставятся по требованию; ничего не бандлится.
- Каждый узел сообщает свою нагрузку admin для наглядности и умного планирования.
Безопасность и приватность
- Узлы подключаются только исходящими соединениями и аутентифицируются
интеграционным токеном. - Приватный узел никогда не раскрывает личные данные; перехват сообщений и
перенос состояния приложений требуют явного согласия на каждый прогон. - Консоль хранит настройки локально на машине, доступные только владельцу.