Dusk 启用 Chrome Headless 时测试失败

Dusk Test Fails When Chrome Headless Enabled

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

我正在尝试为此进行 laravel dusk 测试,当我禁用 --headless 时测试工作正常,但如果启用 --headless 则仍然可以看到该元素。

这是测试:

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

这似乎是因为 javascript in headless chrome 没有设置 cookie。

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

有办法解决这个问题吗?

(edit) 这是我试图隐藏的 HTML 元素:

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

截图

元素显示:

元素隐藏:

这里是设置cookie的JS:

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

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

->setCapability('acceptInsecureCerts', true) 添加到 DuskTestCase::driver() 后,cookie 有效。