Я пишу тесты транспортира для AngularJS с жасмином.Я отслеживаю строку в таблице, которая переместится из таблицы In Progress в таблицу Completed.Это может занять от 30 секунд до 20 минут.Мне нужно заставить Protractor ждать появления строки в таблице «Завершено».
Я использую 2 элемента в строке, чтобы идентифицировать ее как уникальную строку, которую я отслеживаю.Функция поиска для этой строки представляет собой сложную цепочку селекторов элементов и проверок, которая возвращает Promise, который разрешается в объект, содержащий элемент строки.Приблизительно упрощенно:
searchForElement = function() {
var response = element.all(by.repeater(...))
.then(...)
.then(...)
.filter(...)
.then(...
//if found, response.value = element object
//if not found, response.value = false
);
return response;
};
Я пытался вызвать поиск из browser.wait (), но даже когда строка найдена, она остается застрявшей в browser.wait () и время ожидания jasmine.Я попытался изменить jasmine.DEFAULT_TIMEOUT_INTERVAL на 1500000, а также на 0, и он все еще истекает.
browser.wait( function() {
searchForElement().then( function (result) {
// if result.value is an object, return true
});
}, timeout).then( function() {
// assertions
});
После поиска в Интернете я попытался использовать $ интервал, но я получил ошибки о том, что $ интервал не определен,Очевидно, он не предназначен для тестирования.
Как я могу опрашивать функцию поиска (которая возвращает обещание) с интервалом, таким образом, чтобы он прекращал опрос, когда строка найдена в таблице «Завершено», и время ожиданиячерез 25 минут, если строка не найдена?