From 29f169f7f02923e7b44fcadf6a0a98c41a9cc909 Mon Sep 17 00:00:00 2001 From: Chad Pytel Date: Fri, 14 Apr 2017 19:21:02 -0400 Subject: [PATCH] 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 a1c63cb01d91e4ab891250c8e8c4b88d6f075efe causing #1236. --- Gemfile | 1 + Gemfile.lock | 10 ++++++++++ spec/features/log_in_spec.rb | 16 ++++++++++++++++ spec/rails_helper.rb | 6 ++++++ 4 files changed, 33 insertions(+) create mode 100644 spec/features/log_in_spec.rb diff --git a/Gemfile b/Gemfile index 3f80e92e10..d1a1e32349 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 2618f47f2f..430e204404 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 0000000000..4a634f6b8b --- /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 faac96982d..536c5a7744 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|