Запуск Laravel Dusk на машине без головы (без графического интерфейса)

С недавним анонсом Laravel 5.4 я решил попробовать. подобно Ozymandias-X на Reddit я тоже был разочарован этим.

Моя настройка

  • Windows 10 в качестве хоста;
  • CentOS 7 в качестве гостя (без установки графического интерфейса, без Vagrant)
  • Общая папка с виртуальной коробкой.

Если я просто включу свою машину и запустить php artisan duskЯ получаю следующее:

[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.

Я пытался следовать Статья Майка Смита, но выполняет ./vendor/laravel/dusk/bin/chromedriver-linux вручную и комментируя static::startChromeDriver(); от DuskTestCase не помогло вообще. Я также попытался установить Xvfb и запустить его через порт: 0 вручную, и то же самое происходит.
Наконец, я попытался запустить драйвер вручную из /usr/lib64/chromium-browser/chromedriver (2.25) и без изменений.

Я пытаюсь избежать запуска этого непосредственно из Windows, потому что я собираюсь использовать процесс CI с linux без головы и без графического интерфейса, и мне придется настроить то же самое, что я пытаюсь прямо сейчас.

4

Решение

Примечание: это не принятый ответ, потому что реальная проблема с Cent OS. Этот ответ — всего лишь предложение, пока у нас нет решения для RedHat.

Проблема с Cent OS. Делая все, что я делал в дистрибутиве Ubuntu, это работало легко. Этот пост ом средний основанный на этот смысл достаточно, чтобы кто-нибудь пошел. Я собираюсь выделить некоторые моменты здесь в случае разрыва связи.

зависимости

# 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

Запуск Xvfb

Xvfb -ac :0 -screen 0 1280x1024x16 &

Готово

2

Другие решения

Решение состоит в том, чтобы запустить Chrome с no-sandbox или НЕ запускайте его как root вообще. Я создал пользователя с именем смеркаться и при этом Сумерки будут работать без проблем.

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]$
2

Если у вас возникли проблемы с Dusk в режиме без головы, попробуйте:

В DuskTestCase используйте следующую функцию драйвера:

/**
* 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)
);
}

Сделал трюк для меня 🙂

1
По вопросам рекламы [email protected]