DEV Community 👩‍💻👨‍💻


Posted on • Updated on

My Capybara note


Capybara is good for Rails E2E (Feature) testing. It simulates user actions on a browser, like find a button and click it, wait for the next page. You can choose Selenium Driver or others as web driver.



🔨 prepare

👁 look around your site

inside of HTML

browser manipulation

✅ assert

# get current path

# spec/rails_helpers/feature_helper.rb
module FeatureHelpers
  def current_path_with_params
    uri = URI.parse(current_url)
Enter fullscreen mode Exit fullscreen mode

📝 form

# input type=text
fill_in 'nav-search', with: 'n350071 capybara'

# select box
select 'Most Views', from: 'dashhboard_sort'

# submit
Enter fullscreen mode Exit fullscreen mode

🧙‍♂️ Manipulate

# Change CSS/Style in Capybara
Enter fullscreen mode Exit fullscreen mode

🎁 Opinion

  • We should use what users will see, instead of the source code of HTML.
  • The HTML is an essential factor to test.
    • We should align the HTML tag, CSS for testing. If it's different from a similar page, the testing is tough.
    • We should use the correct name in HTML to support easy testing.
  • Using find('label[for="model_attributes"]' is better than XPath, because this way is simulate the users way.

Top comments (0)

We want your help! Become a Tag Moderator.
Fill out this survey and help us moderate our community by becoming a tag moderator here at DEV.