量角器:只能为页面启用虚拟时间,不能为工作者启用

时间:2018-10-03 21:52:51

标签: angular protractor chromium

在我的有角度的应用程序中,我将一些繁琐的逻辑外包给了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();
}

https://chromium.googlesource.com/chromium/src/third_party/+/master/blink/renderer/core/inspector/inspector_emulation_agent.cc

1 个答案:

答案 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