2016-04-07 2 views
2

J'essaie de tester qu'un message de growl apparaît après qu'un email valide soit entré et que le bouton de soumission soit cliqué.Protractor (pour tester angular-growl) passant/échouant de manière incohérente

Je sais que la fonctionnalité est là, parce que je vois le message growl apparaître quand webdriver est en cours d'exécution. Le problème est de capturer le message growl dans le test.

J'ai essayé de mettre le forgotPasswordPage.submitButton.click() à l'extérieur (avant) et à l'intérieur de la fonction browser.wait. Nous avons notre growl configuré pour afficher les messages pendant 4 s donc c'est là que j'ai eu le temps d'attente. Je cherche un moyen de rendre ce test plus fiable, et idéalement, je serais capable de tester le texte qui est réellement dans le message de growl, mais la première chose est d'abord.

it('should display green growl message if user email does exist', function(){ 
    // uses testUsers[0] 
    forgotPasswordPage.emailInput.sendKeys(testUsers[0].email); 

    browser.wait(function() { 
     forgotPasswordPage.submitButton.click(); 
     return element(by.css('.alert-success')).isPresent() 
    }, 4000) 
    .then(function(growlMessageIsPresent){ 
     expect(growlMessageIsPresent).toBeTruthy(); 
    }) 
    .then(null, function(err) { 
     console.log('error', err) 
     expect(err).not.toBeTruthy(); 
    }) 
}) 

Répondre

2

Nous avons eu un problème similaire, en essayant d'attraper un message d'état qui apparaît pour quelques secondes, puis disparu, que nous devions aborder tourner la Protractor à angulaire de synchronisation hors temporairement:

browser.ignoreSynchronization = true; 
+0

Problème connexe https://github.com/angular/protractor/issues/169. En résumé - il n'y a pas de vraie solution, sauf celle ci-dessus. – niaher