aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/system_test_case.rb3
-rw-r--r--actionpack/lib/system_testing/base.rb9
-rw-r--r--actionpack/lib/system_testing/driver_adapter.rb18
-rw-r--r--actionpack/lib/system_testing/driver_adapters.rb13
-rw-r--r--actionpack/lib/system_testing/driver_adapters/capybara_rack_test_driver.rb24
-rw-r--r--actionpack/lib/system_testing/test_helper.rb12
6 files changed, 79 insertions, 0 deletions
diff --git a/actionpack/lib/system_test_case.rb b/actionpack/lib/system_test_case.rb
index fdaae3ff40..4265798073 100644
--- a/actionpack/lib/system_test_case.rb
+++ b/actionpack/lib/system_test_case.rb
@@ -1,5 +1,8 @@
+require 'system_testing/base'
+
module Rails
class SystemTestCase < ActiveSupport::TestCase
include Rails.application.routes.url_helpers
+ include SystemTesting::Base
end
end
diff --git a/actionpack/lib/system_testing/base.rb b/actionpack/lib/system_testing/base.rb
new file mode 100644
index 0000000000..ae4236f97d
--- /dev/null
+++ b/actionpack/lib/system_testing/base.rb
@@ -0,0 +1,9 @@
+require 'system_testing/test_helper'
+require 'system_testing/driver_adapter'
+
+module SystemTesting
+ module Base
+ include TestHelper
+ include DriverAdapter
+ end
+end
diff --git a/actionpack/lib/system_testing/driver_adapter.rb b/actionpack/lib/system_testing/driver_adapter.rb
new file mode 100644
index 0000000000..70c4396323
--- /dev/null
+++ b/actionpack/lib/system_testing/driver_adapter.rb
@@ -0,0 +1,18 @@
+require 'system_testing/driver_adapters'
+
+module SystemTesting
+ module DriverAdapter
+ extend ActiveSupport::Concern
+
+ included do
+ self.driver_adapter = :capybara_rack_test_driver
+ end
+
+ module ClassMethods
+ def driver_adapter=(driver_name_or_class)
+ driver = DriverAdapters.lookup(driver_name_or_class).new
+ driver.call
+ end
+ end
+ end
+end
diff --git a/actionpack/lib/system_testing/driver_adapters.rb b/actionpack/lib/system_testing/driver_adapters.rb
new file mode 100644
index 0000000000..38e2bdddcc
--- /dev/null
+++ b/actionpack/lib/system_testing/driver_adapters.rb
@@ -0,0 +1,13 @@
+module SystemTesting
+ module DriverAdapters
+ extend ActiveSupport::Autoload
+
+ autoload :CapybaraRackTestDriver
+
+ class << self
+ def lookup(name)
+ const_get(name.to_s.camelize)
+ end
+ end
+ end
+end
diff --git a/actionpack/lib/system_testing/driver_adapters/capybara_rack_test_driver.rb b/actionpack/lib/system_testing/driver_adapters/capybara_rack_test_driver.rb
new file mode 100644
index 0000000000..2890686e29
--- /dev/null
+++ b/actionpack/lib/system_testing/driver_adapters/capybara_rack_test_driver.rb
@@ -0,0 +1,24 @@
+module SystemTesting
+ module DriverAdapters
+ class CapybaraRackTestDriver
+ attr_reader :useragent
+
+ def initialize(useragent: 'Capybara')
+ @useragent = useragent
+ end
+
+ def call
+ registration
+ end
+
+ private
+ def registration
+ Capybara.register_driver :rack_test do |app|
+ Capybara::RackTest::Driver.new(app, headers: {
+ 'HTTP_USER_AGENT' => @useragent
+ })
+ end
+ end
+ end
+ end
+end
diff --git a/actionpack/lib/system_testing/test_helper.rb b/actionpack/lib/system_testing/test_helper.rb
new file mode 100644
index 0000000000..68b187ed7a
--- /dev/null
+++ b/actionpack/lib/system_testing/test_helper.rb
@@ -0,0 +1,12 @@
+require 'capybara/rails'
+
+module SystemTesting
+ module TestHelper
+ include Capybara::DSL
+
+ def after_teardown
+ Capybara.reset_sessions!
+ super
+ end
+ end
+end