Skip to main content

Laravel Duskとは

Laravel Duskは、ブラウザを実際に操作して画面全体を検証するE2Eテストツールです。
デフォルトではSeleniumサーバーを別途準備しなくても、ChromeDriverでテストを実行できます。
公式ドキュメントでは、新規プロジェクトではPest 4のブラウザテストも推奨されています。既存プロジェクトでDuskを使っている場合や、DuskのAPIを使いたい場合に本ページを活用してください。

インストール

まずGoogle Chromeをインストールし、Duskを開発依存として追加します。
ChromeDriverのバージョンを調整したい場合は、dusk:chrome-driver コマンドを使います。

環境設定(.env.dusk.local

Dusk専用の環境変数を使うには、プロジェクトルートに .env.dusk.{environment} を作成します。
ローカル環境なら .env.dusk.local を使います。
Dusk実行中は .env がバックアップされ、.env.dusk.local の内容が一時的に適用されます。

基本的なブラウザテスト

テストを生成し、php artisan dusk で実行します。
失敗したテストだけを再実行する場合:

基本操作の例

visit()type()press()assertSee() はDuskで最もよく使う操作です。
Duskテストでは RefreshDatabase は使いません。公式ドキュメントのとおり、DatabaseMigrationsDatabaseTruncation を使ってテスト間のデータを初期化してください。

ページオブジェクトパターン

複雑な画面をテストするときは、dusk:page でページオブジェクトを作ると保守しやすくなります。
tests/Browser/Pages/Login.phpurl()elements() を定義して、テスト側では再利用します。

スクリーンショットとデバッグ

失敗調査ではスクリーンショットとコンソールログの保存が有効です。
  • スクリーンショット: tests/Browser/screenshots
  • コンソールログ: tests/Browser/console

CI(GitHub Actions)で実行する

GitHub Actionsでは、ChromeDriverとLaravelの内蔵サーバーを起動してから php artisan dusk を実行します。

Dusk実行フロー

公式ドキュメント

Laravel Dusk — 公式ドキュメント

Duskの全API(待機、アサーション、キーボード操作、iframe操作など)は公式ドキュメントで確認してください。
最終更新日 2026年4月17日