Ma première course aux tests E2E. J'essaie de digérer les tests du rapporteur de quelqu'un d'autre.
Problème: Il y a beaucoup de browser.driver.sleep
et cela semble fragile.
Objectif: ne pas utiliser browser.driver.sleep
Question: Quelle est la meilleure approche de browser.driver.sleep
? Quelque chose de moins fragile comme une promesse ou quelque chose que je ne connais pas lol?
var config = require('../../protractor.conf.js').config;
describe('this Homepage Body Tests', function(){
browser.driver.get(config.homepageUrl);
it("should open find a clinic page", function(){
// page loads :: want to fix this random wait interval
browser.driver.sleep(2000);
browser.ignoreSynchronization = true;
var string = 'clinic';
var main = '.search-large-text';
var link = element(by.cssContainingText('.submenu li a', string));
link.click().then(function() {
// page reloads :: want to fix this random wait interval
browser.driver.sleep(3000);
var title = element(by.cssContainingText(main, string));
expect(title.getText()).toBe(string);
});
});
});
Puisqu'un ignoreSynchronization
est activé, vous ne pouvez pas utiliser waitForAngular()
, ce qui serait une solution en cas de test de site angulaire.
Une meilleure solution ici serait de définir un délai de chargement de page :
browser.manage().timeouts().pageLoadTimeout(10000); // 10 seconds
Voir également ces discussions pertinentes sur les attentes et les délais d'attente explicites: