启用Chrome无头后,黄昏测试失败

时间:2018-07-31 18:13:02

标签: javascript laravel google-chrome-headless laravel-dusk

我有一个HTML元素,该元素应该仅在首页加载时显示。 Javascript设置了一个cookie,如果设置了cookie,则不会显示该元素(如果存在cookie,PHP将检查cookie,并且不呈现内容)。

我正在尝试对此进行laravel黄昏测试,并且当我禁用--headless时,该测试工作正常,但是如果启用了--headless,则仍然可以看到该元素。

这是测试:

$browser->visit('/')
    ->visit(new ThePage($param))
    ->assertSee('element text')
    ->visit(new ThePage($param))
    ->assertDontSee('element text');

这似乎是因为无头Chrome中的javascript没有设置Cookie。

检查 -> assertPlainCookieValue('hide_element','hide'); 支持这一点。

有没有办法解决这个问题?

(编辑)这是我要隐藏的HTML元素:

<div id="cookiePolicy" class="cookie-policy">
    <p>element text</p>
</div>

屏幕截图

元素显示: enter image description here

元素隐藏: enter image description here

这是设置cookie的JS:

document.cookie = 'hide_cookie_policy=hide;path=.domainname.com;expires= Fri, 31 Dec 9999 23:59:59 GMT';

1 个答案:

答案 0 :(得分:1)

此问题是由自签名SSL证书引起的。

->setCapability('acceptInsecureCerts', true)添加到DuskTestCase::driver()后,该cookie起作用。