Laravel Browser Testing, Automation using Laravel Dusk
Laravel Dusk is a package that provides the functionality of unit testing in the browser. It does not require JDK or Selenium. This package uses Chrome driver by default but it can be configured to use Selenium with different browser as well.
First, we get information about the installation part and then we will do one test case with login authentication. I hope this information will be useful for the projects to do unit test and perform test cases using Dusk.
1. Installation
You should have composer dependency in your project. For the installation please run this command in your Laravel project.
composer require –dev laravel/dusk
2. Register service provider
After the installation, you need to register Dusk service provided in the project.
Open the config/app.php file and add this line into provider array.
Laravel\Dusk\DuskServiceProvider::class
3. Configure service provider in a Staging environment
By registering service provider in the application, it will work in all environment but we would not require this in live environment so we will configure this in only Staging, local environment only.
For the environment set up, please open your AppServiceProvider and configure environment like this
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Laravel\Dusk\DuskServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
if ($this->app->environment(‘local’, ‘testing’, ‘staging’)) {
$this->app->register(DuskServiceProvider::class);
}
}
}
4. Complete installation
php artisan dusk:install
By running this command if we open tests directory, one new directory created called Browser for scaffolding which is necessary for dusk tests.
5. Create Test
We are checking here Laravel pre-build authentication for user. To create authentication first;
php artisan make:auth
Now create test by dusk:make Testname
php artisan dusk:make AuthTest
Above command will create AuthTest class in our Browser Directory.
Please make sure that you have run the migration and users in the database.
Now we create one function that test authentication of the user as of now we are passing the wrong credential so we will check how its work.
class AuthTest extends DuskTestCase
{
$this->browse(function ($browser) {
$browser->visit(‘/login’)
->type(’email’, ‘test@gmail.com’)
->type(‘password’, ‘your password’)
->press(‘Login’)
->assertSee(‘You are logged in!’);
});
}
By this function, we can check user login and get the success messages or not.
6. Run the Test
php artisan dusk
Now you will get the result
for the successful test (2 tests, 2 assertions)
for the fail test
ERRORS!
Tests: 3, Assertions: 0, Errors: 3.
For the fail case Dusk takes screenshots of the page where the error occurs and save to screen-shots directory. The screenshots give us the idea of errors. By using this Laravel package you can validate or test any of the forms like this.