Здесь может быть проблема, вызванная конкретной структурой вашего приложения. Потому что по умолчанию Protractor ожидает вашего приложения Angular, пока Angular не перейдет в так называемый «спокойный режим»
Перед выполнением какого-либо действия Protractor ждет, пока в приложении Angular не будет отложенных асинхронных задач. Это означает, что все таймауты и HTTP-запросы завершены. - это «спокойный режим»
Многие люди сталкиваются с этим, вы можете увидеть много вопросов о StackOverFlow, давно я тоже задавал этот вопрос, а затем мы решили эту проблему с моей командой.
Сначала прочитайте его, чтобы узнать основу:
https://github.com/angular/protractor/blob/master/docs/timeouts.md
В свою очередь, я предложу вам 2 варианта, из которых вам нужно выбрать один.
В местах, где падает тест, поставьте waitForAngularEnabled(false);
и после некоторых действий (которые вы определите при тестировании) верните его, поместив ту же строку кода с логическим значением true
waitForAngularEnabled(true)
Это означает, что вы приказали своему транспортиру не ждать, пока Angular прекратит работать, и продолжит его работу, а затем в какой-то момент, когда вы узнаете, что Angular снова останавливает свою работу, вы снова включаете этот параметр, и Protractor будет ждать для Angular снова.
Но это может быть не единственное место, где это может произойти, и если это так, вам нужно перейти к варианту 2
- Чтобы обсудить с вашими разработчиками, как изменить приложение, чтобы Protractor мог работать без препятствий.
P.S. Это то, что я сделал в своей команде, и они исправили приложение, чтобы тесты Protractor работали без сбоев.