Existe-t-il un moyen de quitter la suite de tests et de cesser d'exécuter d'autres scénarios de test si un scénario de test échoue dans le rapporteur?
Dans le cas d'un framework de test jasmine
, vous n'êtes pas le premier à le demander.
Il existe des discussions/problèmes ouverts pertinents sur la sortie après un premier échec, --fail-fast
option:
Pour faire court, c'est un problème ouvert et un jour jasmine
aurait la fonctionnalité intégrée. Actuellement, utilisez un tiers jasmine-bail-fast
module.
En plus de cela, il y a un paramètre pratique de jasmin realtimeFailure
. Si vous le définissez sur true
, cela n'échouerait pas tout le cycle de test, mais il afficherait des erreurs en temps réel - immédiatement après l'événement - cela pourrait éventuellement couvrir votre cas d'utilisation. Réglez-le dans jasmineNodeOpts
:
exports.config = {
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
...
jasmineNodeOpts: {
realtimeFailure: true
}
}
jasmine-bail-fast
n'a pas fonctionné dans mon cas. Je ne sais pas si c'était à cause de certains conflits avec mes autres plugins de rapport.
Au cas où quelqu'un aurait le même problème. Vous pouvez essayer rapporteur-échec rapide
import failFast from 'protractor-fail-fast';
exports.config = {
// if import statement doesn't work, use this instead of import for older versions of node
// plugins: [{
// package: 'protractor-fail-fast'
// }],
onPrepare: function() {
jasmine.getEnv().addReporter(failFast.init());
},
afterLaunch: function() {
failFast.clean();
}
}
A parfaitement fonctionné pour moi.
EDIT: ajout d'une instruction d'importation dans l'extrait de code pour refléter le fichier Lisez-moi de projactor-fast-fail
Voici ma solution pour ignorer les tests au premier échec avec Jasmine 2 et Protractor. J'espère que ça aide.
exports.config = {
onPrepare: function () {
//skip tests after first fail
var specs = [];
var orgSpecFilter = jasmine.getEnv().specFilter;
jasmine.getEnv().specFilter = function (spec) {
specs.Push(spec);
return orgSpecFilter(spec);
};
jasmine.getEnv().addReporter(new function () {
this.specDone = function (result) {
if (result.failedExpectations.length > 0) {
specs.forEach(function (spec) {
spec.disable()
});
}
};
});
}
};
vous n'avez pas besoin de tous ces plugins tiers. Utilisez natif process.exit()
.
Exemple de code:
it("test", function()
{
...
if(isExit)
{
browser.driver.close().then(function()
{
process.exit(1);
});
}
});
profit.