Как отключить анимацию с помощью Protractor в приложении AngularJS?
Как предложено на странице Protractor, я попытался добавить следующее в мой конфигурационный файл:
onPrepare: function() {
var disableNgAnimate = function() {
angular.module('disableNgAnimate', []).run(['$animate', function($animate) {
$animate.enabled(false);
}]);
};
browser.addMockModule('disableNgAnimate', disableNgAnimate);
browser.getCapabilities().then(function(caps) {
browser.params.browser = caps.get('browserName');
});
}
И это не выключило анимацию.
Я имею дело с веб-сайтом, который сильно анимирован, и это сильно портит мои тесты..
PS Я использую определение TypeScript для транспортира, это имеет значение?
1 ответ
Вы отключили только нг-анимации.
Для меня гораздо лучше сделать анимацию длительностью 1 мс, а не выключать ее. (из-за некоторых обработчиков анимационных событий в коде)
Попробуйте код ниже, это ускорит CSS анимацию, чтобы она могла решить вашу проблему
onPrepare: function () {
// disable animations when testing
var disableAnimation = function () {
angular.module('disableAnimation', []).run(function ($animate) {
// disable css animations
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = '* {' +
'-webkit-transition-duration: 1ms !important;' +
'-moz-transition-duration: 1ms !important;' +
'-o-transition-duration: 1ms !important;' +
'-ms-transition-duration: 1ms !important;' +
'transition-duration: 1ms !important;' +
'-webkit-animation-duration: 1ms !important;' +
'-moz-animation-duration: 1ms !important;' +
'-o-animation-duration: 1ms !important;' +
'-ms-animation-duration: 1ms !important;' +
'animation-duration: 1ms !important;' +
'}';
document.getElementsByTagName('head')[0].appendChild(style);
// disable angular ng animations
$animate.enabled(false);
});
};
browser.addMockModule('disableAnimation', disableAnimation);
}