网页服务器
简介
Playwright 在配置文件中提供了一个 webserver
选项,可以让您在运行测试之前启动一个本地开发服务器。这非常适合在开发过程中编写测试时使用,当您没有测试环境或生产环境的 URL 时。
配置网页服务器
在您的 Playwright 配置中使用 webserver
属性,以便在测试期间启动开发网页服务器。
playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
// Run your local dev server before starting the tests
webServer: {
command: 'npm run start',
url: 'http://127.0.0.1:3000',
reuseExistingServer: !process.env.CI,
stdout: 'ignore',
stderr: 'pipe',
},
});
属性 | 描述 |
---|---|
testConfig.webServer | 在测试期间启动开发网页服务器(或多个服务器)。 |
command | 用于启动应用程序本地开发服务器的 shell 命令。 |
url | http 服务器的 URL,该服务器在准备接受连接时应返回 2xx、3xx、400、401、402 或 403 状态代码。 |
reuseExistingServer | 如果为 true ,则将在可用时重新使用 url 上现有的服务器。如果该 url 上没有运行服务器,则会运行命令以启动新的服务器。如果为 false ,则如果现有的进程正在监听该 url,则会抛出错误。要查看标准输出,可以设置 DEBUG=pw:webserver 环境变量。 |
ignoreHTTPSErrors | 是否在获取 url 时忽略 HTTPS 错误。默认值为 false 。 |
cwd | 生成进程的当前工作目录,默认为配置文件所在的目录。 |
stdout | 如果为 "pipe" ,则会将命令的标准输出管道到进程标准输出。如果为 "ignore" ,则会忽略命令的标准输出。默认值为 "ignore" 。 |
stderr | 是否将命令的标准错误管道到进程标准错误或忽略它。默认值为 "pipe" 。 |
timeout | `进程启动并可用所需的时间(以毫秒为单位)。默认值为 60000。` |
添加服务器超时
网页服务器有时启动可能需要更长的时间。在这种情况下,您可以增加超时时间以等待服务器启动。
playwright.config.ts
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://127.0.0.1:3000',
reuseExistingServer: !process.env.CI,
timeout: 120 * 1000,
},
});
添加 baseURL
还建议在配置的 use: {}
部分中指定 baseURL
,以便测试可以使用相对 URL,并且您不必重复指定完整 URL。
在使用 page.goto()、page.route()、page.waitForURL()、page.waitForRequest() 或 page.waitForResponse() 时,会使用 URL()
构造函数构建相应的 URL,从而考虑 baseURL。例如,将 baseURL 设置为 http://127.0.0.1:3000
,并在测试中导航到 /login
,Playwright 将使用 http://127.0.0.1:3000/login
运行测试。
playwright.config.ts
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://127.0.0.1:3000',
reuseExistingServer: !process.env.CI,
},
use: {
baseURL: 'http://127.0.0.1:3000',
},
});
现在,您可以在导航页面时使用相对路径
test.spec.ts
import { test } from '@playwright/test';
test('test', async ({ page }) => {
// This will navigate to http://127.0.0.1:3000/login
await page.goto('./login');
});
多个网页服务器
通过提供 webServer
配置的数组,可以同时启动多个网页服务器(或后台进程)。有关更多信息,请参阅 testConfig.webServer。
playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
webServer: [
{
command: 'npm run start',
url: 'http://127.0.0.1:3000',
timeout: 120 * 1000,
reuseExistingServer: !process.env.CI,
},
{
command: 'npm run backend',
url: 'http://127.0.0.1:3333',
timeout: 120 * 1000,
reuseExistingServer: !process.env.CI,
}
],
use: {
baseURL: 'http://127.0.0.1:3000',
},
});