Документация Распределённая сеть выполнения

Распределённая сеть выполнения

Mockarty может выполнять ваши тесты на машинах, которые у команды уже есть —
ноутбуках, десктопах, сборочных агентах — вместо выделенных серверов в облаке
или вместе с ними. Каждая подключённая машина становится узлом сети: она
сама забирает задачи у вашего admin‑узла Mockarty и отчитывается о результатах.
Так свободные ресурсы команды превращаются в частный эластичный пул для
UI‑тестов в headless‑браузерах, нагрузочных тестов и (с подключённым телефоном)
мобильных тестов.

Узлы подключаются только исходящими соединениями — они сами обращаются к
admin и забирают работу, поэтому ноутбук за домашним роутером или корпоративным
NAT входит в сеть без входящих правил фаервола.

Зачем это нужно

  • Используйте то, что уже есть. Не нужно поднимать облачные раннеры или
    CI‑агентов под каждый прогон — простаивающие машины делают работу.
  • Эластично и автоматически. Узел измеряет собственные CPU и память и сам
    решает, сколько headless‑браузеров потянет. Машина загружена → меньше; свободна
    → больше.
  • Таргетируемо. Каждый узел объявляет метки (ОС, число ядер, память,
    владелец и любые ваши) — можно направить прогон на нужные машины.
  • Приватно по умолчанию. Личная машина может войти в ограниченном режиме, где
    ничего чувствительного не раскрывается.

Runner Console

Самый простой способ превратить машину в узел — Runner Console, небольшое
десктоп‑приложение. Запускаете, заполняете два поля, нажимаете Подключить.

Настройка

  1. Запустите Runner Console — откроется небольшое окно управления.
  2. Подключение — вставьте Admin URL вашего Mockarty и интеграционный
    токен
    (создайте его в Админ → Интеграции).
  3. Идентичность узла — при желании укажите имя, namespace и дополнительные
    метки (region=eu, team=qa). Метки ОС, числа ядер и памяти добавляются
    автоматически — их вводить не нужно.
  4. Участие — выберите, как машина участвует в сети:
    • Приватно (личная): для вашего ноутбука. Вход в согласованном,
      ограниченном режиме — перехват сообщений и перенос состояния приложений
      остаются выключенными, пока вы не разрешите их на конкретный прогон, а
      личные данные никогда не раскрываются сети.
    • Полностью (выделенная): для общей тестовой машины. Полный доступ.
  5. Что выполняет узел — включите Headless‑браузеры и/или Подключённые
    устройства
    . Оставьте Макс. браузеров = 0, чтобы узел сам подобрал
    число под железо, или задайте жёсткий лимит.
  6. Доступность — выберите, когда машина в сети:
    • Всегда (пока консоль подключена),
    • Только ночью (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 для наглядности и умного планирования.

Безопасность и приватность

  • Узлы подключаются только исходящими соединениями и аутентифицируются
    интеграционным токеном.
  • Приватный узел никогда не раскрывает личные данные; перехват сообщений и
    перенос состояния приложений требуют явного согласия на каждый прогон.
  • Консоль хранит настройки локально на машине, доступные только владельцу.

Связанное