Скриншот Laravel Dusk

Я использую laravel 5.6 и Dusk для запуска некоторых тестов.

Я всегда делаю свой скриншот вот так

...
use Facebook\WebDriver\WebDriverDimension;
...
class LoginTest extends DuskTestCase
{
    public function testLogin()
    {
        $user = User::first();

        $this->browse(function ($browser) use ( $user ) {
            $test = $browser->visit( new Login)
                    ->resize(1920,1080)                    
                    ...                
                    ->driver->takeScreenshot(base_path('tests/Browser/screenshots/testLogin.png'));
        });
    }
}

Но поскольку мои тесты будут использоваться все чаще и чаще, я не хочу продолжать писать каждый раз ->resize(X,Y) и base_path('bla/blab/bla').

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

Думаю, мне нужно определить какую-то функцию в tests/DesukTestCase.php, но я даже не знаю, как получить драйвер и так далее.

У вас есть руководство или документация по этому поводу? Потому что я ничего не могу найти ...


person Atnaize    schedule 31.07.2018    source источник


Ответы (3)


Вам нужно только добавить '--window-size=1920,1080' в $options. Это применит разрешение экрана 1920x1080 ко всем вашим тестам Dusk. Не стесняйтесь настраивать любой размер окна, какой захотите.

Итак, ваш файл DuskTestCase.php должен выглядеть так:

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

    $driver = RemoteWebDriver::create(
        'http://selenium:4444/wd/hub',
        DesiredCapabilities::chrome()->setCapability(
            ChromeOptions::CAPABILITY,
            $options
        )
    );

}
person maelga    schedule 01.01.2019

В моем DuskTestCase файле у меня есть следующая функция driver().

protected function driver()
{
    $options = (new ChromeOptions())->addArguments([
        '--disable-gpu',
        '--headless',
    ]);

    $driver = RemoteWebDriver::create(
        'http://selenium:4444/wd/hub',
        DesiredCapabilities::chrome()->setCapability(
            ChromeOptions::CAPABILITY,
            $options
        )
    );

    $size = new WebDriverDimension(1280, 2000);
    $driver->manage()->window()->setSize($size);

    return $driver;
}

Вы просто должны иметь возможность настроить его с нужными вам размерами.

person ajtrichards    schedule 31.07.2018
comment
Он работает нормально, у вас есть идеи относительно моей проблемы с путями? - person Atnaize; 31.07.2018
comment
Путь куда сохранить? Я когда-либо использовал только местоположение по умолчанию - person ajtrichards; 01.08.2018
comment
По умолчанию он хранится в корне приложения., Нет? Во всяком случае, разберусь позже - person Atnaize; 01.08.2018
comment
В моем случае скриншоты хранятся в ./tests/Browser/screenshots - person ajtrichards; 01.08.2018

Что касается проблемы пути, вы можете установить ее с помощью Browser::$storeScreenshotsAt в setUp методе вашего класса тестового примера.

protected function setUp()
{
    parent::setUp();
    Browser::$storeScreenshotsAt = '/path/to/your/screenshots';
}

Местоположение по умолчанию Browser::$storeScreenshotsAt устанавливается в setUp методе главного родительского теста case class. Поэтому убедитесь, что вы установили Browser::$storeScreenshotsAt после вызова parent::setUp(), иначе он будет перезаписан по умолчанию.

person kanji    schedule 11.08.2019