Здравствуйте! Помогите разобраться с ошибкой таймаута DEFAULT_TIMEOUT_INTERVAL в тесте для Protractor. Кейс такой - залогиниться, выполнить манипуляции с панелью навигации. Появляется окно авторизации, успешно залогиниваюсь - Protractor повисает и падает с ошибкой “Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL”. Элементы на странице есть. Копать как в сторону их отсутствия так и в сторону времени выполнения нет смысла. Здесь дело в том что теряется связь с ангуляром. Использование browser.waitForAngularEnabled(false) после авторизации это доказывает. Может кто сталкивался - в чем может быть дело?
Нужно отключать ожидания Angular на страницах где нет Angular и включать там где есть. Иногда ожидания не работают на страницах там где есть Angular. browser.ignoreSynchronization = true;
Спасибо за отклик. Сейчас так и делаю. Таких страниц много оказалось. На stackoverflow пишут что так может быть из за сторонних компонентов, коих у нас в приложении предостаточно. Смущает только то что тесты упали вдруг, подумал что в роутере поковырялись, но со слов разработчиков изменений не было и те самые сторонние компоненты давно никто не трогал. В общем фреймворк огорчил. Это моя вторая попытка работать с ним. Пробовал его версию 3 или 4 для ангуляра 1 - тем же и закончилось, начал падать на ожиданиях ангуляра. Теперь новое приложение на ангуляр 9 - тестирование тоже начинается с шаманства. Параллельно сейчас смотрю webdriverio - первое впечатление очень хорошее, на этом же самом приложении все пока стабильно.
я использовал Protractor на JS и C#, так вот на C#, там так же как и на JS повисает, плюс ожидания навешаны на каждое действие, вплоть до получения текста, что очень сильно замедляет тест, там где не нужно. По моему ожидания достаточно выполнять после навигации или совершения активных действий.
Спасибо за ссылку. Если используете ignoreSynchronization везде, то да, придется ждать абсолютно всего. Но сейчас вроде допилена поддержка async/await - не пробовали ? Я один тест попробовал - работал корректно. Причем работает как я понял и controlflow и async/await одновременно. Наконец то можно вывод console.log нормально делать))) а то вываливал все сразу либо в промисы оборачивать. Возвращаясь к теме ожиданий - считаю что фреймоврк на то нужен чтобы все за меня делать)) (ждать, обрабатывать ошибки, логировать) Иначе смысл его существования теряется. Можно взять голый селениум и обернуть во что хочешь. Протрактор вообще в странном состоянии находится, он самый массовый и судя по его офсайту - сейчас заброшен. Доки новые не пишут, старые не обновляют, сопутствующее ПО не обновляют.
async/await синтаксический сахар, это не должно ни как влиять, в некоторых фреймворках так написано, что иногда лучше самому сделать (конечно это не касается таких масштабных как например Webdriver или Mocha)