summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChad Pytel <chad@thoughtbot.com>2017-04-14 19:21:02 -0400
committerEugen <eugen@zeonfederated.com>2017-04-15 01:21:02 +0200
commit92cd207c5083e60074e0ce123bb5b848a58e7417 (patch)
tree503e0e5222579ebb5d5ddfd1c6e617f6d03974b0
parentf5cd1383231af6922dbab4f54b7d29eacfec9d9e (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--Gemfile1
-rw-r--r--Gemfile.lock10
-rw-r--r--spec/features/log_in_spec.rb16
-rw-r--r--spec/rails_helper.rb6
4 files changed, 33 insertions, 0 deletions
diff --git a/Gemfile b/Gemfile
index 3f80e92e10e..d1a1e32349d 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 2618f47f2fd..430e2044040 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 00000000000..4a634f6b8b8
--- /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 faac96982d0..536c5a7744a 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|