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 有效。
我有一个 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 有效。