Как отключить анимацию с помощью 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);
}
Другие вопросы по тегам