{"action":"created","issue":{"url":"https://api.github.com/repos/angular/angular.js/issues/14535","repository_url":"https://api.github.com/repos/angular/angular.js","labels_url":"https://api.github.com/repos/angular/angular.js/issues/14535/labels{/name}","comments_url":"https://api.github.com/repos/angular/angular.js/issues/14535/comments","events_url":"https://api.github.com/repos/angular/angular.js/issues/14535/events","html_url":"https://github.com/angular/angular.js/issues/14535","id":151661138,"number":14535,"title":"ngAnimate tests fail locally (locale?)","user":{"login":"mprobst","id":7208,"avatar_url":"https://avatars.githubusercontent.com/u/7208?v=3","gravatar_id":"","url":"https://api.github.com/users/mprobst","html_url":"https://github.com/mprobst","followers_url":"https://api.github.com/users/mprobst/followers","following_url":"https://api.github.com/users/mprobst/following{/other_user}","gists_url":"https://api.github.com/users/mprobst/gists{/gist_id}","starred_url":"https://api.github.com/users/mprobst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mprobst/subscriptions","organizations_url":"https://api.github.com/users/mprobst/orgs","repos_url":"https://api.github.com/users/mprobst/repos","events_url":"https://api.github.com/users/mprobst/events{/privacy}","received_events_url":"https://api.github.com/users/mprobst/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2016-04-28T14:46:17Z","updated_at":"2016-04-28T18:17:25Z","closed_at":null,"body":"**What is the current behavior?**\r\n\r\nOn a vanilla master, lots of ngAnimate tests fail. At least some of those seem to be caused by locale issues because they compare `toString` of a float value without accounting for locale (note the `5.5` vs `5,5` failures below).\r\n\r\n```\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active CSS staggering should apply a stagger based when an active ng-EVENT-stagger class with a transition-delay is detected FAILED\r\n  Expected [[object HTMLDivElement]] to have class 'ng-enter-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:678:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] not to have class 'ng-enter'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:683:29)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'ng-enter-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:678:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] not to have class 'ng-enter'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:683:29)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'ng-enter-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:678:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] not to have class 'ng-enter'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:683:29)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'ng-enter-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:678:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] not to have class 'ng-enter'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:683:29)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active CSS staggering should apply a stagger based when for all provided addClass/removeClass CSS classes FAILED\r\n  Expected [[object HTMLDivElement]] to have class 'red-add-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:742:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'green-add-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:743:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'blue-remove-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:744:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'red-add-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:742:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'green-add-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:743:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'blue-remove-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:744:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'red-add-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:742:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'green-add-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:743:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'blue-remove-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:744:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'red-add-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:742:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'green-add-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:743:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'blue-remove-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:744:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active CSS staggering should start on the highest stagger value if both transition and keyframe staggers are used together FAILED\r\n  Expected [[object HTMLDivElement]] to have class 'ng-enter-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:938:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'ng-enter-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:938:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'ng-enter-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:938:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected [[object HTMLDivElement]] to have class 'ng-enter-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:938:25)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active should avoid applying the same cache to an element a follow-up animation is run on the same element FAILED\r\n  Expected 'transition: all 0,5s linear; background: red;' not to contain 'transition'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:1597:41)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n  Expected 'transition-duration: 0,8s; transition-timing-function: linear; transition-property: all; background: blue;' not to contain 'transition'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:1607:41)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active structural animations should place a CSS transition block after the preparation function to block accidental style changes FAILED\r\n  Expected '-5s' to match '-1.5s'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:1764:51)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n      at window.inject.angular.mock.inject (angular.js/src/ngMock/angular-mocks.js:3037:42)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active structural animations should place a CSS transition block after the preparation function to block accidental style changes FAILED\r\n  Expected '-5s' to match '-1.5s'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:1764:51)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n      at window.inject.angular.mock.inject (angular.js/src/ngMock/angular-mocks.js:3037:42)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active structural animations should place a CSS transition block after the preparation function to block accidental style changes FAILED\r\n  Expected '-5s' to match '-1.5s'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:1764:51)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n      at window.inject.angular.mock.inject (angular.js/src/ngMock/angular-mocks.js:3037:42)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active structural animations should place a CSS transition block after the preparation function to block accidental style changes FAILED\r\n  Expected '-5s' to match '-1.5s'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:1764:51)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n      at window.inject.angular.mock.inject (angular.js/src/ngMock/angular-mocks.js:3037:42)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active structural animations should place a CSS transition block after the preparation function to block accidental style changes FAILED\r\n  Expected '-5s' to match '-1.5s'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:1764:51)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\n      at window.inject.angular.mock.inject (angular.js/src/ngMock/angular-mocks.js:3037:42)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active options [duration] should remove all inline keyframe delay styling when an animation completes if a custom duration was applied FAILED\r\n  Expected 'animation-delay: 5s;' to be falsy.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:2207:41)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active options [keyframeStyle] should apply the keyframe animation directly onto the element and animate accordingly FAILED\r\n  Expected 'animation: my_animation 5,5s;' to contain '5.5s'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:2657:33)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active options [keyframeStyle] should give priority to the provided delay value, but only update the duration style itself FAILED\r\n  Expected '5,5s' to equal '5.5s'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:2710:80)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active options [keyframeStyle] should be able to execute the animation if it is the only provided value FAILED\r\n  Expected '5,5s' to equal '5.5s'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:2727:80)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active options [from] and [to] should remove all inline transition styling when an animation completes FAILED\r\n  Expected 'transition: all 2,5s linear; background: red;' not to contain 'transition'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:2873:29)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active options [from] and [to] should retain existing styles when an inline styled animation completes FAILED\r\n  Expected '0,5' to equal '0.5'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:2898:42)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4) ngAnimate $animateCss when active options should round up long elapsedTime values to close off a CSS3 animation FAILED\r\n  Expected [[object HTMLDivElement]] not to have class 'ng-leave-active'.\r\n      at Object.<anonymous> (angular.js/test/ngAnimate/animateCssSpec.js:3158:29)\r\n      at Object.invoke (angular.js/src/auto/injector.js:867:19)\r\n      at Object.workFn (angular.js/src/ngMock/angular-mocks.js:3068:20)\r\nChrome 50.0.2661 (Mac OS X 10.11.4): Executed 5216 of 5216 (16 FAILED) (17.666 secs / 17.011 secs)\r\n```"},"comment":{"url":"https://api.github.com/repos/angular/angular.js/issues/comments/215516669","html_url":"https://github.com/angular/angular.js/issues/14535#issuecomment-215516669","issue_url":"https://api.github.com/repos/angular/angular.js/issues/14535","id":215516669,"user":{"login":"mprobst","id":7208,"avatar_url":"https://avatars.githubusercontent.com/u/7208?v=3","gravatar_id":"","url":"https://api.github.com/users/mprobst","html_url":"https://github.com/mprobst","followers_url":"https://api.github.com/users/mprobst/followers","following_url":"https://api.github.com/users/mprobst/following{/other_user}","gists_url":"https://api.github.com/users/mprobst/gists{/gist_id}","starred_url":"https://api.github.com/users/mprobst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mprobst/subscriptions","organizations_url":"https://api.github.com/users/mprobst/orgs","repos_url":"https://api.github.com/users/mprobst/repos","events_url":"https://api.github.com/users/mprobst/events{/privacy}","received_events_url":"https://api.github.com/users/mprobst/received_events","type":"User","site_admin":false},"created_at":"2016-04-28T18:17:25Z","updated_at":"2016-04-28T18:17:25Z","body":"I'm running on Mac OS. Maybe the issue is that on Linux, sub processes\ninherit the LOCALE environment? The test is clearly wrong - it should not\ncompare the toString of a double.\n"}}