Невозможно запустить Laravel Dusk из коробки

Я следовал инструкциям здесь. Но у меня есть эта ошибка, и я не могу понять, почему.

There was 1 error:

1) Tests\Browser\Auth\LoginTest::testLogin
TypeError: Argument 1 passed to Facebook\WebDriver\Remote\DesiredCapabilities::__construct() must be of the type array, null given, called in /var/www/xxxxxx/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php on line 127

/var/www/xxxxxx/vendor/facebook/webdriver/lib/Remote/DesiredCapabilities.php:33
/var/www/xxxxxx/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:127
/var/www/xxxxxx/tests/DuskTestCase.php:40
/var/www/xxxxxx/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:192
/var/www/xxxxxx/vendor/laravel/framework/src/Illuminate/Support/helpers.php:816
/var/www/xxxxxx/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:193
/var/www/xxxxxx/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:93
/var/www/xxxxxx/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:64
/var/www/xxxxxx/tests/Browser/Auth/LoginTest.php:27

Вот мой DuskTestCase

<?php

namespace Tests;

use Laravel\Dusk\TestCase as BaseTestCase;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;

abstract class DuskTestCase extends BaseTestCase
{
    use CreatesApplication;

    /**
     * Prepare for Dusk test execution.
     *
     * @beforeClass
     * @return void
     */
    public static function prepare()
    {
        static::startChromeDriver();
    }

    /**
     * Create the RemoteWebDriver instance.
     *
     * @return \Facebook\WebDriver\Remote\RemoteWebDriver
     */
    protected function driver()
    {
        $options = (new ChromeOptions)->addArguments([
            '--disable-gpu',
            '--headless',
            '--no-sandbox', // as suggested in one of the forums but didn't work
            '--window-size=1920,1080',
        ]);

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

Я установил facebook/webdriver, но та же ошибка. Я использую Убунту и Докер. Chrome также не является моим браузером по умолчанию, изменение этого не помогло. Что я здесь упускаю?


person Riza    schedule 22.05.2019    source источник
comment
Какую версию Dusk вы используете?   -  person Jonas Staudenmeir    schedule 29.05.2019


Ответы (1)


Драйверы браузера загружаются в \vendor\laravel\dusk\bin в вашем приложении laravel.

расположение ChromeDrive

Перейдите в папку из проводника и запустите исполняемый файл (в зависимости от вашей операционной системы у меня Windows, и я запускаю chromedriver-win.exe). Вы должны увидеть это

терминал, показывающий используемый порт

Это номер порта для использования в вашем файле DuskTestCase.php.

введите здесь описание изображения

Кроме того, вам необходимо убедиться, что вы установили для переменной APP_URL в файле .env URL-адрес, доступный из вашего браузера (у меня это APP_URL=http://localhost:8888).

Примечание. Я не использую порт 9515 в файле .env.

Надеюсь, это поможет.

person Kareem_Bincom    schedule 08.04.2020