Laravel DuskでE2Eテストを書いてみた(送信編)
2025.08.26 09:00
2025.08.26 10:04

前回はフォームに値を入力するところまででした。
今回は続きとして、チェックボックスにチェックを入れて送信、サンクスページに遷移するところまでをテストします。
送信部分のテストコード
入力後の処理はこんな感じになりました。
$browser
->script("document.querySelector('[dusk=privacy]').scrollIntoView({block:'center'});")
->check('@privacy')
->waitFor('@contact-submit', 5)
->click('@contact-submit')
->acceptDialog()
->waitForLocation('/contact/thanks', 10)
->assertPathIs('/contact/thanks')
->assertQueryStringHas('token');
ポイント解説
- scrollIntoView
チェックボックスが画面外にあってcheck()
が失敗したので、スクロールで中央まで持ってきました。 - check / click
チェックボックスにチェックして、送信ボタンをクリック。 - acceptDialog
ブラウザの確認ダイアログ(送信確認など)が出るので、それをOKにします。 - waitForLocation / assert*
/contact/thanks
に遷移するまで待機し、パスやクエリパラメータを確認。
これで「フォームが送信できて、Thanksページに着いた」ことを保証できます。
まとめ
これでフォームの入力から送信、そしてThanksページへの遷移まで一連の流れをテストできました。
Dusk は実際にブラウザを人間が操作しているように動くので、見ていて面白いし安心感もあります。
開発中は「このページ、ちゃんと送信できるんだっけ?」みたいな不安をなくすのに役立ちました。