Playwrightでテスト実行時にweb serverを立ち上げる

Playwright で書かれたテストの改修をしていると、CI 上でホスティングサービスにデプロイした URL を貰ってきてから実行しているケースが度々見られるが、Web Server を立ち上げて実行した方が良いことが多い。

URL を貰う形式ではタスクが直列になるため実行時間が増加し、ホスティングサービスの開発環境向けの貧弱な環境へアクセスするためテストがフレーキーになる可能が高まる場合がある。

テスト実行時にサーバーを立ち上げる#

次のような設定をすれば、テスト実行時に指定したコマンドを実行してサーバーを立ち上げることができる。

import { defineConfig } from "@playwright/test";
export default defineConfig({
// 配列を指定して複数のサーバー、例えばAPIサーバーを立ち上げることも可能
webServer: {
command: "pnpm run dev",
url: "http://localhost:3000",
// 既にサーバーが立ち上がっていれば再利用する
// これを指定しないと、開発サーバーを立ち上げてポートが衝突しエラーになってしまう場合がある
reuseExistingServer: !process.env.CI,
},
use: {
// テストファイルで相対パスで記述できるようになる
baseURL: "http://localhost:3000",
},
});

参考:Web server | Playwright