aboutsummaryrefslogtreecommitdiffstats
path: root/actionsystemtest/lib
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2016-12-03 09:27:44 -0500
committereileencodes <eileencodes@gmail.com>2017-02-20 15:07:34 -0500
commit3f414c22c70d5647d2ee9f16f7e4eec15c829afb (patch)
tree6465f3a3b1f1702d8ec8ae333592b081070f8c14 /actionsystemtest/lib
parent970ece243d05945f59f3cdf55e44dbfe5b16d2d5 (diff)
downloadrails-3f414c22c70d5647d2ee9f16f7e4eec15c829afb.tar.gz
rails-3f414c22c70d5647d2ee9f16f7e4eec15c829afb.tar.bz2
rails-3f414c22c70d5647d2ee9f16f7e4eec15c829afb.zip
Cleanup Rails provided helpers
1. Clean up screenshot helper Updates documentation to be clearer and separates the concerns of saving the image, setting the image path, and displaying the image. 2. Remove Rails provided assertions for selectors This was moved upstream to Capybara and is no longer necessary to be included in Rails 3. Remove form helper The form helper is pretty specific to Basecamp's needs and may not be helpful outside of Rails.
Diffstat (limited to 'actionsystemtest/lib')
-rw-r--r--actionsystemtest/lib/action_system_test/test_helper.rb2
-rw-r--r--actionsystemtest/lib/action_system_test/test_helpers.rb2
-rw-r--r--actionsystemtest/lib/action_system_test/test_helpers/assertions.rb40
-rw-r--r--actionsystemtest/lib/action_system_test/test_helpers/form_helper.rb58
-rw-r--r--actionsystemtest/lib/action_system_test/test_helpers/screenshot_helper.rb22
5 files changed, 15 insertions, 109 deletions
diff --git a/actionsystemtest/lib/action_system_test/test_helper.rb b/actionsystemtest/lib/action_system_test/test_helper.rb
index 9ff5746244..46a4ac466b 100644
--- a/actionsystemtest/lib/action_system_test/test_helper.rb
+++ b/actionsystemtest/lib/action_system_test/test_helper.rb
@@ -3,8 +3,6 @@ require "action_system_test/test_helpers"
module ActionSystemTest
module TestHelper # :nodoc:
- include TestHelpers::Assertions
- include TestHelpers::FormHelper
include TestHelpers::ScreenshotHelper
include Capybara::DSL
diff --git a/actionsystemtest/lib/action_system_test/test_helpers.rb b/actionsystemtest/lib/action_system_test/test_helpers.rb
index 10ddeff92f..bc0e015874 100644
--- a/actionsystemtest/lib/action_system_test/test_helpers.rb
+++ b/actionsystemtest/lib/action_system_test/test_helpers.rb
@@ -2,8 +2,6 @@ module ActionSystemTest
module TestHelpers
extend ActiveSupport::Autoload
- autoload :Assertions
- autoload :FormHelper
autoload :ScreenshotHelper
end
end
diff --git a/actionsystemtest/lib/action_system_test/test_helpers/assertions.rb b/actionsystemtest/lib/action_system_test/test_helpers/assertions.rb
deleted file mode 100644
index edc8dbaa7f..0000000000
--- a/actionsystemtest/lib/action_system_test/test_helpers/assertions.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-module ActionSystemTest
- module TestHelpers
- # Assertions for system testing that aren't included by default in Capybara.
- # These are assertions that are useful specifically for Rails applications.
- module Assertions
- # Asserts that all of the provided selectors are present on the given page.
- #
- # assert_all_of_selectors('p', 'td')
- def assert_all_of_selectors(*items)
- options = items.extract_options!
- type = type_for_selector(items)
-
- items.each do |item|
- assert_selector type, item, options
- end
- end
-
- # Asserts that none of the provided selectors are present on the page.
- #
- # assert_none_of_selectors('ul', 'ol')
- def assert_none_of_selectors(*items)
- options = items.extract_options!
- type = type_for_selector(items)
-
- items.each do |item|
- assert_no_selector type, item, options
- end
- end
-
- private
- def type_for_selector(*items)
- if items.first.is_a?(Symbol)
- items.shift
- else
- Capybara.default_selector
- end
- end
- end
- end
-end
diff --git a/actionsystemtest/lib/action_system_test/test_helpers/form_helper.rb b/actionsystemtest/lib/action_system_test/test_helpers/form_helper.rb
deleted file mode 100644
index 3c65c23f6d..0000000000
--- a/actionsystemtest/lib/action_system_test/test_helpers/form_helper.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-module ActionSystemTest
- module TestHelpers
- # Form helpers for system testing that aren't included by default in
- # Capybara.
- module FormHelper
- # Finds all provided fields or text areas and fills in with supplied values.
- #
- # fill_in_all_fields('Name' => 'Eileen', 'Job Title' => 'Programmer')
- def fill_in_all_fields(fields)
- fields.each do |name, value|
- fill_in name, with: value
- end
- end
-
- # Locates a checkbox that is present inside a label and checks it. When
- # using styled boxes Selenium may not be able to see the checkbox. This
- # form helper looks inside the checkbox and clicks the label instead of
- # setting the value of the checkbox.
- #
- # click_checkbox_label 'Admin'
- #
- # By default +click_checkbox_label+ looks for checkboxes that are not
- # checked by default. To locate an already checked box and uncheck it
- # set checked to true:
- #
- # click_checkbox_label 'Admin', checked: true
- def click_checkbox_label(name, checked: false)
- field = find_checkbox(name, checked)
- label = find_label_wrapper(field)
- label.click
- end
-
- # In lieu of locating a button and calling +click_on+, +press_enter+ will
- # submit the form via enter. This method will only work for drivers that
- # load a browser like Selenium.
- #
- # test 'Adding a User' do
- # fill_in 'Name', with: 'Arya'
- #
- # press_enter
- #
- # assert_text 'Arya'
- # end
- def press_enter
- page.driver.browser.action.send_keys(:enter).perform
- end
-
- private
- def find_checkbox(name, checked)
- find(:field, name, visible: :all, checked: checked)
- end
-
- def find_label_wrapper(field, location: "./ancestor::label")
- field.find :xpath, location
- end
- end
- end
-end
diff --git a/actionsystemtest/lib/action_system_test/test_helpers/screenshot_helper.rb b/actionsystemtest/lib/action_system_test/test_helpers/screenshot_helper.rb
index 1b198b9b29..d4d0d79e95 100644
--- a/actionsystemtest/lib/action_system_test/test_helpers/screenshot_helper.rb
+++ b/actionsystemtest/lib/action_system_test/test_helpers/screenshot_helper.rb
@@ -13,24 +13,32 @@ module ActionSystemTest
# ActionSystemTest.driver.supports_screenshots?
# => true
def take_screenshot
+ save_image
puts "[Screenshot]: #{image_path}"
- puts find_image
+ puts display_image
end
- # Takes a screenshot only if the test failed. This is included
- # by default in +teardown+ of system test.
+ # Takes a screenshot of the current page in the browser if the test
+ # failed.
+ #
+ # +take_screenshot+ is included in <tt>system_test_helper.rb</tt> that is
+ # generated with the application. To take screenshots when a test fails
+ # add +take_failed_screenshot+ to the teardown block before clearing any
+ # sessions.
def take_failed_screenshot
take_screenshot unless passed?
end
private
def image_path
- path = "tmp/screenshots/failures_#{method_name}.png"
- page.save_screenshot(Rails.root.join(path))
- path
+ "tmp/screenshots/failures_#{method_name}.png"
+ end
+
+ def save_image
+ page.save_screenshot(Rails.root.join(image_path))
end
- def find_image
+ def display_image
if ENV["CAPYBARA_INLINE_SCREENSHOT"] == "artifact"
"\e]1338;url=artifact://#{image_path}\a"
else