Laravel Dusk screenshot

2019-05-21 04:53发布

I'm using laravel 5.6 and Dusk for running some tests.

I'm always taking my screenshot like this

...
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'));
        });
    }
}

But as my tests will be more and more used, I don't want to continue to write everytime ->resize(X,Y) and base_path('bla/blab/bla').

I wanted to define the size and path for every tests that will be written.

I guess I should define some function in tests/DesukTestCase.php but I'm not even aware of how I can retrieve the driver and so on.

Have you got some guidance or documentation about this? Because I can't find anything...

2条回答
别忘想泡老子
2楼-- · 2019-05-21 05:09

In my DuskTestCase file I have the below in my driver() function.

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;
}

You should just be able to configure it with the right dimensions you need.

查看更多
做个烂人
3楼-- · 2019-05-21 05:17

You only need to add '--window-size=1920,1080' in $options. This will apply a 1920x1080 screen resolution to all your Dusk tests. Feel free to adjust to whatever window size you want.

So your DuskTestCase.php file should look like this:

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
        )
    );

}
查看更多
登录 后发表回答