0
0
Ruby on Railsframework~20 mins

System tests with Capybara in Ruby on Rails - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Capybara System Test Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What does this Capybara test check for?
Given the following system test code, what is the expected behavior when it runs?
Ruby on Rails
require "application_system_test_case"

class PostsTest < ApplicationSystemTestCase
  test "visiting the index" do
    visit posts_url
    assert_selector "h1", text: "Posts"
  end
end
AIt visits the posts index page and checks that an <h1> element with text 'Posts' is present.
BIt visits the posts index page and checks that the page title is 'Posts'.
CIt visits the posts show page and checks for a heading with 'Posts'.
DIt visits the posts index page and checks that a link with text 'Posts' exists.
Attempts:
2 left
💡 Hint
Look at the visit URL and the assert_selector method.
📝 Syntax
intermediate
2:00remaining
Identify the syntax error in this Capybara test snippet
Which option correctly fixes the syntax error in this test code?
Ruby on Rails
test "creating a post" do
  visit new_post_url
  fill_in "Title", with: "My Post"
  click_button "Create Post"
  assert_text "Post was successfully created"
end
AWrap the test block inside a 'class PostsTest < ApplicationSystemTestCase' and add 'end' at the end.
BAdd 'def test_creating_a_post' before the test block and 'end' after it.
CAdd 'test' keyword before the block and ensure the block is inside a test class.
DNo syntax error; the code is correct as is.
Attempts:
2 left
💡 Hint
System tests must be inside a test class inheriting from ApplicationSystemTestCase.
state_output
advanced
2:00remaining
What is the value of 'post_count' after this test runs?
Consider this system test code snippet. What will be the value of 'post_count' after the test completes?
Ruby on Rails
test "creating a post increases count" do
  post_count = Post.count
  visit new_post_url
  fill_in "Title", with: "New Post"
  click_button "Create Post"
  assert_text "Post was successfully created"
  post_count = Post.count
end
Apost_count will be nil because it is not returned from the test.
Bpost_count will be the original count because system tests run in a transaction rollback.
Cpost_count will be zero because the database is reset before each test.
Dpost_count will be original count + 1 because a new post was created.
Attempts:
2 left
💡 Hint
Think about when the count is checked and if the post creation was successful.
🔧 Debug
advanced
2:00remaining
Why does this Capybara test fail with a 'Capybara::ElementNotFound' error?
Given this test code, why does it raise 'Capybara::ElementNotFound'?
Ruby on Rails
test "deleting a post" do
  visit posts_url
  click_on "Delete", match: :first
  assert_text "Post was successfully destroyed"
end
AThe test does not wait for the page to load before clicking 'Delete'.
BThe 'click_on' method requires an exact match and 'match: :first' is invalid.
CThere is no 'Delete' link or button on the posts index page.
DThe 'assert_text' is called before the deletion completes.
Attempts:
2 left
💡 Hint
Check if the page actually has a 'Delete' link or button visible.
🧠 Conceptual
expert
2:00remaining
Which statement about Capybara's 'visit' method in system tests is true?
Select the correct statement about how Capybara's 'visit' method works in Rails system tests.
A'visit' only works with local file paths, not URLs.
B'visit' opens the URL in a real browser controlled by Capybara's driver during the test run.
C'visit' simulates a server-side redirect without opening a browser window.
D'visit' immediately executes JavaScript on the page before loading.
Attempts:
2 left
💡 Hint
Think about how Capybara interacts with the browser during system tests.