From fec4ef38815340e8e5a6b65fd6c08f5c74e701d8 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Wed, 3 Apr 2013 14:36:57 -0700 Subject: [PATCH] feat(Scenario): autodisable animations when running e2e tests animations cause the dom to contain elements that have been removed from the model but are being animated out. we could teach the e2e runner to wait for animations but that would make all tests slower. it should be quite safe to just disable animations automatically when the app is running via the e2e test runner. this change disables only css animations. we should make additional change that disables js animations as well, but since we don't need this right now I'm punting on it. --- src/bootstrap/bootstrap-prettify.js | 5 ++++- src/ngScenario/Application.js | 28 +++++++++++++++++++++++----- test/ngScenario/ApplicationSpec.js | 11 ++++++++++- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/bootstrap/bootstrap-prettify.js b/src/bootstrap/bootstrap-prettify.js index 026587a27a58..a9e61d4fdeb5 100644 --- a/src/bootstrap/bootstrap-prettify.js +++ b/src/bootstrap/bootstrap-prettify.js @@ -179,7 +179,8 @@ directive.ngEvalJavascript = ['getEmbeddedTemplate', function(getEmbeddedTemplat }]; -directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', function($templateCache, $browser, docsRootScope, $location) { +directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', '$sniffer', + function($templateCache, $browser, docsRootScope, $location, $sniffer) { return { terminal: true, link: function(scope, element, attrs) { @@ -189,6 +190,7 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', $provide.value('$templateCache', $templateCache); $provide.value('$anchorScroll', angular.noop); $provide.value('$browser', $browser); + $provide.value('$sniffer', $sniffer); $provide.provider('$location', function() { this.$get = ['$rootScope', function($rootScope) { docsRootScope.$on('$locationChangeSuccess', function(event, oldUrl, newUrl) { @@ -223,6 +225,7 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', event.preventDefault(); } }); + angular.bootstrap(element, modules); } }; diff --git a/src/ngScenario/Application.js b/src/ngScenario/Application.js index 2ca6c8fdf555..f7ce28cbedbf 100644 --- a/src/ngScenario/Application.js +++ b/src/ngScenario/Application.js @@ -49,7 +49,7 @@ angular.scenario.Application.prototype.getWindow_ = function() { */ angular.scenario.Application.prototype.navigateTo = function(url, loadFn, errorFn) { var self = this; - var frame = this.getFrame_(); + var frame = self.getFrame_(); //TODO(esprehn): Refactor to use rethrow() errorFn = errorFn || function(e) { throw e; }; if (url === 'about:blank') { @@ -57,21 +57,39 @@ angular.scenario.Application.prototype.navigateTo = function(url, loadFn, errorF } else if (url.charAt(0) === '#') { url = frame.attr('src').split('#')[0] + url; frame.attr('src', url); - this.executeAction(loadFn); + self.executeAction(loadFn); } else { frame.remove(); - this.context.find('#test-frames').append('