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

Использование теста-проталкивателя с загрузочным устройством AngularJS

Я хочу, чтобы иметь возможность протестировать мое приложение Angular с помощью Protractor. Поскольку я использую RequireJS, я не могу использовать директиву ng-app в моей DOM, и поэтому я загружаю Angular вручную с помощью angular.bootstrap.

Транспортир печатает вывод ошибки, как показано ниже:

Ошибка: Angular не найден на странице http://localhost:1428/: повторные попытки поиска Angular превышены

Тогда я понял, что документация Protractor имеет предупреждение:

Транспортир не работает из коробки с приложениями, которые загружаются вручную, используя angular.bootstrap. Вы должны использовать директиву ng-app.

Ну, есть ли какое-либо обходное решение для запуска тестов Protractor с помощью вручную загруженного приложения Angular или я должен начать изучать альтернативные варианты тестирования?

4b9b3361

Ответ 1

перейдите к описанию транспортира и добавьте это

onPrepare: function() {
// implicit and page load timeouts
  browser.manage().timeouts().pageLoadTimeout(40000);
  browser.manage().timeouts().implicitlyWait(25000);

  // for non-angular page
  browser.ignoreSynchronization = true;

  // sign in before all tests

}

Это сработало для меня

мой полный файл конфигурации выглядит так:

// conf.js
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['../**/*.e2e.js'],
multiCapabilities: [{
browserName: 'firefox'
}],

onPrepare: function() {
// implicit and page load timeouts
browser.manage().timeouts().pageLoadTimeout(40000);
browser.manage().timeouts().implicitlyWait(25000);

// for non-angular page
browser.ignoreSynchronization = true;

// sign in before all tests

 }
}

Что на самом деле происходит, так это то, что вы просите у транспортира ждать некоторое время и проигнорировать document.ready(), чтобы дать вам время на загрузку angular вручную.