Существуют ли какие-либо проблемы с использованием Angular Material with Protractor для тестирования E2E?
Я испытываю прерывистые таймауты, которые обвиняются в часто задаваемых вопросах Protractor по использованию $timeout для опроса (AKA: waitForAngular timeout). Интересно, не так ли в случае его опроса. Для моей команды это больше освещает, поскольку мы полагаемся на компоненты Angular Material. Они сильно влияют на анимационные взаимодействия с постоянным использованием $timeout (func, 0).
Этот вопрос похож на вопрос № 29966301, но он фокусируется на возможной проблеме между Angular Материалом и транспортиром.
Мне очень интересно знать, как люди, которые в значительной степени используют Angular Material and Protractor, справляются с такими проблемами, если они вообще сталкиваются с ними.
Интересным моментом является то, что я не видел ни в материалах Gractub, ни в портах, ни в w500 > каких-либо использования возможностей друг друга. Поскольку оба из них являются Angular библиотеками, входящими в ту же группу в Google, @juliemr и Protractor Gang могут разговаривать с @ThomasBurleson и группой Material, чтобы придумать исчерпывающие варианты использования и тесты E2E для Angular Материал, используя Protractor to устраните эти проблемы.
Ответы
Ответ 1
Хорошо транспортир предназначен для тестирования angular, поэтому, если вы используете функцию waitForAngular и ваш сайт angular, вы не должны использовать это, вы должны сделать следующее до каждого теста:
browser.ignoreSynchronization = false;
и вы можете сделать это, чтобы ускорить ваши тесты и, вероятно, помочь устранить проблему тайм-аута, в файле protractor-conf.js добавьте этот код:
...
onPrepare: function() {
var disableNgAnimate = function () {
angular.module('disableNgAnimate', []).run(function($animate){
$animate.enabled(false);
});
},
browser.addMockModule('disableNgAnimate', disableNgAnimate);
},
...
и, возможно, вам стоит проверить этот видео.
Ответ 2
Я бы добавил, что отключить ngAnimate может быть недостаточно. Вам также может потребоваться отключить Angular анимацию материала CSS, введя CSS внутри опции protractor onPrepare. (Как отключить анимацию в транспортнике для приложения Angular js).