Laravel Dusk как показать браузер при выполнении тестов

Я пишу несколько тестов и хочу посмотреть, правильно ли Dusk заполняет поля ввода, но Dusk не показывает браузер во время выполнения тестов, есть ли способ заставить его это сделать?


person Petar Vasilev    schedule 20.04.2018    source источник
comment
Вы бежите из усадьбы или снаружи? Если внутри не будет дисплея для просмотра. Если снаружи он должен зажигать хром для каждого теста.   -  person Andrew Bibby    schedule 20.04.2018
comment
Вы можете использовать для этого скриншоты?   -  person Jonas Staudenmeir    schedule 20.04.2018
comment
@AndrewBibby Я не использую Homestead / Vagrant   -  person Petar Vasilev    schedule 21.04.2018
comment
@JonasStaudenmeir Думаю, я могу это сделать, но было бы проще, если бы браузер был виден   -  person Petar Vasilev    schedule 21.04.2018


Ответы (3)


Отключить безголовый режим в функции tests\DuskTestCase.php файл driver():

$options = (new ChromeOptions)->addArguments([
    //'--disable-gpu',
    //'--headless'
]);
person Jonas Staudenmeir    schedule 21.04.2018
comment
может что-то изменилось, но тесты просто зависают вечно, когда я комментирую эти строки, ни одно окно не открывается - person MightyPork; 09.01.2019
comment
На какой ОС вы работаете? - person Jonas Staudenmeir; 09.01.2019
comment
arch linux (--- заполнение для заполнения минимальной длины комментария) - person MightyPork; 10.01.2019
comment
Вы используете последнюю версию ChromeDriver? - person Jonas Staudenmeir; 10.01.2019
comment
блин, это ты ... ты уже спрашивал меня об этом в том выпуске на github, лол * объясняет, почему это тоже не работает ... - person MightyPork; 11.01.2019

Вверху вашего tests/DuskTestCase.php файла добавьте:

use Facebook\WebDriver\Chrome\ChromeOptions;

В том же файле замените всю функцию driver() на:

/**
 * Create the RemoteWebDriver instance.
 *
 * @return \Facebook\WebDriver\Remote\RemoteWebDriver
 */
protected function driver() {
    $options = (new ChromeOptions)->addArguments([
            //'--disable-gpu',
            //'--headless'//https://stackoverflow.com/q/49938673/470749
    ]);

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

Обновлено (2021 г.):

Вы можете отключить Headless двумя способами:

Метод 1: добавьте это в свой .env

DUSK_HEADLESS_DISABLED=true

Метод 2: добавьте его в свой специальный тестовый пример, если вам не нужно открывать браузер для всех тестов.

protected function hasHeadlessDisabled(): bool
{
    return true;
}

Кстати, я не знаю, почему они не упоминаются в документации. Я сам нашел указанные выше методы из DuskTestCase. а>.

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

person Tuan Ha    schedule 17.05.2021