Laravelでブラウザテスト(Dusk)の基本的な使い方を初心者向けにやさしく解説
生徒
「Laravelで画面を操作するテストができると聞いたんですが、本当にブラウザを動かすんですか?」
先生
「はい、Laravel Duskを使うと、人が操作するようにブラウザを動かしてテストできます。」
生徒
「パソコンをあまり触ったことがなくても大丈夫ですか?」
先生
「操作はすべてプログラムで書くので、順番に理解すれば問題ありませんよ。」
1. Laravelのブラウザテスト(Dusk)とは?
Laravel Duskとは、実際のブラウザを自動で操作してテストを行うための仕組みです。ボタンをクリックしたり、文字を入力したり、画面に表示されている内容を確認したりできます。人がマウスやキーボードで操作する代わりに、プログラムが代わりに操作してくれるイメージです。画面の動きを含めて確認できるため、フォームやログイン画面などのテストに向いています。
2. ブラウザテストと通常のテストの違い
Laravelには通常のテストとブラウザテストがあります。通常のテストは「中身の処理」を確認するのが目的で、画面は動きません。一方、Duskは実際のブラウザを起動し、画面の表示や動きを確認します。たとえるなら、通常のテストはエンジンだけを確認する検査で、ブラウザテストは実際に車を走らせて確認する検査のようなものです。
3. Laravel Duskのインストール方法
Laravel Duskは、コマンドを使って追加します。コマンドとは、文字でパソコンに指示を出す方法です。難しそうに感じますが、決まった文字をそのまま入力するだけなので安心してください。インストールすると、ブラウザテスト専用のフォルダや設定ファイルが自動で用意されます。
php artisan dusk:install
4. 初めてのDuskテストを書いてみよう
Duskでは、テスト用のクラスに処理を書いていきます。ここでは、トップページを開いて文字が表示されているかを確認します。「visit」はページNavigator のような役割で、指定したURLを開きます。「assertSee」は、画面に指定した文字が見えるかを確認する命令です。
public function test_top_page()
{
$this->browse(function ($browser) {
$browser->visit('/')
->assertSee('Laravel');
});
}
5. ボタンをクリックするテスト
Laravel Duskでは、ボタンをクリックする動作も再現できます。これは、人がマウスでクリックするのと同じ動きです。ログインボタンや送信ボタンが正しく動くかを確認するときに役立ちます。画面の流れをそのままテストできるのが、ブラウザテストの大きな特徴です。
public function test_click_button()
{
$this->browse(function ($browser) {
$browser->visit('/login')
->press('ログイン')
->assertPathIs('/dashboard');
});
}
6. 文字を入力するテスト方法
フォームに文字を入力する操作も、Duskで簡単に書けます。「type」はキーボードで文字を入力する動作を表します。これにより、メールアドレスやパスワードの入力テストが可能になります。入力ミスが起きないかを事前に確認できるのがメリットです。
public function test_input_text()
{
$this->browse(function ($browser) {
$browser->visit('/login')
->type('email', 'test@example.com')
->type('password', 'password');
});
}
7. Duskテストを実行する方法
Duskのテストは、専用のコマンドで実行します。実行すると、実際にブラウザが立ち上がり、自動で画面操作が始まります。初めて見ると少し驚きますが、すべてテストの一部です。失敗した場合は、どこで止まったかも分かるので、修正しやすくなります。
php artisan dusk
8. 初心者がつまずきやすいポイント
ブラウザテストでは、画面の表示が終わる前に次の操作をしてしまい、失敗することがあります。その場合は、表示を待つ処理を入れることで解決できます。また、画面に表示される文字が変わるとテストも失敗するため、表示内容を意識して書くことが大切です。ゆっくり順番に確認する意識を持つと、失敗しにくくなります。