Introduce capybara and first feature spec (#1801)

This commit introduces Capybara and the first feature spec.

I focused on coverage for log in for the first feature spec because that would
have prevented 624a9a7136 causing #1236.
shrike
Chad Pytel 2017-04-14 19:21:02 -04:00 committed by Eugen
parent f5cd138323
commit 92cd207c50
4 changed files with 33 additions and 0 deletions

View File

@ -70,6 +70,7 @@ group :development, :test do
end
group :test do
gem 'capybara'
gem 'faker'
gem 'rails-controller-testing'
gem 'rspec-sidekiq'

View File

@ -99,6 +99,13 @@ GEM
sshkit (~> 1.3)
capistrano-yarn (2.0.2)
capistrano (~> 3.0)
capybara (2.13.0)
addressable
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
chunky_png (1.3.8)
climate_control (0.1.0)
cocaine (0.5.8)
@ -446,6 +453,8 @@ GEM
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)
xpath (2.0.0)
nokogiri (~> 1.3)
PLATFORMS
ruby
@ -465,6 +474,7 @@ DEPENDENCIES
capistrano-rails
capistrano-rbenv
capistrano-yarn
capybara
coffee-rails (~> 4.1.0)
devise
devise-two-factor

View File

@ -0,0 +1,16 @@
require "rails_helper"
feature "Log in" do
scenario "A valid email and password user is able to log in" do
email = "test@example.com"
password = "password"
Fabricate(:user, email: email, password: password)
visit new_user_session_path
fill_in "user_email", with: email
fill_in "user_password", with: password
click_on "Log in"
expect(page).to have_css "div.app-holder[data-react-class=Mastodon]"
end
end

View File

@ -7,6 +7,7 @@ require 'spec_helper'
require 'rspec/rails'
require 'webmock/rspec'
require 'paperclip/matchers'
require 'capybara/rspec'
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
@ -24,6 +25,11 @@ RSpec.configure do |config|
config.include Devise::Test::ControllerHelpers, type: :controller
config.include Devise::TestHelpers, type: :view
config.include Paperclip::Shoulda::Matchers
config.before :each, type: :feature do
https = ENV['LOCAL_HTTPS'] == 'true'
Capybara.app_host = "http#{https ? 's' : ''}://#{ENV.fetch('LOCAL_DOMAIN')}"
end
end
RSpec::Sidekiq.configure do |config|