我有两个相当不错的Angular 7 CLI应用程序,具有良好的端到端覆盖。大约在同一时间,两个应用程序开始在测试开始时间歇性地超时,最可靠的是在AppVeyor构建服务器上。顺便说一句,我也可以在本地进行复制。
基本日志只是说测试在某个步骤上超时,这并不是真的有用。我想目前某种API调用或Angular功能不可靠,但我不知道哪个。
如何最大程度地提高ng e2e
的详细程度?此时输出越多越好,但至少我在寻找:
理想情况下,我会增加冗长程度并仅通过命令行上的标志或例如中的设置来启用额外的日志记录。 protractor.conf
文件-但目前我也愿意根据需要安装其他软件包。
我已经检查过the Angular CLI e2e docs,但没有提及“详细程度”或“日志”。我浏览了量角器网站上链接的the protractor example (?) config作为参考,但也找不到任何内容。
答案 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('');
}
});
}
});