If you are using Laravel Homestead and you want to use Laravel Dusk to test your application, you can find some problems.
For example, if you create a basic test
<?php namespace Tests\Browser; use Laravel\Dusk\Browser; use Tests\DuskTestCase; class ExampleTest extends DuskTestCase { /** * A basic browser test example. * * @return void */ public function testBasicExample() { $this->browse(function (Browser $browser) { $browser->visit('/') ->assertPathIs('/login') ->assertSee('Forgot your password?');; }); } }
When you try to execute it, you can get an error
$ php artisan dusk PHPUnit 5.7.13 by Sebastian Bergmann and contributors. E 1 / 1 (100%) Time: 1.23 seconds, Memory: 10.00MB There was 1 error: 1) Tests\Browser\ExampleTest::testBasicExample Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"desiredCapabilities":{"browserName":"chrome","platform":"ANY"}} Failed to connect to localhost port 9515: Connection refused /home/vagrant/Code/my-test-project/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:287 /home/vagrant/Code/my-test-project/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:121 /home/vagrant/Code/my-test-project/tests/DuskTestCase.php:32 /home/vagrant/Code/my-test-project/vendor/laravel/dusk/src/TestCase.php:180 /home/vagrant/Code/my-test-project/vendor/laravel/framework/src/Illuminate/Support/helpers.php:639 /home/vagrant/Code/my-test-project/vendor/laravel/dusk/src/TestCase.php:181 /home/vagrant/Code/my-test-project/vendor/laravel/dusk/src/TestCase.php:111 /home/vagrant/Code/my-test-project/vendor/laravel/dusk/src/TestCase.php:85 /home/vagrant/Code/my-test-project/tests/Browser/ExampleTest.php:21 ERRORS! Tests: 1, Assertions: 0, Errors: 1.
To resolve it, you have to install google-chrome in the Vagrant Homestead machine:
$ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - $ sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' $ sudo apt-get update && sudo apt-get install -y google-chrome-stable
Then you have to install Xvfb
$ sudo apt-get install -y xvfb
Then you have to start the ChromeDriver. Your current directory must be the main directory of your project
$ ./vendor/laravel/dusk/bin/chromedriver-linux --port=8888 Starting ChromeDriver 2.25.426924 (649f9b868f6783ec9de71c123212b908bf3b232e) on port 8888 Only local connections are allowed.
Then add the project to the /etc/hosts in your Vagrant Homestead machine
127.0.0.1 your-project.app
Open another SSH connection to the Vagrant Homestead machine and execute
$ Xvfb :0 -screen 0 1280x960x24 &
to run the xvfb server.
Return to the first console and execute the tests
$ php artisan dusk PHPUnit 5.7.13 by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: 4.79 seconds, Memory: 10.00MB OK (1 test, 2 assertions)
Now you can see the tests in execution.
Info:
- I get the information for this post at https://github.com/laravel/dusk/issues/50#issuecomment-275155974