An introduction to using Capybara with RSpec to test web pages in a Rails app.
This episode covers:
- Configuring Capybara with RSpec
- Visiting pages
- Expecting content to be present
- Clicking links
- Testing the current URL
If you’re interested in learning more about Capybara, the project’s README is great. I’ll also be covering it more in future episodes.
Key code from the episode:
spec/rails_helper.rb:
# Add this line below require 'rspec/rails' require 'capybara/rspec' spec/features/home_spec.rb:
require 'rails_helper' RSpec.describe 'Home features' do it 'displays the name of the app and links to the About page' do visit('/home') expect(page).to have_content('Game Tracker') click_link('About') expect(current_path).to eql('/about') expect(page).to have_content('About') end end config/routes.rb:
Rails.application.routes.draw do get('home' => 'home#index') get('about' => 'about#index') get('status' => 'status#index') get('consoles' => 'consoles#index') end app/controllers/home_controller.rb:
class HomeController < ApplicationController def index end end app/views/home/index.html.erb:
<h1>Game Tracker</h1> <%= link_to('About', about_path) %> app/controllers/about_controller.rb:
class AboutController < ApplicationController def index end end app/views/about/index.html.erb:
<h1>About</h1> Software used:
- Ruby 2.4.2
- RSpec 3.6.1
- Capybara 2.15.4
- Rails 5.1.4
- Mac OS
- iTerm 2
- Vim
- Tmux