Определение оптимальной конфигурации набора тестов для рабочих областей Playwright

Playwright Workspaces позволяет ускорить выполнение тестов Playwright, увеличив параллелизм в масштабе облака. Некоторые факторы влияют на время выполнения набора тестов. Определение оптимальной конфигурации для уменьшения времени завершения набора тестов зависит от приложения и требует экспериментирования. В этой статье описываются различные уровни настройки параллелизма для тестов, факторы, влияющие на длительность теста, а также способы определения оптимальной конфигурации для минимизации времени завершения теста.

В Playwright можно параллельно выполнять тесты с помощью рабочих процессов. С помощью рабочих областей Playwright можно увеличить параллелизм с помощью браузеров, размещенных в облаке. Как правило, добавление большего параллелизма сокращает время завершения набора тестов. Однако добавление дополнительных рабочих процессов не всегда приводит к более короткому времени завершения набора тестов. Например, вычислительные ресурсы клиента, задержка сети или сложность тестирования также могут повлиять на длительность теста.

На следующей диаграмме приведен пример запуска набора тестов. Запустив набор тестов с рабочими областями Playwright, а не локально, можно значительно увеличить параллелизм и сократить время завершения теста. Обратите внимание, что при запуске со службой время завершения достигает минимального предела, после чего добавление дополнительных рабочих оказывает минимальный эффект. На диаграмме также показано, как использование дополнительных вычислительных ресурсов на клиентском компьютере положительно влияет на время завершения теста для тестов, выполняемых со службой.

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

Рабочие процессы

В Playwright все тесты выполняются в рабочих процессах. Эти процессы являются процессами ОС, выполняющиеся независимо и параллельно, под управлением средства тестирования Playwright. Все работники имеют одинаковые среды, и каждый процесс запускает свой собственный браузер.

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

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

Локальное выполнение тестов

По умолчанию @playwright/test ограничивает количество рабочих потоков до половины от числа процессорных ядер на вашем компьютере. Вы можете переопределить количество работников для выполнения теста.

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

Чтобы переопределить число рабочих с помощью флага командной строки--workers:

npx playwright test --workers=10

Чтобы указать количество рабочих в playwright.config.ts, воспользуйтесь настройкой workers.

export default defineConfig({
  ...
  workers: 10,
  ...
});

Запуск тестов с использованием службы

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

Так как рабочие процессы по-прежнему выполняются на клиентском компьютере (рабочая станция разработчика или компьютер агента CI), клиентский компьютер по-прежнему может стать узким местом для масштабируемого выполнения при добавлении дополнительных рабочих ролей. Узнайте, как определить оптимальную конфигурацию.

Можно указать количество работников в командной строке с помощью флага --workers :

npx playwright test --config=playwright.service.config.ts --workers=30

Кроме того, можно указать количество работников в playwright.service.config.ts с помощью параметра workers:

export default defineConfig({
  ...
  workers: 30,
  ...
});

Факторы, влияющие на время завершения

Помимо количества параллельных рабочих процессов, существуют несколько факторов, влияющих на время завершения набора тестов.

Фактор Влияние на продолжительность теста
Вычислительные ресурсы клиентского компьютера Рабочие процессы по-прежнему выполняются на клиентском компьютере (рабочая станция разработчика или компьютер агента CI) и должны взаимодействовать с удаленными браузерами. Увеличение числа параллельных рабочих ролей может привести к состязанию ресурсов на клиентском компьютере и замедлению тестов.
Сложность тестового кода По мере увеличения сложности тестового кода время завершения тестов также может увеличиться.
Задержка между клиентским компьютером и удаленными браузерами Работники работают на клиентском компьютере и взаимодействуют с удаленными браузерами. В зависимости от региона Azure, в котором размещаются браузеры, может увеличиться задержка сети. Узнайте, как оптимизировать региональную задержку в рабочих областях Playwright.
Параметры конфигурации Playwright Параметры Playwright, такие как тайм-ауты сервиса, повторные попытки или трассировка, могут негативно повлиять на время завершения теста. Поэкспериментируйте с оптимальной конфигурацией этих параметров при выполнении тестов в облаке.
Емкость обработки нагрузки целевого приложения Запуск тестов с помощью рабочих пространств Playwright позволяет запускать их с более высоким параллелизмом, что создаёт более высокую нагрузку на целевое приложение. Убедитесь, что приложение может обрабатывать нагрузку, созданную с помощью тестов Playwright.

Дополнительные сведения о процессе определения оптимальной конфигурации для минимизации времени выполнения набора тестов.

Рабочий процесс для определения оптимальной конфигурации

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

Следующий подход поможет вам найти оптимальную конфигурацию для выполнения тестов с помощью рабочих областей Playwright:

1. Определение цели по времени завершения теста

Определите допустимое время завершения набора тестов и связанные затраты на тестовый запуск.

В зависимости от сценария требования к завершению теста могут отличаться. При выполнении комплексных тестов с каждым изменением кода в рамках рабочего процесса непрерывной интеграции (CI) минимальное время завершения теста является важным. При планировании сквозных тестов в пакетном запуске (ночном) ваши требования могут быть менее строгими.

2. Убедитесь, что тесты выполняются правильно на клиентском компьютере

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

3. Запуск облачных браузеров на рабочих пространствах Playwright

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

Начните с Быстрого старта: выполнение тестов Playwright в масштабе с помощью рабочих областей Playwright.

4. Проверка удаленных браузеров региона Azure

Рабочие области Playwright могут использовать удаленные браузеры в регионе Azure, ближайшем к клиентскому компьютеру, или использовать фиксированный регион, в котором была создана рабочая область.

Узнайте, как оптимизировать региональную задержку для рабочей области.

5. Экспериментируйте с количеством параллельных рабочих ролей

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

Обратите внимание, что время завершения теста больше не сокращается при добавлении дополнительных рабочих ролей. Перейдите к следующему шагу, чтобы оптимизировать настройку.

6. Масштабирование клиента

При увеличении параллелизма клиентский компьютер может столкнуться с состязанием вычислительных ресурсов. Увеличьте вычислительные ресурсы на клиентском компьютере, например, выбрав GitHub-хостинг исполнения процессов с большими ресурсами.

Кроме того, если у вас есть ограничения оборудования, можно сегментировать клиентские тесты.

Повторно выполните тесты и поэкспериментируйте с количеством параллельных рабочих процессов.

7. Обновление параметров конфигурации теста Playwright

Настройте параметры конфигурации теста Playwright, такие как время ожидания теста, параметры трассировки или повторные попытки.