Laravel Dusk тестирует с ошибкой Gitlab CI, не удается подключиться к порту: 9515: соединение отклонено

#laravel #gitlab #gitlab-ci #laravel-dusk

#laravel #gitlab ( гитлаб ) #gitlab-ci #laravel-dusk #gitlab

Вопрос:

итак, я пытался настроить Laravel с помощью Gitlab, теперь все работает нормально, однако, когда скрипт пытается запустить тесты моего браузера, я получаю следующую ошибку

  Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"binary":"","args":["--disable-gpu","--headless","--window-size=1920,1080"]}}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"binary":"","args":["--disable-gpu","--headless","--window-size=1920,1080"]}}}
Failed to connect to localhost port 9515: Connection refused

  at vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:331
  

вот мой .gitlab-ci.yml файл

 before_script:
  - apt-get update
  - apt-get install -qq git curl libmcrypt-dev libjpeg-dev libpng-dev libfreetype6-dev libbz2-dev
  - apt-get install zlib1g-dev libzip-dev
  - apt-get clean
  - curl --silent --show-error https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
  - docker-php-ext-install pdo_mysql zip
  - cp .env.test .env
  
image: php:7.3

services:
  - mysql:5.7

variables:
  MYSQL_ROOT_PASSWORD: secret
  MYSQL_DATABASE: homestead
  MYSQL_USER: homestead
  MYSQL_PASSWORD: secret
  DB_HOST: mysql
  DB_USERNAME: root

stages:
  - test

browser_test:
  stage: test
  script:
    - echo "Starting pest tests"
    - composer install
    - php artisan dusk:install
    - php artisan dusk:chrome-driver
    - php artisan key:generate
    - php artisan migrate
    - php artisan serve amp; vendor/bin/pest
  

и это мой .env.test файл

 APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=mysql
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

  

из того, что я смог найти, это то, что chrome-driver не запущен,

Спасибо за ваш ответ.

Ответ №1:

проблема решается путем добавления --no-sandbox в настройки драйвера Chrome

в tests/DuskTestCase.php добавьте это

     protected function driver()
    {
        $options = (new ChromeOptions)->addArguments([
            '--disable-gpu',
            '--headless',
            '--window-size=1920,1080',
               '--no-sandbox', <---------------------
        ]);

        return RemoteWebDriver::create(
            'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
                ChromeOptions::CAPABILITY, $options
            )
        );
    }