diff options
author | Chad Pytel <chad@thoughtbot.com> | 2017-04-14 19:21:02 -0400 |
---|---|---|
committer | Eugen <eugen@zeonfederated.com> | 2017-04-15 01:21:02 +0200 |
commit | 92cd207c5083e60074e0ce123bb5b848a58e7417 (patch) | |
tree | 503e0e5222579ebb5d5ddfd1c6e617f6d03974b0 | |
parent | f5cd1383231af6922dbab4f54b7d29eacfec9d9e (diff) |
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 624a9a7136159d460228a0c2f5df18a9ead3b7f2 causing #1236.
-rw-r--r-- | Gemfile | 1 | ||||
-rw-r--r-- | Gemfile.lock | 10 | ||||
-rw-r--r-- | spec/features/log_in_spec.rb | 16 | ||||
-rw-r--r-- | spec/rails_helper.rb | 6 |
4 files changed, 33 insertions, 0 deletions
diff --git a/Gemfile b/Gemfile index 3f80e92e1..d1a1e3234 100644 --- a/Gemfile +++ b/Gemfile @@ -70,6 +70,7 @@ group :development, :test do end group :test do + gem 'capybara' gem 'faker' gem 'rails-controller-testing' gem 'rspec-sidekiq' diff --git a/Gemfile.lock b/Gemfile.lock index 2618f47f2..430e20440 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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 diff --git a/spec/features/log_in_spec.rb b/spec/features/log_in_spec.rb new file mode 100644 index 000000000..4a634f6b8 --- /dev/null +++ b/spec/features/log_in_spec.rb @@ -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 diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index faac96982..536c5a774 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -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| |