With the recent announcement of Laravel 5.4, I thought I'd give it a try. Like Ozymandias-X on Reddit, I also have been frustrated by it.
If I just turn on my machine and run php artisan dusk
, I get the following:
[08:14 AM]-[root@php7]-[/var/www/html/admin]-[git master]
# php artisan dusk
PHPUnit 5.7.11 by Sebastian Bergmann and contributors.
E 1 / 1 (100%)
Time: 25.91 seconds, Memory: 10.00MB
There was 1 error:
1) Tests\Browser\LoginTest::it_should_see_email_error_message
Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"binary":"\/usr\/lib64\/chromium-browser\/chromedriver","args":["no-first-run"]}}}
Operation timed out after 5001 milliseconds with 0 out of -1 bytes received
/var/www/html/admin/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:287
/var/www/html/admin/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:121
/var/www/html/admin/tests/DuskTestCase.php:42
/var/www/html/admin/vendor/laravel/dusk/src/TestCase.php:180
/var/www/html/admin/vendor/laravel/framework/src/Illuminate/Support/helpers.php:639
/var/www/html/admin/vendor/laravel/dusk/src/TestCase.php:181
/var/www/html/admin/vendor/laravel/dusk/src/TestCase.php:111
/var/www/html/admin/vendor/laravel/dusk/src/TestCase.php:85
/var/www/html/admin/tests/Browser/LoginTest.php:24
ERRORS!
Tests: 1, Assertions: 1, Errors: 1.
I tried to follow Mike Smith's article, but executing ./vendor/laravel/dusk/bin/chromedriver-linux
manually and commenting out static::startChromeDriver();
from DuskTestCase didn't help at all. I also tried installing Xvfb and running it on port :0 manually and same thing happens.
Lastly, I tried running the driver manually from /usr/lib64/chromium-browser/chromedriver
(2.25) and no change at all.
I'm trying to avoid running this from Windows directly because I intend to have a CI process with a headless/no-gui linux and I'll have to set up the same thing I'm trying right now.
The solution is to either run chrome with no-sandbox
or NOT run it as root at all. I created a user called dusk and under that Dusk will work with no problems.
login as: dusk
[email protected]'s password:
Last login: Mon Mar 6 13:07:30 2017 from 192.168.56.1
[dusk@php7 ~]$ Xvfb -ac :0 -screen 0 1280x1024x16 &
[1] 2177
[dusk@php7 ~]$ cd /var/www/solucoesideais/laravel-dusk/
[dusk@php7 laravel-dusk]$ php artisan serve --host=127.0.0.1 --port=8000 --env=dusk.environment &
[2] 2186
[dusk@php7 laravel-dusk]$ Laravel development server started: <http://127.0.0.1:8000>
[dusk@php7 laravel-dusk]$ php artisan dusk
PHPUnit 5.7.15 by Sebastian Bergmann and contributors.
[Mon Mar 6 13:23:28 2017] 127.0.0.1:59146 [200]: /favicon.ico
. 1 / 1 (100%)
Time: 3.7 seconds, Memory: 10.00MB
OK (1 test, 1 assertion)
[dusk@php7 laravel-dusk]$
For anyone else that's running into issues with Dusk in headless mode, give this a try:
In DuskTestCase
use the following driver function:
/**
* Create the RemoteWebDriver instance.
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless',
'--no-sandbox',
]);
return RemoteWebDriver::create(
'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)->setCapability('acceptInsecureCerts', TRUE)
);
}
Did the trick for me :-)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With