We have been using capybara-webkit quite a bit. Because of the async nature of JavaScript you sometimes have to use sleeps in your tests if the action is taking longer than the default Capybara 2 second timeout.
Lately I have had the need to sleep for up to 30 seconds for certain actions and I wanted a clean visual indicator of how much time was remaining. So I whipped up the following:
def sleep_for(sleep_time, message = 'Sleeping...')
sleep_time.times do |i|
print_message = "#{message} #{sleep_time - i} seconds remaining"
print print_message
sleep 1
print ["\b", " ", "\b"].map { |c| c * print_message.length }.join
end
end
I hope others find this useful!