できない.dev

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 でキャッシュを部分的にしか復元していない場合にも同じエラーが出る。

よくある原因

  1. ブラウザ未インストール: npm install@playwright/test 本体しか入れず、Chromium などの実体は別途取得が必要
  2. バージョン更新後の再取得漏れ: Playwright は各バージョンが特定リビジョンのブラウザ(例: chromium-1148)に紐づくため、更新すると既存バイナリでは起動できない
  3. CI のキャッシュ不整合: node_modules だけ復元し、ブラウザの置き場所(Linux では ~/.cache/ms-playwright)を復元していない
  4. PLAYWRIGHT_BROWSERS_PATH の食い違い: インストール時と実行時で参照先ディレクトリが異なる

解決策

1. ブラウザをインストールする

npx playwright install
# Chromium だけで十分な場合
npx playwright install chromium

取得先やリビジョンの仕組みは 公式ドキュメントの Browsers に詳しい。

2. バージョン更新時に再実行する

npm install -D @playwright/test@latest
npx playwright install

package.json の更新とブラウザの再取得は 必ずセット で行う。

3. CI では --with-deps を使う

- run: npx playwright install --with-deps

Linux ランナーではブラウザ本体に加えて OS の依存ライブラリも必要なため、--with-deps を付けるか、すべて同梱済みの公式 Docker イメージ(mcr.microsoft.com/playwright)を使う。
設定例は 公式の CI ガイド を参照。

4. PLAYWRIGHT_BROWSERS_PATH を揃える

ブラウザの置き場所を PLAYWRIGHT_BROWSERS_PATH で変えている場合、インストール時と実行時の両方で同じ値を設定する。
片方だけ設定されていると、取得済みでも「Executable doesn't exist」になる。

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