我们正在接受从Codeception到Laravel Dusk的验收测试的过渡。使用laravel 5.6。
应用已码头化,我们使用了单独的硒/独立镀铬图像。
测试失败时,测试/浏览器/屏幕截图中会显示屏幕截图 但是当我尝试手动使用它们时,它们根本不起作用。 我尝试过两种方法:
$browser->screenshot('test');
$browser->driver->takeScreenshot(base_path('tests/Browser/screenshots/test2.png'));
具有相同的结果。测试/浏览器/屏幕截图中没有错误,也没有屏幕截图。
为什么会这样?
答案 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