Selenium for Laravel

Selenium for Laravel

Published at - Aug 13, 2021

Key Points:

  1. You don’t need to download anything except this package.
  2. This package download the selenium standalone server v3.11.0 by default and chrome driver will be downloaded based on operating system.
  3. Fluit API based on Browser Testing Kit
  4. Has a minimum configuration option and many things are pulled from the Laravel default configuration.
VersionPackage Version
Laravel 5.62.0
Laravel 5.*1.0
PHP 7.12.0


  1. Java should be installed on local machine.
  2. You should have at least basic understanding of PHPUnit.

Installation guide:

Installing with Laravel Package Manager then you can install it by running given command  and Manager will take care to register selenium service provider.

php artisan add modelizer/selenium

Or you can do it by composer.

composer require modelizer/selenium "~2.0"

Register service provider in app.php


Working with environment variables: You need to create sperate file testing.env in root directory to load testing specific variable. example


Don’t forget to clear laravel configuration cache file.

php artisan config:clear

We are done! Lets start the selenium server.

php artisan selenium:start

Create first test:

Via an Artisan command

php artisan selenium:make:test SeleniumExampleTest


  1. Create a dummy SeleniumExampleTest.php file in tests directory.
  2. Add this code to SeleniumExampleTest.php file and run phpunit vendor/bin/phpunit tests/SeleniumExampleTest.php

namespace Tests;

use Modelizer\Selenium\SeleniumTestCase;

class SeleniumExampleTest extends SeleniumTestCase
     * A basic functional test example.
     * @return void
    public function testBasicExample()
        // This is a sample code you can change as per your current scenario

     * A basic submission test example.
     * @return void
    public function testLoginFormExample()
        $loginInput = [
            'username' => 'dummy-name',
            'password' => 'dummy-password'

        // Login form test case scenario
             ->submitForm('#login-form', $loginInput)
             ->see('Welcome');  // Expected Result

Run the test cases

vendor/bin/steward run staging chrome

This package is been build on top of Steward for running test case with specific arguments you can check out Steward’s Wiki

For full documentation you can checkout our API wiki. Which internally inherit facebook Web Driver so you can liverage full functionality of these dependency packages.


  1. Selenium 3.11.0 and ChromeDriver 2.35 is been used.
  2. Feel free to contribute or create an issue.
  3. The user will not be able to swap between PHPUnit and Selenium who are below Laravel 5.3.
  4. We made changelog as release board and wiki.
  5. If a virtual machine is being used such as VirtualBox (Vagrant, Homestead), a framebuffer is needed:
# install xvfb if needed:
sudo apt-get install xvfb

# run Xvfb
sudo nohup Xvfb :10 -ac

# Set DISPLAY environment variable
export DISPLAY=:10


  1. Firefox support added. (Note: Only work when user has installed firefox locally)
  2. Windows and Linux support needs to be added.
  3. Drivers files should get downloaded as per user-specific operating system.
  4. Add more support for more API.
  5. Support for multiple browser.
  6. Behat integration if possible (research)
  7. Support for 3rd party services such as saucelab.


Many APIs such as seewaitsubmitForm etc are been implemented in Laravel 5.3, and the whole goal of this package is to make it easier for the user to swap testing type anytime. Eg: If a user wants to test by selenium then he only need to extend Modelizer\Selenium\SeleniumTestCase in his test case or if he wants to do PHPUnit testing then he will be able to do it by extending TestCase which Laravel 5.3 provide by default. This will help the user to test a case in many different testing types without doing any changes with API.

About author

Harendra Kanojiya

Hello, I am Harendra Kumar Kanojiya - Owner of this website and a Fullstack web developer. I have expertise in full-stack web development using Angular, PHP, Node JS, Python, Laravel, Codeigniter and, Other web technologies. I also love to write blogs on the latest web technology to keep me and others updated. Thank you for reading the articles.

Follow Us

Follow us on facebook Click Here

Facebook QR
Scan from mobile
Join our telegram channel Click Here
Telegram QR
Scan from mobile