无法在Laravel Dusk中截屏

时间:2018-12-10 13:13:36

标签: php laravel unit-testing testing laravel-dusk

我们正在接受从Codeception到Laravel Dusk的验收测试的过渡。使用laravel 5.6。

应用已码头化,我们使用了单独的硒/独立镀铬图像。

测试失败时,测试/浏览器/屏幕截图中会显示屏幕截图 但是当我尝试手动使用它们时,它们根本不起作用。 我尝试过两种方法:

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

具有相同的结果。测试/浏览器/屏幕截图中没有错误,也没有屏幕截图。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

好的,问题是我的代码没有执行。

原因是我将函数命名为错误

public function checkDashboard()

并且在黄昏时发现所有不以“ test”开头的内容都没有执行。就像在phpunit中一样。但是在文档中并没有这么说。 因此,将其更改为

public function testCheckDashboard()

我的问题不见了。

答案 1 :(得分:0)

尝试覆盖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