У меня есть ручное загрузочное угловое приложение с большим количеством испытаний на проталкивание. Примерно в июне 2016 года тесты работали, но больше не работают. С тех пор произошли следующие изменения:Испытания преградителя перестали работать после обновления до Углового 2
- Угловые 2 было выпущено
- Войти часть приложения была переписана. Первоначально страница входа в систему не использовала Angular. Теперь он использует Angular 2. Остальная часть приложения по-прежнему является угловой 1.
Если я не взаимодействую с приложением вне входа в систему и запускаю один тест (например, «ожидать (true) .toBe (true) "), затем все выполняется до завершения, без генерируемых сообщений об ошибках.
Если мой тест автоматизации делает взаимодействие с приложением, то происходит следующее:
- Если мой conf.js файл содержит «useAllAngular2AppRoots: правда», я получаю сообщение об ошибке: «истекло время ожидания транспортир для синхронизации со страницей через 11 секунд. См. https://github.com/angular/protractor/blob/master/docs/faq.md «
- Если мой файл conf.js не содержит« useAllAngular2AppRoots: true », я получаю сообщение об ошибке:« Ошибка при ожидании синхронизации Protractor со страницей: » Не удалось найти проверяемость для элемента. "
В любом случае автоматизация проходит через логин и в часть приложения Angular1.
Вопросы у меня есть:
- Является ли этот вид приложения (Angular2 страницу входа, все остальное Angular1) можно проверить с транспортир?
- Следует использовать «useAllAngular2AppRoots: true»?
- Сообщения об ошибках, которые я получаю, похоже, не указывают на конкретную область моего тестового кода для исправления. Как я могу определить, в чем проблема?
EDIT 27 октября 2016 После первого ответа на этот вопрос получил, я попытался придавить точно, что не удается, и где.
Я обнаружил, что:
- установка RootElement в моем файле conf.js не имел никакого эффекта. Независимо от того, оставил ли я его полностью, специально настроил его на «тело» или установил его в случайную бессмысленную строку, я получил то же поведение.
- Следуя приведенным предложениям, я все еще получал сообщение об ошибке «AfterAll Failed: Ошибка при ожидании синхронизации Protractor со страницей:« Не удалось найти тестовую возможность для элемента ».« Обратите внимание, что я не пытался делать какие-либо тесты в моей функции AfterAll, просто нажав кнопку «Выход»
- , если я установил «browser.ignoreSynchronization = true» в функции beforeAll моего теста, я мог бы совершать вызовы, которые взаимодействовали с приложением, например, щелчок по элементам экрана. Без этой линии никакой вызов не имел никакого эффекта. Однако я уверен, что это не то, что я должен делать, или что мне нужно.
- даже с 'браузером.ignoreSynchronization = true ', я все равно получаю сообщения об ошибках, когда пытаюсь сделать вызовы с помощью Angular1, например, пытаться сопоставить элемент с by.repeater(). Это произойдет в той части приложения, которая все еще записана в Angular 1, и поэтому использует ng-repeat, а не ngFor.
Предоставляет ли эта дополнительная информация какое-либо дальнейшее понимание того, что может произойти, и что еще я могу попробовать?
Если решение от Urish сработало для вас, отметьте его как ответ. – santon