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

stop/pause headless Selenium testing with Capybara
n350071๐ฏ๐ต ใป Sep 10 '19 ใป 1 min read
#capybara #rspec #rails
Usage
๐จ prepare
๐ look around your site
inside of HTML

Narrow down scope with `within` in Capybara Rails testing
n350071๐ฏ๐ต ใป Sep 18 '19 ใป 1 min read
#rails
browser manipulation
โ assert

capybara find.text method ignore newline (convert to a space)
n350071๐ฏ๐ต ใป Sep 10 '19 ใป 1 min read
#capybara #rspec #rails

have_selector is good for waiting test in Capybara
n350071๐ฏ๐ต ใป Sep 18 '19 ใป 1 min read
#capybara #rspec #rails
# 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
๐ form

[Capybara] find('input').set will have not done!
n350071๐ฏ๐ต ใป Dec 17 '19 ใป 1 min read
#capybara #rspec #rails
# 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()")
๐งโโ๏ธ Manipulate

Run Javascript by Capybara feature test
n350071๐ฏ๐ต ใป Sep 10 '19 ใป 1 min read
#capybara #rspec #rails
# Change CSS/Style in Capybara page.execute_script("$('selector').css('display','block')");
๐ 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)