在我的有角度的应用程序中,我将一些繁琐的逻辑外包给了Web Worker。 在Chrome Headless中使用量角器运行e2e测试后,我在每个量角器正在执行的操作中得到以下错误。请注意,e2e结果仍然不错。仅此烦人的错误日志。
[1003/234747.472:ERROR:inspector_emulation_agent.cc(537)] Can only enable virtual time for pages, not workers
有人已经看到了吗?
它自身的错误来自铬
Response InspectorEmulationAgent::AssertPage() {
if (!web_local_frame_) {
LOG(ERROR) << "Can only enable virtual time for pages, not workers";
return Response::InvalidParams(
"Can only enable virtual time for pages, not workers");
}
return Response::OK();
}
答案 0 :(得分:2)
在配置文件中,有capabilities
个对象(如果对多个浏览器运行测试,则为multiCapabilities
)。除其他事项外,该对象具有属性args
,该属性带有参数数组
capabilities: {
"browserName": "chrome",
"chromeOptions": {
"args": ["incognito","--window-size=1920,1080","disable-extensions","--no-sandbox","start-maximized","--test-type=browser"]
}
}
删除"--no-sandbox"
参数!
此人的作用是允许您从远程容器(即Jenkins)运行测试。同时,如果在计算机上运行测试时包含该参数,则其副作用如此处Chrome Instances don't close after running Test Case in Protractor
所述我认为它也会导致您的错误。因此,“只能启用虚拟时间...”可能表明没有“虚拟”容器,只有本地进程。
该问题的临时解决方案是始终从本地配置中删除此参数,而不要提交。
我的永久解决方案是通过Grunt使用默认值isHost
创建一个可选标志false
。然后在配置中,如果参数为true
,则将"--no-sandbox"
推入其他chrome参数的顶部。当我配置CI时,我就使用该参数启动了Protractor