LaravelDusk یک ابزار تست EndToEnd  و مرورگر در برنامه های نوشته شده با لاراول است که این قابلیت را به برنامه نویسان ارائه میدهد تا برای کامپوننت های فرانت تو اند خود مانند اکشن ها و event های جاوااسکریپت و HTML مانند کلیک کردن روی دکمه و تست نتیجه کلیک کردن ، پرکردن فرم های HTML و سابمیت کردن آنها تست نویسی کند .
از دیگر امکانات 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