在Angular e2e(量角器)测试期间记录浏览器错误和网络流量

时间:2019-01-03 13:35:00

标签: angular testing protractor

我有两个相当不错的Angular 7 CLI应用程序,具有良好的端到端覆盖。大约在同一时间,两个应用程序开始在测试开始时间歇性地超时,最可靠的是在AppVeyor构建服务器上。顺便说一句,我也可以在本地进行复制。

基本日志只是说测试在某个步骤上超时,这并不是真的有用。我想目前某种API调用或Angular功能不可靠,但我不知道哪个。

如何最大程度地提高ng e2e的详细程度?此时输出越多越好,但至少我在寻找:

  • 浏览器的网络流量(例如,某些API提供500秒?还是无法访问?)
  • 浏览器错误(即您在控制台中看到的内容)

理想情况下,我会增加冗长程度并仅通过命令行上的标志或例如中的设置来启用额外的日志记录。 protractor.conf文件-但目前我也愿意根据需要安装其他软件包。

我已经检查过the Angular CLI e2e docs,但没有提及“详细程度”或“日志”。我浏览了量角器网站上链接的the protractor example (?) config作为参考,但也找不到任何内容。

1 个答案:

答案 0 :(得分:0)

下面的示例是使用 Chrome 浏览器的。它将从浏览器控制台获取错误和资源失败。

量角器配置:

config.multiCapabilities = [{
    browserName: 'chrome',
    shardTestFiles: true,
    maxInstances: process.env.RUN_ON === 'local' ? 1 : 18,
    'chromeOptions': {
        'args': ['disable-infobars',
                 '--start-maximized',
                 'window-size=1920,1080'
                ]
    },
    loggingPrefs: {
        "browser": "SEVERE"
    },
    verboseMultiSessions: true
}];

获取浏览器日志:

browser.manage().logs().get('browser').then((browserLogs) => {
    if (browserLogs.length > 0) {
        console.log(browserLogs);
        let whitelistResources = new Set(['/static/', '/subscribable-resource-types/', '/Thumbnail/', '/picture/']);
        JSON.parse(JSON.stringify(browserLogs)).forEach((browserLog) => {
            let lstBrowser = browserLog.message.split('/');
            let intersection = new Set([...lstBrowser].filter(x => whitelistResources.has('/' + x + '/')));
            if (intersection.size === 0) {
                // Validate Network Failure: If URL part does not exists in the whitelistresource
                expect(browserLog.message).toEqual('');
            }
        });
    }
});