Playwright で page.goto が net::ERR_CONNECTION_REFUSED になる
テスト対象サーバーがまだ起動していない・URL やポートが違う・webServer 設定が無いと、page.goto が接続拒否で失敗する。
webServer を設定して起動完了を待たせれば解消する。
#playwright#webserver#connection-refused#test#config
公開:
要約
page.goto の net::ERR_CONNECTION_REFUSED は、接続先でサーバーが待ち受けていないときに出ます。
多くは「アプリサーバーがまだ起動していない」「URL やポートが違う」「webServer 未設定で起動を待っていない」のいずれかです。
Playwright の webServer を設定すると、テスト開始前にサーバーを起動し、指定 URL が応答するまで待ってくれます。
よくある原因
- アプリサーバーが起動する前にテストが
gotoしてしまう。 baseURLやgotoのポートが実際の起動先と違う。webServer未設定で、起動完了を待つ仕組みが無い。
解決策
1. webServer を設定して起動を待たせる
// playwright.config.ts
import { defineConfig } from "@playwright/test";
export default defineConfig({
use: { baseURL: "http://localhost:3000" },
webServer: {
command: "npm run start",
url: "http://localhost:3000",
reuseExistingServer: !process.env.CI,
},
});url を指定すると、そこが応答するまで Playwright がテスト開始を待ちます。
2. URL とポートを合わせる
baseURL と webServer.url、実際の起動ポートを一致させます。
アプリが 3000 以外で起動するなら全箇所をそろえます。
3. 起動ログで切り分ける
DEBUG=pw:webserver npx playwright testwebServer の起動コマンドや待機状況が出力されるので、起動失敗かポート違いかを切り分けられます。
詳しくは公式の Web server | Playwright を参照してください。