diff options
Diffstat (limited to 'actionsystemtest/lib/action_system_test')
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 |