Я разрабатываю автоматические тесты в Protractor довольно долгое время, и, как и многие из вас, я столкнулся с пробелами, которые можно пересечь только с помощью моста browser.sleep()
. Я не поклонник жесткого кодирования таких вещей, как это, но если это необходимо, я буду.Таймауты протранслятора
Те тесты, которые я разработал, привели меня к точке, где каждый browser.sleep(1000)
оказывает большое влияние на мою среду выполнения. Тесты в настоящее время тестируют разрешения для разных учетных записей (точно 128), и это включает в себя вход и выход во время проверки того, что каждая учетная запись имеет и не получила доступа.
На сайте я тестирование является чисто AngularJS приложение, которое, в моих глазах, следует сделать browser.sleep()
устаревший метод, так как существует browser.waitForAngular()
метод, который точно ждет, пока страница полностью загружена по сравнению с browser.sleep()
, который ждет определенное количество времени и если ваш сайт не загружен в течение этого времени (это случается), у вас будет непоследовательный тест (никто не любит несогласованность).
Исследования привели меня к мысли, что browser.waitForAngular()
не учитывает анимацию и связанные с ней трудоемкие функции, поскольку они не связаны с AngularJS, но это не реализовано на нашем веб-сайте. Также waitForAngular()
в основном ждет $digest
, $http
, и $timeout
.
То, что я прошу, это что-то, что считается приемлемой потерей, поскольку Транспортер велик в целом или есть что-то, что я здесь не замечаю?
TL; Есть ли решения, позволяющие нам не устанавливать на browser.sleep()
?
Источники: Protractor Timeout Docs, Timeout-spec.js (protractor docs), Issue909, Issue279, Issue92, StackQuestion1
У меня возникали те же прерывистые таймауты, которые виноваты в FAQ по использованию $ timeout для опроса. Я блуждаю, если его неудача также в случае его не опроса. Для моей команды это больше освещает, поскольку мы полагаемся на компоненты Angular Material. Они сильно влияют на анимационные взаимодействия с интенсивным использованием $ timeout (func, 0). –