2016-05-27 1 views
4

J'utilise Protractor pour les tests e2e. Et j'essaye d'arrêter l'exécution des tests après des erreurs spécifiques (pas toutes et pas seulement après la première erreur (comme l'échec rapide)). J'ai essayé d'utiliser des promesses, des processus et ainsi de suite. Si j'écris: process.exit (1) cela fonctionne, mais toutes les spécifications après dans la suite ne sont pas démarrées. Peut-être que quelqu'un sait comment je peux arrêter les spécifications actuelles (étapes à décrire après des erreurs spécifiques)?Stop spec après des erreurs spécifiques

Mon idée est d'utiliser dans la méthode .waitReady():

waitReady = function(opt_optStr) { 
    var self = this; 
    var driverWaitIterations = 0; 
    var lastWebdriverError; 
    function throwError() { 

    //STOP EXECUTING!! 

    throw new Error("Expected '" + self.locator().toString() + 
      "' to be present and visible. " + 
      "After " + driverWaitIterations + " driverWaitIterations. " + 
      "Last webdriver error: " + lastWebdriverError); 
    } 

    function isPresentError(err) { 
    lastWebdriverError = (err != null) ? err.toString() : err; 

    //STOP EXECUTING!! 

    return false; 
    } 

    return browser.driver.wait(function() { 
    driverWaitIterations++; 
    if (opt_optStr === 'withRefresh' && driverWaitIterations > 7) { 
     refreshPage(); 
    } 
    return self.isPresent().then(function(present) { 
     if (present) { 
     return self.isDisplayed().then(function(visible) { 
      lastWebdriverError = 'visible:' + visible; 
      return visible; 
     }, isPresentError); 
     } else { 
     lastWebdriverError = 'present:' + present; 
     return false; 
     } 
    }, isPresentError); 
    }, 10000).then(function(waitResult) { 
    if (!waitResult) { 
     throwError(); 
    } 
    return waitResult; 
    }, function(err) { 
    isPresentError(err); 
    throwError(); 
    return false; 
    }); 
}; 

Répondre