Веб-сервер
Введение
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