6

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.

My Setup

  • Windows 10 as Host;
  • CentOS 7 as Guest (no GUI installation, no Vagrant)
  • Shared folder with Virtual Box.

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.

Marco Aurélio Deleu
  • 4,103
  • 4
  • 32
  • 58
  • Stack Overflow is a site for programming and development questions. This question appears to be off-topic because it is not about programming or development. See [What topics can I ask about here](http://stackoverflow.com/help/on-topic) in the Help Center. Perhaps [Super User](http://superuser.com/) or [Unix & Linux Stack Exchange](http://unix.stackexchange.com/) would be a better place to ask. Also see [Where do I post questions about Dev Ops?](http://meta.stackexchange.com/q/134306) – jww Feb 11 '17 at 10:58
  • 5
    @jww The top answer of the Meta link you provided ends with "DevOps question should be allowed on StackOverflow". The question is obviously about a widely known PHP Framework discussed on SO everyday and it aims to solve the problem of writing TDD with such Framework (and it's new features). One of the question that most contributed to my rep is also not about fixing lines of code, but rather setting up a PHP environment intended to overcome the trouble that we face daily at our line of work (http://stackoverflow.com/questions/35223926/class-simplexmlelement-not-found-on-puphpet-php-5-6) – Marco Aurélio Deleu Feb 11 '17 at 11:17

3 Answers3

3

Note: This is not the accepted answer because the real problem is with Cent OS. This answer is just a suggestion while we don't have a solution for RedHat.

The problem is with Cent OS. By doing everything I did on a Ubuntu distribution, it worked easily. This post om medium based on this gist is enough to get anyone going. I'm going to highlight some points here in case the link breaks.

Dependencies

# makes sure all your repos are up to date
sudo apt-get update
# chrome dependencies I think
sudo apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4
# chromium is what I had success with on Codeship, so seemed a good option
sudo apt-get install chromium-browser
# XVFB for headless applications
sudo apt-get -y install xvfb gtk2-engines-pixbuf
# fonts for the browser
sudo apt-get -y install xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable
# support for screenshot capturing
sudo apt-get -y install imagemagick x11-apps

Running the Xvfb

Xvfb -ac :0 -screen 0 1280x1024x16 &

Done

Marco Aurélio Deleu
  • 4,103
  • 4
  • 32
  • 58
3

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
dusk@192.168.56.70'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]$
Marco Aurélio Deleu
  • 4,103
  • 4
  • 32
  • 58
3

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 :-)

Stan Smulders
  • 4,910
  • 1
  • 23
  • 21