我正在将e2e测试编写到angular 6项目中,并使用testCafe进行测试。当前,我们有8个测试,并且这8个测试在所有服务器(Win7,Internet Explorer 11)上都可以正常工作
,但在其他服务器上-6次通过,2次失败,与测试内容没有任何关系。 (Windows Server 2016,Internet Explorer 11)
JavaScript错误详细信息:SecurityError:没有可用的堆栈跟踪
打开浏览器控制台时,错误是:
SCRIPT5022:SecurityError (zone.js)
即使我们添加没有逻辑的空测试,更改测试顺序等,也会发生此失败,因此该错误与测试或Webapp本身中的实际问题无关。
根据这个GitHub错误报告,我发现IE11在打开的websocket的数量上有限制,并且给出了相同的错误消息: IE11 - SecurityError zone.js (192,25) #1001
但是不幸的是,那里的两个答案都不能解决我的问题, 另外,即使设置 FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER 参数也可以解决该问题,但仅限于128个,并且我们希望该项目进行大量测试。
我还尝试在testCafe中找到一个配置,该配置将在每次测试后关闭浏览器,但在它们的配置中找不到与此选项相似的东西,并且IE中不支持“ headless”。
我的问题是: 由于testCafe根据其文档支持IE11,是否需要任何配置或安全更新才能在IE上运行多个testCafe测试?我们需要知道的操作系统之间有区别吗?
答案 0 :(得分:0)
我有同样的问题。我的解决方案是afterEach回调,该回调通过ClientScript关闭websocket。
// someFixture.js
import {closeWebSocket} from "./client-interaction.js";
fixture("myFixture")
.afterEach(closeWebSocket)
.page("http://localhost/");
/* your tests here... */
//client-interaction.js
export const closeWebSocket = ClientFunction(() => {
return new Promise((resolve, reject) => {
window.myWebSocket.onclose = function() {
resolve();
}
window.myWebSocket.close();
});
});
请注意,此示例假设在window.myWebSocket上可以使用实际的WebSocket对象/实例。