Spec-Zone.ru › Playwright

Веб-сервер

Введение​

Playwright включает параметр webServer в файле конфигурации, который позволяет запустить локальный сервер разработки перед запуском тестов. Это особенно удобно при написании тестов во время разработки, а также когда у вас нет URL-адреса промежуточного или рабочего окружения для тестирования.

Настройка веб-сервера​

Используйте свойство webServer в конфигурации Playwright, чтобы запустить веб-сервер разработки во время выполнения тестов.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  // Run your local dev server before starting the tests
  webServer: {
    command: 'npm run start',
    url: 'http://localhost:3000',
    reuseExistingServer: !process.env.CI,
    stdout: 'ignore',
    stderr: 'pipe',
  },
});
Свойство Описание
testConfig.webServer Запускает веб-сервер разработки (или несколько серверов) во время выполнения тестов.
command Команда оболочки для запуска локального сервера разработки вашего приложения.
cwd Текущий рабочий каталог запущенного процесса; по умолчанию — каталог файла конфигурации.
env Переменные окружения для команды. По умолчанию наследуются переменные process.env с добавлением PLAYWRIGHT_TEST=1.
gracefulShutdown Способ завершения процесса. Если параметр не указан, группа процессов принудительно завершается с помощью SIGKILL. Если задано значение { signal: 'SIGTERM', timeout: 500 }, группе процессов отправляется сигнал SIGTERM, а затем — SIGKILL, если процесс не завершится в течение 500 мс. Вместо него в качестве сигнала можно использовать SIGINT. Значение тайм-аута 0 означает, что сигнал SIGKILL отправлен не будет. Windows не поддерживает сигналы SIGTERM и SIGINT, поэтому в Windows этот параметр игнорируется. Обратите внимание: для остановки контейнера Docker требуется SIGTERM.
ignoreHTTPSErrors Следует ли игнорировать ошибки HTTPS при получении url. По умолчанию — false.
name Задает пользовательское имя веб-сервера. Это имя будет добавляться в начало сообщений журнала. По умолчанию — [WebServer].
port Устарело. Вместо этого используйте url. Порт, на котором ожидается запуск HTTP-сервера. Ожидание продолжается до тех пор, пока сервер не начнет принимать подключения. Необходимо указать port или url.
reuseExistingServer Если задано значение true, при наличии будет повторно использоваться существующий сервер на port или url. Если на port или url сервер не запущен, будет выполнена команда запуска нового сервера. Если задано значение false, будет выдана ошибка, если существующий процесс прослушивает port или url. Обычно здесь следует указать !process.env.CI, чтобы разрешить использовать локальный сервер разработки при локальном запуске тестов.
stderr Следует ли перенаправлять stderr команды в stderr процесса или игнорировать его. По умолчанию — "pipe".
stdout Если задано значение "pipe", stdout команды будет перенаправлен в stdout процесса. Если задано значение "ignore", stdout команды будет игнорироваться. По умолчанию — "ignore".
timeout Время ожидания запуска процесса и его готовности к работе в миллисекундах. По умолчанию — 60000.
url URL-адрес HTTP-сервера, который должен возвращать код состояния 2xx, 3xx, 400, 401, 402 или 403, когда сервер готов принимать подключения. Необходимо указать port или url. Если указаны и url, и wait, сервер считается запущенным, когда выполнено хотя бы одно из условий.
wait Считать команду запущенной только после появления указанного вывода. Принимает объект с необязательными регулярными выражениями stdout и/или stderr. Именованные группы захвата в регулярном выражении сохраняются в окружении. Например, /Listening on port (?<my_server_port>\d+)/ сохранит номер порта в process.env['MY_SERVER_PORT']. Если указаны и url, и wait, сервер считается запущенным, когда выполнено хотя бы одно из условий.

Увеличение времени ожидания запуска сервера​

Иногда запуск веб-серверов занимает больше времени. В этом случае можно увеличить время ожидания запуска сервера.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  // Rest of your config...

  // Run your local dev server before starting the tests
  webServer: {
    command: 'npm run start',
    url: 'http://localhost:3000',
    reuseExistingServer: !process.env.CI,
    timeout: 120 * 1000,
  },
});

Добавление baseURL​

Также рекомендуется указать baseURL в разделе use: {} конфигурации, чтобы тесты могли использовать относительные URL-адреса и вам не приходилось каждый раз указывать полный URL.

При использовании page.goto(), page.route(), page.waitForURL(), page.waitForRequest() или page.waitForResponse() учитывается базовый URL: для построения соответствующего URL используется конструктор URL(). Например, если задать baseURL равным http://localhost:3000 и перейти в тестах по адресу /login, Playwright выполнит тест, используя http://localhost:3000/login.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  // Rest of your config...

  // Run your local dev server before starting the tests
  webServer: {
    command: 'npm run start',
    url: 'http://localhost:3000',
    reuseExistingServer: !process.env.CI,
  },
  use: {
    baseURL: 'http://localhost:3000',
  },
});

Теперь при переходе по страницам можно использовать относительный путь:

import { test } from '@playwright/test';

test('test', async ({ page }) => {
  // This will navigate to http://localhost:3000/login
  await page.goto('./login');
});

Несколько веб-серверов​

Можно одновременно запустить несколько веб-серверов (или фоновых процессов), указав массив конфигураций webServer. Подробнее см. в разделе testConfig.webServer.

import { defineConfig } from '@playwright/test';

export default defineConfig({
  webServer: [
    {
      command: 'npm run start',
      url: 'http://localhost:3000',
      name: 'Frontend',
      timeout: 120 * 1000,
      reuseExistingServer: !process.env.CI,
    },
    {
      command: 'npm run backend',
      url: 'http://localhost:3333',
      name: 'Backend',
      timeout: 120 * 1000,
      reuseExistingServer: !process.env.CI,
    }
  ],
  use: {
    baseURL: 'http://localhost:3000',
  },
});

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/test-webserver

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API