aboutsummaryrefslogtreecommitdiffstats
path: root/actionsystemtest/lib/action_system_test
diff options
context:
space:
mode:
Diffstat (limited to 'actionsystemtest/lib/action_system_test')
-rw-r--r--actionsystemtest/lib/action_system_test/browser.rb26
-rw-r--r--actionsystemtest/lib/action_system_test/driver.rb16
-rw-r--r--actionsystemtest/lib/action_system_test/driver_adapter.rb29
-rw-r--r--actionsystemtest/lib/action_system_test/driver_adapters.rb46
-rw-r--r--actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb87
-rw-r--r--actionsystemtest/lib/action_system_test/driver_adapters/rails_selenium_driver.rb103
-rw-r--r--actionsystemtest/lib/action_system_test/driver_adapters/web_server.rb45
-rw-r--r--actionsystemtest/lib/action_system_test/server.rb34
-rw-r--r--actionsystemtest/lib/action_system_test/test_helper.rb15
-rw-r--r--actionsystemtest/lib/action_system_test/test_helpers.rb7
10 files changed, 76 insertions, 332 deletions
diff --git a/actionsystemtest/lib/action_system_test/browser.rb b/actionsystemtest/lib/action_system_test/browser.rb
new file mode 100644
index 0000000000..09b72721c5
--- /dev/null
+++ b/actionsystemtest/lib/action_system_test/browser.rb
@@ -0,0 +1,26 @@
+module ActionSystemTest
+ class Browser
+ def initialize(name, screen_size)
+ @name = name
+ @screen_size = screen_size
+ end
+
+ def run
+ register
+ setup
+ end
+
+ private
+ def register
+ Capybara.register_driver @name do |app|
+ Capybara::Selenium::Driver.new(app, browser: @name).tap do |driver|
+ driver.browser.manage.window.size = Selenium::WebDriver::Dimension.new(*@screen_size)
+ end
+ end
+ end
+
+ def setup
+ Capybara.default_driver = @name.to_sym
+ end
+ end
+end
diff --git a/actionsystemtest/lib/action_system_test/driver.rb b/actionsystemtest/lib/action_system_test/driver.rb
new file mode 100644
index 0000000000..7d499ba772
--- /dev/null
+++ b/actionsystemtest/lib/action_system_test/driver.rb
@@ -0,0 +1,16 @@
+module ActionSystemTest
+ class Driver # :nodoc:
+ def initialize(name)
+ @name = name
+ end
+
+ def run
+ register
+ end
+
+ private
+ def register
+ Capybara.default_driver = @name
+ end
+ end
+end
diff --git a/actionsystemtest/lib/action_system_test/driver_adapter.rb b/actionsystemtest/lib/action_system_test/driver_adapter.rb
deleted file mode 100644
index 5b5a9d8103..0000000000
--- a/actionsystemtest/lib/action_system_test/driver_adapter.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require "action_system_test/driver_adapters"
-
-module ActionSystemTest
- # The <tt>ActionSystemTest::DriverAdapter</tt> module is used to load the driver
- # set in the +system_test_helper+ file generated with your application.
- #
- # The default driver adapter is the +:rails_selenium_driver+.
- module DriverAdapter
- extend ActiveSupport::Concern
-
- module ClassMethods
- # Returns the current driver that is set in the <tt>ActionSystemTestCase</tt>
- # class generated with your Rails application. If no driver is set
- # +:rails_selenium_driver+ will be initialized.
- def driver
- @driver ||= DriverAdapters.lookup(DEFAULT_DRIVER)
- end
-
- # Specify the adapter and settings for the system test driver set in the
- # Rails' configuration file.
- #
- # When set, the driver will be initialized.
- def driver=(driver)
- @driver = DriverAdapters.lookup(driver)
- @driver.run
- end
- end
- end
-end
diff --git a/actionsystemtest/lib/action_system_test/driver_adapters.rb b/actionsystemtest/lib/action_system_test/driver_adapters.rb
deleted file mode 100644
index 6fb8675489..0000000000
--- a/actionsystemtest/lib/action_system_test/driver_adapters.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-module ActionSystemTest
- # == Action System Testing Driver Adapters
- #
- # By default Rails supports Capybara with the Selenium Driver. Rails provides
- # configuration setup for using the selenium driver with Capybara.
- # Additionally Rails can be used as a layer between Capybara and its other
- # supported drivers: +:rack_test+, +:selenium+, +:webkit+, or +:poltergeist+.
- #
- # *{RackTest}[https://github.com/jnicklas/capybara#racktest]
- # *{Selenium}[http://seleniumhq.org/docs/01_introducing_selenium.html#selenium-2-aka-selenium-webdriver]
- # *{Webkit}[https://github.com/thoughtbot/capybara-webkit]
- # *{Poltergeist}[https://github.com/teampoltergeist/poltergeist]
- #
- # === Driver Features
- #
- # | | Default Browser | Supports Screenshots? |
- # | --------------- | --------------------- | --------------------- |
- # | Rails' Selenium | Chrome | Yes |
- # | Rack Test | No JS Support | No |
- # | Selenium | Firefox | Yes |
- # | WebKit | Headless w/ Qt | Yes |
- # | Poltergeist | Headless w/ PhantomJS | Yes |
- module DriverAdapters
- extend ActiveSupport::Autoload
-
- autoload :CapybaraDriver
- autoload :RailsSeleniumDriver
-
- class << self
- # Returns driver class for specified name.
- #
- # ActionSystemTest::DriverAdapters.lookup(:rails_selenium_driver)
- # # => ActionSystemTest::DriverAdapters::RailsSeleniumDriver
- def lookup(driver)
- if CapybaraDriver::CAPYBARA_DEFAULTS.include?(driver)
- CapybaraDriver.new(name: driver)
- elsif driver.is_a?(Symbol)
- klass = const_get(driver.to_s.camelize)
- klass.new
- else
- driver
- end
- end
- end
- end
-end
diff --git a/actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb b/actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb
deleted file mode 100644
index 88c07ad792..0000000000
--- a/actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-require "action_system_test/driver_adapters/web_server"
-
-module ActionSystemTest
- module DriverAdapters
- # == CapybaraDriver for System Testing
- #
- # The <tt>CapybaraDriver</tt> is a shim between Rails and Capybara.
- #
- # The drivers Capybara supports are: +:rack_test+, +:selenium+, +:webkit+,
- # and +:poltergeist+.
- #
- # Rails provides its own defaults for Capybara with the Selenium driver
- # through <tt>RailsSeleniumDriver</tt>, but allows users to use Selenium
- # directly.
- #
- # To set your system tests to use one of Capybara's default drivers, add
- # the following to your +system_test_helper+ class file:
- #
- # class ActionSystemTestCase < ActionSystemTest::Base
- # ActionSystemTest.driver = :rack_test
- # end
- #
- # The +:rack_test+ driver is a basic test driver that doesn't support
- # JavaScript testing and doesn't require a server.
- #
- # The +:poltergeist+ and +:webkit+ drivers are headless, but require some
- # extra environment setup. Please see their README's for instructions on
- # environment setup.
- #
- # Because the default server for Rails is Puma, each of the Capybara
- # drivers will default to using Puma. Changing the configuration
- # to use Webrick is possible by initalizing a new driver object.
- #
- # The default settings for the <tt>CapybaraDriver</tt> are:
- #
- # #<ActionSystemTest::DriverAdapters::CapybaraDriver:0x007ff0e992c1d8
- # @name=:rack_test,
- # @server=:puma,
- # @port=28100
- # >
- #
- # The settings for the <tt>CapybaraDriver</tt> can be changed in the
- # +system_test_helper+ file in your application's test directory.
- #
- # ActionSystemTest.driver = ActionSystemTest::DriverAdapters::CapybaraDriver.new(
- # name: :webkit,
- # server: :webrick
- # )
- class CapybaraDriver
- include WebServer
-
- CAPYBARA_DEFAULTS = [ :rack_test, :selenium, :webkit, :poltergeist ]
-
- attr_reader :name, :server, :port
-
- def initialize(name: :rack_test, server: :puma, port: 28100)
- @name = name
- @server = server
- @port = port
- end
-
- def run
- registration
- setup
- end
-
- def supports_screenshots?
- @name != :rack_test
- end
-
- private
- def registration
- register_server
- end
-
- def setup
- set_server
- set_port
- set_driver
- end
-
- def set_driver
- Capybara.default_driver = @name
- end
- end
- end
-end
diff --git a/actionsystemtest/lib/action_system_test/driver_adapters/rails_selenium_driver.rb b/actionsystemtest/lib/action_system_test/driver_adapters/rails_selenium_driver.rb
deleted file mode 100644
index 4c606d2c06..0000000000
--- a/actionsystemtest/lib/action_system_test/driver_adapters/rails_selenium_driver.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-require "action_system_test/driver_adapters/web_server"
-
-module ActionSystemTest
- module DriverAdapters
- # == RailsSeleniumDriver for Action System Test
- #
- # The <tt>RailsSeleniumDriver</tt> uses the Selenium 2.0 webdriver. The
- # selenium-webdriver gem is required by this driver.
- #
- # The <tt>RailsSeleniumDriver</tt> is useful for real browser testing and
- # supports Chrome and Firefox.
- #
- # By default Rails system testing will use Rails' configuration with Capybara
- # and the Selenium driver. To explictly set the <tt>RailsSeleniumDriver</tt>
- # add the following to your +system_test_helper+:
- #
- # class ActionSystemTest < ActionSystemTest::Base
- # ActionSystemTest.driver = :rails_selenium_driver
- # end
- #
- # Because this driver supports real browser testing it is required that a
- # server is configured.
- #
- # If no server is specified when the driver is initialized, Puma will be used
- # by default. The default settings for the <tt>RailsSeleniumDriver</tt>
- # are as follows:
- #
- # #<ActionSystemTest::DriverAdapters::RailsSeleniumDriver:0x007ff0e992c1d8
- # @browser=:chrome,
- # @server=:puma,
- # @port=28100,
- # @screen_size=[ 1400, 1400 ]
- # >
- #
- # The settings for the <tt>RailsSeleniumDriver</tt> can be changed in the
- # +system_test_helper+.
- #
- # class ActionSystemTest < ActionSystemTest::Base
- # ActionSystemTest.driver = ActionSystemTest::DriverAdapters::RailsSeleniumDriver.new(
- # server: :webrick,
- # port: 28100,
- # screen_size: [ 800, 800 ]
- # )
- # end
- #
- # The default browser is set to Chrome. If you want to use Firefox,
- # you will need to use Firefox 45.0esr or 47.0 and ensure
- # that selenium-webdriver is version 2.53.4. To change the browser from
- # +:chrome+ to +:firefox+, initialize the Selenium driver in your Rails'
- # test environment:
- #
- # class ActionSystemTest < ActionSystemTest::Base
- # ActionSystemTest.driver = ActionSystemTest::DriverAdapters::RailsSeleniumDriver.new(
- # browser: :firefox
- # )
- # end
- class RailsSeleniumDriver
- include WebServer
-
- attr_reader :browser, :server, :port, :screen_size
-
- def initialize(browser: :chrome, server: :puma, port: 28100, screen_size: [ 1400, 1400 ]) # :nodoc:
- @browser = browser
- @server = server
- @port = port
- @screen_size = screen_size
- end
-
- def run # :nodoc:
- registration
- setup
- end
-
- def supports_screenshots?
- true
- end
-
- private
- def registration
- register_browser_driver
- register_server
- end
-
- def setup
- set_server
- set_port
- set_driver
- end
-
- def register_browser_driver
- Capybara.register_driver @browser do |app|
- Capybara::Selenium::Driver.new(app, browser: @browser).tap do |driver|
- driver.browser.manage.window.size = Selenium::WebDriver::Dimension.new(*@screen_size)
- end
- end
- end
-
- def set_driver
- Capybara.default_driver = @browser.to_sym
- end
- end
- end
-end
diff --git a/actionsystemtest/lib/action_system_test/driver_adapters/web_server.rb b/actionsystemtest/lib/action_system_test/driver_adapters/web_server.rb
deleted file mode 100644
index 22d8799fee..0000000000
--- a/actionsystemtest/lib/action_system_test/driver_adapters/web_server.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-begin
- require "rack/handler/puma"
-rescue LoadError
- false
-end
-
-module ActionSystemTest
- module DriverAdapters
- module WebServer # :nodoc:
- def register_server
- Capybara.register_server @server do |app, port, host|
- case @server
- when :puma
- register_puma(app, port)
- when :webrick
- register_webrick(app, port)
- else
- register_default(app, port)
- end
- end
- end
-
- private
- def register_default(app, port)
- Capybara.run_default_server(app, port)
- end
-
- def register_puma(app, port)
- Rack::Handler::Puma.run(app, Port: port, Threads: "0:1")
- end
-
- def register_webrick(app, port)
- Rack::Handler::WEBrick.run(app, Port: port, AccessLog: [], Logger: WEBrick::Log::new(nil, 0))
- end
-
- def set_server
- Capybara.server = @server
- end
-
- def set_port
- Capybara.server_port = @port
- end
- end
- end
-end
diff --git a/actionsystemtest/lib/action_system_test/server.rb b/actionsystemtest/lib/action_system_test/server.rb
new file mode 100644
index 0000000000..6f87b2767d
--- /dev/null
+++ b/actionsystemtest/lib/action_system_test/server.rb
@@ -0,0 +1,34 @@
+require "rack/handler/puma"
+
+module ActionSystemTest
+ class Server # :nodoc:
+ def initialize(port)
+ @port = port
+ end
+
+ def run
+ register
+ setup
+ end
+
+ private
+ def register
+ Capybara.register_server :puma do |app, host|
+ Rack::Handler::Puma.run(app, Port: @port, Threads: "0:1")
+ end
+ end
+
+ def setup
+ set_server
+ set_port
+ end
+
+ def set_server
+ Capybara.server = :puma
+ end
+
+ def set_port
+ Capybara.server_port = @port
+ end
+ end
+end
diff --git a/actionsystemtest/lib/action_system_test/test_helper.rb b/actionsystemtest/lib/action_system_test/test_helper.rb
deleted file mode 100644
index 46a4ac466b..0000000000
--- a/actionsystemtest/lib/action_system_test/test_helper.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require "capybara/dsl"
-require "action_system_test/test_helpers"
-
-module ActionSystemTest
- module TestHelper # :nodoc:
- include TestHelpers::ScreenshotHelper
- include Capybara::DSL
-
- Capybara.app = Rack::Builder.new do
- map "/" do
- run Rails.application
- end
- end
- end
-end
diff --git a/actionsystemtest/lib/action_system_test/test_helpers.rb b/actionsystemtest/lib/action_system_test/test_helpers.rb
deleted file mode 100644
index bc0e015874..0000000000
--- a/actionsystemtest/lib/action_system_test/test_helpers.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-module ActionSystemTest
- module TestHelpers
- extend ActiveSupport::Autoload
-
- autoload :ScreenshotHelper
- end
-end