Bird
Raised Fist0
Ruby on Railsframework~5 mins

System tests with Capybara in Ruby on Rails - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of system tests in Rails using Capybara?
System tests check how the whole application works from the user's point of view by simulating browser actions like clicking links and filling forms.
Click to reveal answer
beginner
How do you tell Capybara to visit a page in a system test?
Use the visit method with the page path, for example: visit root_path.
Click to reveal answer
beginner
Which Capybara method simulates clicking a button or link?
The click_on method simulates clicking a button or link by its text or id.
Click to reveal answer
beginner
How do you fill in a form field using Capybara in a system test?
Use the fill_in method with the field label or id and the value, like fill_in 'Email', with: 'user@example.com'.
Click to reveal answer
beginner
What does the assert_text method do in a Capybara system test?
It checks that the given text appears somewhere on the current page, confirming expected content is visible to the user.
Click to reveal answer
Which method in Capybara is used to simulate a user visiting a page?
Aassert_text
Bclick_on
Cfill_in
Dvisit
How do you simulate clicking a button labeled 'Submit' in Capybara?
Aclick_on 'Submit'
Bclick_button 'Submit'
Cfill_in 'Submit'
Dvisit 'Submit'
Which Capybara method fills in a text field in a form?
Afill_in
Bclick_on
Cvisit
Dassert_text
What does assert_text 'Welcome' check in a system test?
AThat a button named 'Welcome' exists
BThat the page URL is 'Welcome'
CThat the page contains the text 'Welcome'
DThat the form field 'Welcome' is filled
In Rails system tests, which driver does Capybara use by default for JavaScript support?
ASelenium
BRack::Test
CPoltergeist
DWebkit
Explain how you would write a simple system test with Capybara to check that a user can visit the homepage and see a welcome message.
Think about what a user does first and what they expect to see.
You got /3 concepts.
    Describe the steps Capybara takes to simulate a user filling out and submitting a form in a system test.
    Imagine you are the user typing and clicking.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of system tests with Capybara in a Rails application?
      easy
      A. To test individual Ruby methods for correctness
      B. To measure server response time under load
      C. To check database schema migrations
      D. To simulate user actions in a real browser and check app behavior

      Solution

      1. Step 1: Understand system tests role

        System tests simulate how a real user interacts with the app through a browser.
      2. Step 2: Compare with other test types

        Unlike unit tests or performance tests, system tests focus on full app behavior with UI.
      3. Final Answer:

        To simulate user actions in a real browser and check app behavior -> Option D
      4. Quick Check:

        System tests = simulate user in browser [OK]
      Hint: System tests mimic real user clicks and typing [OK]
      Common Mistakes:
      • Confusing system tests with unit tests
      • Thinking system tests check only backend code
      • Assuming system tests measure performance
      2. Which of the following is the correct way to visit the homepage in a Capybara system test?
      easy
      A. navigate_to root_url
      B. go_to '/'
      C. visit root_path
      D. open_page '/'

      Solution

      1. Step 1: Recall Capybara visit syntax

        Capybara uses the method visit with a path or URL to open a page.
      2. Step 2: Match correct method and argument

        root_path is the Rails helper for homepage path, so visit root_path is correct.
      3. Final Answer:

        visit root_path -> Option C
      4. Quick Check:

        Capybara visit + path helper = visit root_path [OK]
      Hint: Use 'visit' with Rails path helpers to open pages [OK]
      Common Mistakes:
      • Using non-existent methods like go_to or open_page
      • Confusing root_path with root_url in system tests
      • Forgetting to use visit before path
      3. Given this system test code snippet, what will be the output on the page?
      visit root_path
      fill_in 'Email', with: 'user@example.com'
      fill_in 'Password', with: 'secret'
      click_button 'Log in'
      expect(page).to have_content('Welcome, user@example.com')
      medium
      A. Test passes if 'Welcome, user@example.com' appears after login
      B. Test fails because 'fill_in' cannot find fields
      C. Test raises error due to missing 'visit' method
      D. Test passes without checking page content

      Solution

      1. Step 1: Analyze test steps

        The test visits the homepage, fills in login form fields, clicks login, then checks for welcome message.
      2. Step 2: Understand Capybara behavior

        If the login works and page shows the welcome text, have_content will pass and test passes.
      3. Final Answer:

        Test passes if 'Welcome, user@example.com' appears after login -> Option A
      4. Quick Check:

        fill_in + click_button + have_content = success check [OK]
      Hint: Check page content after actions to confirm success [OK]
      Common Mistakes:
      • Assuming fill_in fails without checking form existence
      • Forgetting to call visit before actions
      • Ignoring the expect(page).to have_content assertion
      4. You wrote this system test but it fails with "Capybara::ElementNotFound" error:
      visit root_path
      fill_in 'Username', with: 'testuser'
      click_button 'Submit'

      What is the most likely cause?
      medium
      A. Capybara does not support fill_in method
      B. The form does not have a field labeled 'Username'
      C. The button 'Submit' is missing from the page
      D. You forgot to call visit before fill_in

      Solution

      1. Step 1: Understand Capybara::ElementNotFound meaning

        This error means Capybara could not find the form field or button with given label.
      2. Step 2: Check test code and error cause

        Since visit is called, the likely cause is the field labeled 'Username' does not exist on the page.
      3. Final Answer:

        The form does not have a field labeled 'Username' -> Option B
      4. Quick Check:

        ElementNotFound = missing field or button [OK]
      Hint: Check labels exactly match form fields and buttons [OK]
      Common Mistakes:
      • Assuming visit was not called when it was
      • Thinking Capybara lacks fill_in support
      • Ignoring exact label spelling and case
      5. You want to write a system test that logs in a user, visits their profile page, and verifies their username is shown. Which sequence correctly uses Capybara commands?
      hard
      A. visit login_path; fill_in 'Email', with: user.email; fill_in 'Password', with: user.password; click_button 'Log in'; visit profile_path(user); expect(page).to have_content(user.username)
      B. fill_in 'Email', with: user.email; click_button 'Log in'; visit profile_path(user); expect(page).to have_content(user.username)
      C. visit profile_path(user); fill_in 'Email', with: user.email; click_button 'Log in'; expect(page).to have_content(user.username)
      D. visit login_path; click_button 'Log in'; fill_in 'Email', with: user.email; fill_in 'Password', with: user.password; expect(page).to have_content(user.username)

      Solution

      1. Step 1: Identify correct login flow

        You must visit the login page first, then fill in email and password, then click login.
      2. Step 2: Visit profile after login and check content

        After successful login, visit the profile page and check the username is displayed.
      3. Final Answer:

        visit login_path; fill_in 'Email', with: user.email; fill_in 'Password', with: user.password; click_button 'Log in'; visit profile_path(user); expect(page).to have_content(user.username) -> Option A
      4. Quick Check:

        Login then visit profile then check content [OK]
      Hint: Always visit pages before interacting or checking content [OK]
      Common Mistakes:
      • Trying to fill_in before visiting login page
      • Visiting profile before logging in
      • Clicking buttons before filling required fields
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard