Встроенный исполнитель

Прогоны выполняет исполнитель — то, что открывает страницы и проходит шаги теста. Раньше им мог быть только Chrome с нашим дополнением, и рядом приходилось держать постоянно включённый компьютер. Теперь исполнитель встроен в сам продукт: это безоконный браузер Chromium внутри контейнера, который выполняет прогоны сразу после установки — без дополнения и без второй машины. Ниже — когда его достаточно, а когда удобнее Chrome.

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

Смысл в том, чтобы «тест поставлен в очередь» и «тест выполняется» были одним и тем же событием. Только что установленный продукт уже умеет выполнять прогоны: расписание срабатывает ночью, когда никто не сидит за компьютером, а результат к утру ждёт вас в сводке.

Раньше этого не было: страницы открывало только дополнение в вашем Chrome, поэтому прогоны зависели от того, включён ли компьютер и открыт ли браузер. Исключение было одно — тест, целиком собранный из скриптов, выполнял сервер. Теперь браузерные прогоны тоже идут без вас.

Встроенный исполнитель или Chrome с дополнением

Дополнение Chrome никуда не исчезло и обязательным для прогонов больше не является. Вот чем два способа отличаются:

Что сравнитьВстроенный исполнительChrome с дополнением
Где работаетв контейнере продукта, на серверена вашем компьютере, в обычном Chrome
Нужен ли отдельный компьютернетнужен, если прогоны идут по расписанию
Видно ли, как идёт прогоннет — браузер безоконныйда — можно смотреть своими глазами
Ручная съёмка экранов и запись действийнетда
Прогоны, расписание и снимки для визуальных проверокдада

Короткое правило: для расписаний и повседневных прогонов хватает встроенного исполнителя, а Chrome с дополнением держат там, где нужны глаза — посмотреть, как идёт тест, снять экран вручную, записать действие или дать модели поработать с живой страницей. Что умеет дополнение — в разделе Дополнение Chrome.

Очередь одна, а исполнителей может быть несколько

Прогон забирает тот, кто первый успел. Если онлайн и встроенный исполнитель, и Chrome, — выполнит кто-то один, а второй за этот прогон не возьмётся: дважды он не запустится. В истории прогона рядом со строкой исполнителя видно, кто именно его выполнял.

У каждого исполнителя свой движок — так называется браузер, в котором идёт прогон. Встроенный работает на движке Chromium, дополнение — на вашем Chrome. Это разные движки, и страницы они отрисовывают чуть по-разному, поэтому эталоны у них раздельные: продукт никогда не сравнивает снимок одного движка с образцом другого — иначе каждая сборка выглядела бы как сплошная переделка страницы. Движок выбирают на проект и не смешивают: переход на другой движок даёт новые эталоны, их нужно один раз просмотреть и одобрить, дальше сравнения снова стабильны. Подробности — в разделе Эталоны.

Два режима работы

  • По требованию — так настроено по умолчанию. В простое исполнителя нет вообще: ни браузера, ни процесса, который его обслуживает. Когда в очередь попадает прогон, продукт запускает исполнителя сам, а после работы тот завершается. Первый прогон после паузы стартует на пару секунд дольше, дальше всё идёт как обычно.
  • Постоянный — исполнитель работает всё время, а после долгого простоя перезапускается сам, чтобы вернуть занятую память. Этот режим выбирают, когда прогоны идут непрерывно или нужен неизменно быстрый отклик.

Зачем так сделано: сервер, на котором почти всегда тихо, не должен держать в памяти браузер просто так. В простое продукт не тратит ни процессор, ни лишнюю память, поэтому его спокойно ставят на небольшую машину, где живут и другие программы.

Настройки

Все они необязательны — прогоны работают сразу после установки. Менять их стоит только по делу: например, если хочется вернуть постоянный режим или дать браузеру дольше жить в памяти.

ПеременнаяЧто задаётПо умолчанию
TEST_APP_RUNNER_ENABLEDвключает встроенного исполнителя: 0 — выключить совсем, тогда прогоны остаются только за Chrome с дополнением1
TEST_APP_RUNNER_ON_DEMAND1 — запуск по требованию, процесса в простое нет; 0 — постоянный исполнитель1
TEST_APP_RUNNER_RECYCLE_MINUTESв постоянном режиме: через сколько минут полного простоя перезапускать исполнителя, чтобы вернуть память; 0 — не перезапускать30
TEST_APP_RUNNER_NAMEкак встроенный исполнитель называется в списке исполнителейPlaywright (built-in)
TEST_APP_RUNNER_POLL_SECсколько секунд сервер держит запрос исполнителя, ожидая прогон из очереди (не больше 30). Поставленный в очередь прогон забирается за миллисекунды — это значение задаёт только ритм пустых проверок15
TEST_APP_RUNNER_HEADLESS1 — безоконный режим (в продукте только такая сборка браузера); 0 — оконный, для него нужна полная сборка1
TEST_APP_RUNNER_SANDBOXизоляция браузера: 0 — выключена (так нужно для работы в контейнере), 1 — включена0
TEST_APP_RUNNER_BROWSER_IDLE_SECчерез сколько секунд без прогонов закрывать браузер и возвращать память; 0 — не закрывать600

Ключ доступа (TEST_APP_KEY) исполнитель берёт из переменных окружения или из файла настроек и перечитывает его каждый цикл. Значит, ключ можно дописать в файл на ходу — перезапускать контейнер для этого не нужно.

Где это видно в интерфейсе

  • «Настройки → Тестирование UI» — отдельная строка «Встроенный исполнитель»: доступен ли он и когда последний раз связывался с сервером. Она не путается с надписью «Дополнение подключено» — та относится только к Chrome.
  • «Операции» — в списке исполнителей у встроенного есть пометка «встроенный». Там же видно, онлайн он или нет и какая версия браузера у него в работе.
  • Осушение и возобновление — работают так же, как у Chrome: осушенный исполнитель доработает текущий прогон и перестанет брать новые, а после снятия паузы снова встанет в очередь за прогонами.

Честные ограничения

  • Только безоконный режим. В продукте одна сборка браузера — безоконная, поэтому посмотреть прогон глазами нельзя. Нужно наблюдать — оставляйте Chrome с дополнением. Оконный режим потребует доставить полную сборку браузера вручную — её в продукте нет.
  • Изоляция браузера выключена. Так нужно, чтобы браузер вообще работал в контейнере. Он открывает только те адреса, которые вы сами задали в тестах.
  • Браузер уже включён в продукт. Ничего не скачивается при запуске — это плюс: продукт работает и на медленном, и на закрытом от интернета сервере. Обратная сторона — браузер обновляется только вместе с продуктом, отдельно от него.
  • Один прогон за раз. Как и Chrome, встроенный исполнитель выполняет один прогон единовременно. Если прогонов много, добавляют исполнителей: например, встроенного плюс Chrome с дополнением на другом компьютере.

Дальше: как проходит прогон и что означает его результат — в разделе Запуски. Поставить исполнителя на паузу или посмотреть их список — в разделе Операции и работоспособность. А если нужны ручная съёмка, записи и прогоны в живом окне — в разделе Дополнение Chrome.

← Оглавление документации