DEV Community

n350071🇯🇵
n350071🇯🇵

Posted on • Edited on

4

My Capybara note

Overview

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.

SetUp

Usage

🔨 prepare

👁 look around your site

inside of HTML

browser manipulation

✅ assert





# get current path
current_path

# spec/rails_helpers/feature_helper.rb
module FeatureHelpers
  def current_path_with_params
    uri = URI.parse(current_url)
    "#{uri.path}?#{uri.query}"
  end
end
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
page.execute_script("$('form#your-form').submit()")
Enter fullscreen mode Exit fullscreen mode

🧙‍♂️ Manipulate

# Change CSS/Style in Capybara
page.execute_script("$('selector').css('display','block')");
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.

The AI era means ongoing career reinvention. Join DEV.

It takes one minute and is worth it for your career.

Get started

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs