it-swarm.com.ru

Не могу сделать скриншот в Laravel Dusk

Мы проводим наши приемочные испытания от Codeception до Laravel Dusk. Использование Laravel 5.6. 

Приложение закреплено, и мы используем отдельное изображение Selenium/standalone-chrome.

Когда тесты не выполняются, есть скриншоты в тестах/браузере/скриншотах , Но когда я пытаюсь взять их вручную, они просто не работают ... Я попытался сделать это двумя способами:

$browser->screenshot('test');
$browser->driver->takeScreenshot(base_path('tests/Browser/screenshots/test2.png'));

С тем же результатом. Нет ошибок и нет скриншотов в тестах/браузере/скриншотах.

Почему это могло случиться?

3
Stepan

Хорошо, проблема была в том, что мой код просто не выполнялся.

Причина была я назвал функцию неправильно

public function checkDashboard()

И получается в сумерках все, что не начинается с «теста», не выполняется. Прямо как в phpunit. Но это не говорит об этом в документах . Так что после изменения его на 

public function testCheckDashboard()

моя проблема исчезла.

1
Stepan

Попробуйте переопределить метод captureFailuresFor ():

protected function captureFailuresFor($browsers)
    {
        $browsers->each(function (Browser $browser, $key) {
          $body = $browser->driver->findElement(WebDriverBy::tagName('body'));
            if (!empty($body)) {
                $currentSize = $body->getSize();
                $size = new WebDriverDimension($currentSize->getWidth(), $currentSize->getHeight());
                $browser->driver->manage()->window()->setSize($size);
            }
            $browser->screenshot('failure-'.$this->getName().'-'.$key);
        });
    }

Может быть, эта дискуссия будет полезна для вас: https://github.com/laravel/dusk/issues/320

0
Jonson86