Я разрабатываю автоматические тесты в Protractor довольно долгое время, и, как и многие из вас, я столкнулся с пробелами, которые можно пересечь только с помощью browser.sleep()
-bridge. Я не поклонник жесткого кодирования таких вещей, как это, но если это необходимо, я буду.
Те тесты, которые я разработал, привели меня к точке, где каждый browser.sleep(1000)
оказывает большое влияние на мое время выполнения. Тесты в настоящее время тестируют разрешения для разных учетных записей (точно 128), и это включает в себя вход и выход, проверяя, что каждая учетная запись имеет и не получила доступа.
Веб-сайт, который я тестирую, представляет собой чистое приложение AngularJS, которое, на мой взгляд, должно сделать browser.sleep()
устаревшим методом, поскольку существует метод browser.waitForAngular()
, который точно ждет, пока страница будет полностью загружена по сравнению с browser.sleep()
который ждет определенное количество времени, и если ваш сайт не загружен в течение этого времени (это происходит), у вас будет непоследовательный тест (никто не любит несоответствие).
Исследования привели меня к мысли, что browser.waitForAngular()
не учитывает анимацию и связанные с ней трудоемкие функции, поскольку они не связаны с AngularJS, но это не реализовано на нашем веб-сайте. Также waitForAngular()
в основном ждет $digest
, $http
и $timeout
.
То, о чем я спрашиваю, это то, что считается приемлемой потерей, поскольку Транспортер в целом хорош или есть что-то, что я здесь не замечаю?
TL; ДР:
Существуют ли решения, позволяющие нам не соглашаться на browser.sleep()
?
Источники: Протоколы тайм-аута трактатора, Timeout-spec.js(документы транспортира), Issue909, Issue279, Issue92, StackQuestion1