Подтвердить что ты не робот

Не удалось: время ожидания ожидания асинхронных задач Angular завершается через 11 секунд

Я хотел бы до конца проверить наше приложение angular 2 с помощью Protractor, но я застрял в сообщении:

"Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds."

Мой файл conf.

exports.config = {
  directConnect: true,
  specs: ['spec.js'],

  // For angular2 tests
  useAllAngular2AppRoots: true,
}

Chrome открывается, и веб-сайт также открывается, затем ничего не происходит до истечения таймаута.

При отключении синхронизации (используя browser.ignoreSynchronization = true;), это ОК. Но я теряю функцию автоматического ожидания, одно из главных преимуществ использования Protractor.

Приложение полностью основано на angular 2. Итак, почему это не работает?

Наши разработчики сказали мне, что мы не проводим опрос (одна из возможных причин в соответствии с Документация по транспортировке). Кстати, мы используем архитектуру websocket. Я не знаю, есть ли ссылка.

На самом деле, я не знаю, как устранить эту проблему вообще.

Может кто-нибудь помочь, пожалуйста?

4b9b3361

Ответ 1

Ваша догадка правильная. Эта ошибка возникнет, когда будут выполняться какие-либо выдающиеся задачи, запущенные в вашем приложении angular2.

Да, наиболее распространенной причиной является то, что приложение непрерывно обследует $timeout или $http, Protractor будет ждать бесконечно и тайм-аут. Но это также может происходить в сценариях, где приложение занимает более 11 секунд.

Пожалуйста, обратитесь к здесь для получения дополнительной информации о различных тайм-аутах

значение таймаута по умолчанию - 11 секунд. Вы можете изменить это, отрегулировав значение ниже config.js и попытайтесь посмотреть, не исчезла ли у вас проблема

  /**
   * The timeout in milliseconds for each script run on the browser. This
   * should be longer than the maximum time your application needs to
   * stabilize between tasks.
   */
  allScriptsTimeout?: number;

Ответ 2

Временное включение функции browser.ignoreSynchronization исправляет его, как указано в ответе здесь.

browser.ignoreSynchronization = true;

(код, который вызывает ошибку)

browser.ignoreSynchronization = false;