jok*_*lan 10 css animation ruby-on-rails capybara
我的页面上有很多动画,这实际上减慢了我在水豚的测试速度,因为水豚经常需要等到一个元素被动画化,因为它开始隐藏.
我为所有基于jQuery的动画找到了这个解决方案:
<%= javascript_tag '$.fx.off = true;' if Rails.env.test? %>
但是我使用twitter bootstrap,而bootstrap中的大多数动画都是由CSS 3(使用javascript后备)制作的.所以我的问题是,有没有办法在测试中转换CSS 3过渡和动画?
vby*_*yno 23
从Capybara v3.2.0开始:
Capybara.disable_animation = true
Run Code Online (Sandbox Code Playgroud)
Mil*_*ern 11
您可以尝试创建一些转换重置并将其应用于特定元素.
.reset-transition {
-webkit-transition: none;
-moz-transition: none;
-ms-transition: none;
-o-transition: none;
transition: none;
}
Run Code Online (Sandbox Code Playgroud)
您也可以将它应用于ALL并在Bootstrap之后放置此CSS
* {
-webkit-transition: none;
-moz-transition: none;
-ms-transition: none;
-o-transition: none;
transition: none;
}
Run Code Online (Sandbox Code Playgroud)
你可以使它更具体
div, a, span, footer, header {
-webkit-transition: none;
-moz-transition: none;
-ms-transition: none;
-o-transition: none;
transition: none;
}
Run Code Online (Sandbox Code Playgroud)
# env.rb or spec_helper.rb
Capybara.register_driver :poltergeist do |app|
opts = {
extensions: ["#{Rails.root}/features/support/phantomjs/disable_animations.js"] # or wherever
}
Capybara::Poltergeist::Driver.new(app, opts)
end
Capybara.javascript_driver = :poltergeist
Run Code Online (Sandbox Code Playgroud)
```
// disable_animations.js
var disableAnimationStyles = '-webkit-transition: none !important;' +
'-moz-transition: none !important;' +
'-ms-transition: none !important;' +
'-o-transition: none !important;' +
'transition: none !important;'
window.onload = function() {
var animationStyles = document.createElement('style');
animationStyles.type = 'text/css';
animationStyles.innerHTML = '* {' + disableAnimationStyles + '}';
document.head.appendChild(animationStyles);
};
Run Code Online (Sandbox Code Playgroud)
或者只是时间
var disableAnimationStyles = '-webkit-transition-duration: .0s !important;' +
'-o-transition-duration: .0s !important;' +
'transition-duration: .0s !important;';
Run Code Online (Sandbox Code Playgroud)