Laravel Duskとは
Laravel Duskは、ブラウザを実際に操作して画面全体を検証するE2Eテストツールです。デフォルトではSeleniumサーバーを別途準備しなくても、ChromeDriverでテストを実行できます。
インストール
まずGoogle Chromeをインストールし、Duskを開発依存として追加します。dusk:chrome-driver コマンドを使います。
環境設定(.env.dusk.local)
Dusk専用の環境変数を使うには、プロジェクトルートに .env.dusk.{environment} を作成します。ローカル環境なら
.env.dusk.local を使います。
.env がバックアップされ、.env.dusk.local の内容が一時的に適用されます。
基本的なブラウザテスト
テストを生成し、php artisan dusk で実行します。
基本操作の例
visit()、type()、press()、assertSee() はDuskで最もよく使う操作です。
ページオブジェクトパターン
複雑な画面をテストするときは、dusk:page でページオブジェクトを作ると保守しやすくなります。
tests/Browser/Pages/Login.php で url() や elements() を定義して、テスト側では再利用します。
スクリーンショットとデバッグ
失敗調査ではスクリーンショットとコンソールログの保存が有効です。- スクリーンショット:
tests/Browser/screenshots - コンソールログ:
tests/Browser/console
CI(GitHub Actions)で実行する
GitHub Actionsでは、ChromeDriverとLaravelの内蔵サーバーを起動してからphp artisan dusk を実行します。
Dusk実行フロー
公式ドキュメント
Laravel Dusk — 公式ドキュメント
Duskの全API(待機、アサーション、キーボード操作、iframe操作など)は公式ドキュメントで確認してください。