IE11-运行角度TestCafe测试时出现SecurityError zone.js

时间:2019-05-16 12:58:00

标签: angular windows-10 internet-explorer-11 e2e-testing testcafe

我正在将e2e测试编写到angular 6项目中,并使用testCafe进行测试。当前,我们有8个测试,并且这8个测试在所有服务器(Win7,Internet Explorer 11)上都可以正常工作

,但在其他服务器上-6次通过,2次失败,与测试内容没有任何关系。 (Windows Server 2016,Internet Explorer 11)

  

JavaScript错误详细信息:SecurityError:没有可用的堆栈跟踪

打开浏览器控制台时,错误是:

  

SCRIPT5022:SecurityError   (zone.js)

error

即使我们添加没有逻辑的空测试,更改测试顺序等,也会发生此失败,因此该错误与测试或Webapp本身中的实际问题无关。

根据这个GitHub错误报告,我发现IE11在打开的websocket的数量上有限制,并且给出了相同的错误消息: IE11 - SecurityError zone.js (192,25) #1001

但是不幸的是,那里的两个答案都不能解决我的问题, 另外,即使设置 FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER 参数也可以解决该问题,但仅限于128个,并且我们希望该项目进行大量测试。

我还尝试在testCafe中找到一个配置,该配置将在每次测试后关闭浏览器,但在它们的配置中找不到与此选项相似的东西,并且IE中不支持“ headless”。

我的问题是: 由于testCafe根据其文档支持IE11,是否需要任何配置或安全更新才能在IE上运行多个testCafe测试?我们需要知道的操作系统之间有区别吗?

1 个答案:

答案 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对象/实例。