我的规格共享相同的第一个描述(第二个是不同的),例如。
spec1.js:
describe("topic1",()=> {
describe("testcase1",()=> {
...
});
});
spec2.js:
describe("topic1",()=> {
describe("testcase2",()=> {
...
});
});
如果我在同一个浏览器中运行这两个规范,那么可以正常工作,如:
protractor --specs spec1.js,spec2.js config.js
但是我想用spec1.js和spec2.js之间的运行重启浏览器:
protractor --specs spec1.js config.js; protractor --specs spec2.js config.js
或设置功能:
shardTestFiles: true
然后是junitresults.xml
resp。生成junitresults-topic1.xml
(取决于consolidateAll
选项为true
或false
),仅包含最后一个规范(spec2.js)运行的结果。
如何在XML结果中获得所有运行?
答案 0 :(得分:0)
我建议使用选项 - restartBrowserBetweenTests
,而不是两次触发Protractor以避免使用相同的浏览器会话。查看以下摘录自Protractor official documentation。
/ ** *如果为true,量角器将在每个之间重新启动浏览器 测试。默认*值为false。* /
restartBrowserBetweenTests?: boolean;
这将帮助您避免jUnit XML报告被覆盖的问题。
答案 1 :(得分:0)
我们的版本存在类似的问题。它们运行良好,但是我们只能根据“ maxInstances”参数获得结果数量。我们同时使用jUnit XML和漂亮的报告器。为了解决这个问题,我们在漂亮的报告程序中添加了“ isSharded:true”,在multiCapabilite中添加了“ shardOnSpec:true”。这是一个示例:
let prettyReporter = new PrettyReporter({
path: dirPath,
screenshotOnPassed: false,
isSharded: true
});
multiCapabilities: [{
browserName: 'chrome',
chromeOptions: {
args: ["--window-size=1920x1080"]
},
shardTestFiles: true,
shardOnSpec: true,
maxInstances: 4,
}],
我们在Azure DevOps中运行CI / CD,这使报告程序可以处理所有运行的测试。因此,现在我们获得了所有测试结果,而不仅仅是最后的4个。
希望这会有所帮助。