I write Protractor automation tests and faced an issue. Wait command doesn\'t actually wait for one of the array elements. See the example below: I try to wait for the first
element.all(by.repeater('category in listCtrl.categories')).get(0)
will ALWAYS throw an error if there are no elements to 'get' (source: element.js ElementArrayFinder.prototype.get)
You can do:
browser.wait(function() {
return category.count().then(function(catCount) {
if (catCount > 0) {
return EC.visibilityOf(category.get(0));
}
}
}, 20000);
Or you could probably just wait until all the elements are visible, and it would do what you are asking it to do (because it will wait for the 'all' promise to resolve completely anyway, not just break out when it gets the first one):
browser.wait(EC.visibilityOf(category), 20000);