When I run cucumber scenarios under PhantomJS I get
Capybara::ElementNotFound: Unable to find css ".given_class"
exceptions in random places
it looks like driver does not wait for element appearance
I'm using: Ruby 2.0 Cucumber 1.3.6 Capybara 2.1.0 Selenium-webdriver 2.35.1 PhantomJS 1.9.1
Capybara, particularly with PhantomJS will load a page really quickly, and perform checks for elements. As such, some elements may not have loaded and tests fail. By default capybara has a wait time of 2, which you can increase. Maybe try:
like they suggest in the docs here.
You can also add a Sleep(1) in your step definition, but that is considered bad form.
If that doesn't do it for you, try specifying where on the page the element should be found.
For example:
Check the Capybara.automatic_reload parameter. By default it is true and capybara floods server with requests every 50 ms, if it does not see what it wants :).