Playwright でブラウザが起動できない(Executable doesn't exist)
「Executable doesn't exist」は、npm パッケージとは別に管理されるブラウザバイナリが未取得なのが原因。
npx playwright install で取得する。
バージョン更新直後や CI のキャッシュ不整合でも起きる。
#playwright#install#browser#chromium#ci
公開:
要約
browserType.launch: Executable doesn't exist at /home/user/.cache/ms-playwright/... が出てブラウザが起動できないのは、npm パッケージとは別に管理されるブラウザバイナリが取得されていない ことが原因。npx playwright install を一度実行すれば解決する。
Playwright をバージョンアップした直後や、CI でキャッシュを部分的にしか復元していない場合にも同じエラーが出る。
よくある原因
- ブラウザ未インストール:
npm installは@playwright/test本体しか入れず、Chromium などの実体は別途取得が必要 - バージョン更新後の再取得漏れ: Playwright は各バージョンが特定リビジョンのブラウザ(例:
chromium-1148)に紐づくため、更新すると既存バイナリでは起動できない - CI のキャッシュ不整合:
node_modulesだけ復元し、ブラウザの置き場所(Linux では~/.cache/ms-playwright)を復元していない - PLAYWRIGHT_BROWSERS_PATH の食い違い: インストール時と実行時で参照先ディレクトリが異なる
解決策
1. ブラウザをインストールする
npx playwright install
# Chromium だけで十分な場合
npx playwright install chromium取得先やリビジョンの仕組みは 公式ドキュメントの Browsers に詳しい。
2. バージョン更新時に再実行する
npm install -D @playwright/test@latest
npx playwright installpackage.json の更新とブラウザの再取得は 必ずセット で行う。
3. CI では --with-deps を使う
- run: npx playwright install --with-depsLinux ランナーではブラウザ本体に加えて OS の依存ライブラリも必要なため、--with-deps を付けるか、すべて同梱済みの公式 Docker イメージ(mcr.microsoft.com/playwright)を使う。
設定例は 公式の CI ガイド を参照。
4. PLAYWRIGHT_BROWSERS_PATH を揃える
ブラウザの置き場所を PLAYWRIGHT_BROWSERS_PATH で変えている場合、インストール時と実行時の両方で同じ値を設定する。
片方だけ設定されていると、取得済みでも「Executable doesn't exist」になる。