できない.dev

Playwright で page.goto が net::ERR_CONNECTION_REFUSED になる

テスト対象サーバーがまだ起動していない・URL やポートが違う・webServer 設定が無いと、page.goto が接続拒否で失敗する。
webServer を設定して起動完了を待たせれば解消する。

#playwright#webserver#connection-refused#test#config

公開:

要約

page.gotonet::ERR_CONNECTION_REFUSED は、接続先でサーバーが待ち受けていないときに出ます。

多くは「アプリサーバーがまだ起動していない」「URL やポートが違う」「webServer 未設定で起動を待っていない」のいずれかです。

Playwright の webServer を設定すると、テスト開始前にサーバーを起動し、指定 URL が応答するまで待ってくれます。

よくある原因

  1. アプリサーバーが起動する前にテストが goto してしまう。
  2. baseURLgoto のポートが実際の起動先と違う。
  3. 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 とポートを合わせる

baseURLwebServer.url、実際の起動ポートを一致させます。
アプリが 3000 以外で起動するなら全箇所をそろえます。

3. 起動ログで切り分ける

DEBUG=pw:webserver npx playwright test

webServer の起動コマンドや待機状況が出力されるので、起動失敗かポート違いかを切り分けられます。
詳しくは公式の Web server | Playwright を参照してください。

この記事は役立ちましたか?