از دیگر امکانات LaravelDusk لاگین کردن و تست کردن صفحه HomePage و... است .
لاراول داسک به صورت پیش فرض از ChromeDriver استفاده میکند و برای استفاده از آن نیازی نیست تا JDK یا Selenium را روی کامپیوتر خود نصب نمایید .
برای نصب لاراول داسک در یک پروژه لاراولی ابتدا باید دستور زیر را در کامندلاین وارد کنید :
composer require --dev laravel/dusk
بعد از نصب LaravelDusk کد زیر را در کامندلاین اجرا کنید :
php artisan dusk:install
بعد از اجرای دستور بالا یک دایرکتوری به نام Browser در پوشه tests لاراول ساخته میشود .
در پوشه env. پراپرتی APP_URL را مساوی http://127.0.0.1:8000 قرار دهید ، مانند کد زیر :
APP_URL=http://127.0.0.1:8000
حال میخواهیم یک تست برای لاگین کاربران پیاده سازی کنیم و میخواهیم مطمئن شویم که کاربر بعد از لاگین کردن به صفحه Home ریدایرکت میشود .
با دستور زیر میشود یک تست جدید در شاخه Browser ایجاد کرد :
php artisan dusk:make LoginTest
با تایپ دستور php artisan make:auth ، صفحات کاربری و لاگین و ثبت نام را ایجاد میکنیم .
حال در متد testExample در کلاس LoginTest کدهای زیر را مینویسیم :
public function testExample()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(User::find(6))
->visit("/home")
->assertSee("Dashboard");
});
}
در کد بالا کاربر با id عدد 6 جستجو شده و لاگین میشود و بعد از لاگین باید به صفحه home ریدایرکت شده و در صفحه home کلمه Dashboard را مشاهده کند .
برای اجرای تست های LaravelDusk دستور زیر را تایپ نمایید :
php artisan dusk
با اجرا کردن این تست در صورت عدم وجود خطا خروجی به شکل زیر میباشد .
OK (1 test, 1 assertion)
Process finished with exit code 0
حال میخواهیم یک تست دیگر برای صفحه ثبت نام پیاده سازی نماییم ، در این تست میخواهیم فرم های HTML را پر کرده و داده آنها را در دیتابیس ذخیره کرده و خروجی را تست کنیم .
با تایپ دستور زیر یک تست جدید پیاده سازی میکنیم :
php artisan dusk:make RegistrationTest
حال بعد از ایجاد شدن تست کدهای زیر را مینویسیم :
$this->browse(function (Browser $browser) {
$browser->visit("/register")
->assertSee("Register")
->type("name", "Reza")->type("email", "me@email.com")
->type("password", "123456")->type("password_confirmation", "123456")
->press("Register")
->assertSee("Dashboard");
});
بعد از اجرای تست در صورت عدم وجود ارور خروجی به این شکل خواهد بود :
OK (1 test, 2 assertion)
Process finished with exit code 0