網站伺服器
簡介
Playwright 在設定檔中帶有一個 webserver
選項,讓您能夠在執行測試之前啟動本機開發伺服器。這非常適合在開發期間編寫測試,以及當您沒有預備或正式環境網址可供測試時。
設定網站伺服器
在您的 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 ,則在可用時重複使用網址上現有的伺服器。如果該網址上沒有伺服器正在執行,它將執行命令以啟動新的伺服器。如果為 false ,如果現有程序正在網址上接聽,則會擲回錯誤。若要查看 stdout,您可以設定 DEBUG=pw:webserver 環境變數。 |
ignoreHTTPSErrors | 擷取 url 時是否忽略 HTTPS 錯誤。預設為 false 。 |
cwd | 產生程序的目前工作目錄,預設為設定檔的目錄。 |
stdout | 如果為 "pipe" ,它會將命令的 stdout 導向程序 stdout。如果為 "ignore" ,它會忽略命令的 stdout。預設為 "ignore" 。 |
stderr | 是否將命令的 stderr 導向程序 stderr 或忽略它。預設為 "pipe" 。 |
timeout | 等待程序啟動並可用的時間長度,以毫秒為單位。預設為 60000。 |
gracefulShutdown | 如何關閉程序。如果未指定,程序群組會被強制 SIGKILL 終止。如果設定為 { signal: 'SIGTERM', timeout: 500 } ,則會向程序群組傳送 SIGTERM 信號,如果未在 500 毫秒內結束,則接著傳送 SIGKILL 。您也可以使用 SIGINT 作為信號。0 逾時表示不會傳送 SIGKILL 。Windows 不支援 SIGTERM 和 SIGINT 信號,因此在 Windows 上會忽略此選項。請注意,關閉 Docker 容器需要 SIGTERM 。 |
新增伺服器逾時
網站伺服器有時可能需要較長時間才能啟動。在這種情況下,您可以增加逾時時間以等待伺服器啟動。
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。
當使用 page.goto()、page.route()、page.waitForURL()、page.waitForRequest() 或 page.waitForResponse() 時,它會透過使用 URL()
建構函式來建構對應的 URL,從而考量基準 URL。例如,透過將 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',
},
});