<NME> spec_helper.rb
<BEF> require 'simplecov'
SimpleCov.start if ENV["COVERAGE"]

# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'webmock/rspec'

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

RSpec.configure do |config|
  # ## Mock Framework
  #
  # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
  #
  # config.mock_with :mocha
  # config.mock_with :flexmock
  # config.mock_with :rr

  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"

  # If you're not using ActiveRecord, or you'd prefer not to run each of your
  # examples within a transaction, remove the following line or assign false
  # instead of true.
  config.use_transactional_fixtures = true

  # If true, the base class of anonymous controllers will be inferred
  # automatically. This will be the default behavior in future versions of
  # rspec-rails.
  config.infer_base_class_for_anonymous_controllers = false

  # Run specs in random order to surface order dependencies. If you find an
  # order dependency and want to debug it, you can fix the order by providing
  # the seed, which is printed after each run.
  #     --seed 1234
  config.order = "random"

  config.before do
    OmniAuth.config.test_mode = false
  end

  config.include GithubMockHelpers
  config.include FactoryGirl::Syntax::Methods

  config.before do
    CheckOpenPullsJob.enabled = false
  end

  config.before do
    Capybara.default_host = HOST
  end
end

<MSG> Add poltergeist and database_cleaner for JS acceptance specs

* Use poltergeist because of lower dependency overhead.

* For JS specs, the tests run in a different thread than the app,
  so we use DatabaseCleaner's truncation strategy to ensure
  the DB state is clean between specs.

  See "Transactions and database setup" in Capybara README:
  https://github.com/jnicklas/capybara/blob/master/README.md

<DFF> @@ -13,6 +13,7 @@ require 'webmock/rspec'
 Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
 
 RSpec.configure do |config|
+
   # ## Mock Framework
   #
   # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
@@ -27,7 +28,31 @@ RSpec.configure do |config|
   # If you're not using ActiveRecord, or you'd prefer not to run each of your
   # examples within a transaction, remove the following line or assign false
   # instead of true.
-  config.use_transactional_fixtures = true
+  config.use_transactional_fixtures = false
+
+  require 'capybara/poltergeist'
+  Capybara.javascript_driver = :poltergeist
+
+  config.before(:suite) do
+    DatabaseCleaner.strategy = :transaction
+    DatabaseCleaner.clean_with(:truncation)
+  end
+
+  config.before(js: true) do
+    DatabaseCleaner.strategy = :truncation
+  end
+
+  config.after(js: true) do
+    DatabaseCleaner.strategy = :transaction
+  end
+
+  config.before do
+    DatabaseCleaner.start
+  end
+
+  config.after do
+    DatabaseCleaner.clean
+  end
 
   # If true, the base class of anonymous controllers will be inferred
   # automatically. This will be the default behavior in future versions of
@@ -54,4 +79,8 @@ RSpec.configure do |config|
   config.before do
     Capybara.default_host = HOST
   end
+
+  config.before do
+    WebMock.disable_net_connect!(allow_localhost: true)
+  end
 end

Add poltergeist and database_cleaner for JS acceptance specs