gpt4 book ai didi

angular - Protractor 以代码 0 退出,即使测试失败

转载 作者:行者123 更新时间:2023-12-04 12:49:29 25 4
gpt4 key购买 nike

我正在通过 npm 运行 Protractor v4.0.9,并注意到我在 Visual Studio Team Services 上的构建不会失败,即使测试报告失败。进一步研究,我引入了一个错误,这样测试就会失败,然后在本地运行它们。正如下面的屏幕截图所示,我有 17/17 次测试失败,但退出代码仍为 0,据我所知这是成功的。它甚至说 chrome #01 passed,我认为这是错误的。

protractor passing when it should fail

这是我的 Protractor 配置:

"use strict";
exports.config = {
baseUrl: process.env.npm_package_config_baseUrl,
framework: 'jasmine',
capabilities: {
browserName: 'chrome'
},
specs: ['test/*.spec.js'],
rootElement: 'se-app',
directConnect: true,
ignoreUncaughtExceptions: false,
onPrepare: function () {
var globals = require('protractor');
var browser = globals.browser;
browser.ignoreSynchronization = true;
browser.manage().window().maximize();
var specReporter = require('jasmine-spec-reporter');

// add jasmine spec reporter
jasmine.getEnv().clearReporters();
jasmine.getEnv().addReporter(new specReporter({
displayStacktrace: false
}));

var reporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new reporters.JUnitXmlReporter({
savePath: 'junit/'
}));
},
};

我检查了 documentation for the Protractor config但看不到任何会导致这种情况发生的明显设置。我什至在 ignoreUncaughtExceptions:false 中添加(如上所示)是明确的,但没有任何区别。

最佳答案

好的,我找到问题了。默认情况下,Jasmine 包含控制台 ReporterCompletionReporter。如果测试失败,后者将退出流程。通过清理记者,我正在移除这位记者。

我可以只删除那一行,但我想删除控制台报告器,这样规范报告器和控制台报告器就不会同时做同样的工作。

所以我不得不重新添加完成报告器。我不确定这是否是“正确”的方法,但它确实有效。这是我的新 onPrepare 函数:

onPrepare: function() {
let globals = require('protractor');
let reporters = require('jasmine-reporters');
let CompletionReporter = require('jasmine/lib/reporters/completion_reporter');
let SpecReporter = require('jasmine-spec-reporter');

let browser: ProtractorBrowser = globals.browser;
browser.ignoreSynchronization = true;
browser.manage().window().maximize();

let specReporter = new SpecReporter({
displayStacktrace: false
});

let junitReporter = new reporters.JUnitXmlReporter({
savePath: 'junit/'
});

let completionReporter = new CompletionReporter();
completionReporter.onComplete((success: boolean) => {
if (!success) {
process.exit(1);
}
});

// Now clear all existing reporters and add the ones I want in the order I want
jasmine.getEnv().clearReporters();
jasmine.getEnv().addReporter(specReporter);
jasmine.getEnv().addReporter(junitReporter);
jasmine.getEnv().addReporter(completionReporter);
}

关于angular - Protractor 以代码 0 退出,即使测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40932190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com