Module: Howitzer::CapybaraHelpers
- Defined in:
- lib/howitzer/capybara_helpers.rb
Overview
This module holds capybara helpers methods
Constant Summary collapse
- CHECK_YOUR_SETTINGS_MSG =
:nodoc:
'Please check your settings'.freeze
- HOWITZER_KNOWN_BROWSERS =
:nodoc:
[ # :nodoc: CLOUD_BROWSERS = [ SAUCE = :sauce, TESTINGBOT = :testingbot, BROWSERSTACK = :browserstack, CROSSBROWSERTESTING = :crossbrowsertesting ].freeze, LOCAL_BROWSERS = [ HEADLESS_CHROME = :headless_chrome, HEADLESS_FIREFOX = :headless_firefox, SELENIUM = :selenium, SELENIUM_GRID = :selenium_grid ].freeze ].freeze
Instance Method Summary collapse
-
#chrome_browser? ⇒ Boolean
Whether or not current browser is Google Chrome.
-
#cloud_driver(app, caps, url) ⇒ Capybara::Selenium::Driver
Buids selenium driver for a cloud service.
-
#cloud_driver? ⇒ Boolean
True if current driver related with SauceLab, Testingbot or Browserstack cloud service.
-
#cloud_resource_path(kind) ⇒ String
Path to cloud resources (logs, videos, etc.).
-
#duration(time_in_numeric) ⇒ String
Formatted duration time.
-
#ff_browser? ⇒ Boolean
Whether or not current browser is FireFox.
-
#ie_browser? ⇒ Boolean
Whether or not current browser is Internet Explorer.
-
#load_driver_gem!(driver, lib, gem) ⇒ Object
Tries to load appropriate driver gem.
-
#required_cloud_caps ⇒ Hash
Selenium capabilities required for a cloud driver.
-
#safari_browser? ⇒ Boolean
Whether or not current browser is Safari.
-
#update_cloud_job_status(json_data = {}) ⇒ Object
Updates a job status on the job cloud.
Instance Method Details
#chrome_browser? ⇒ Boolean
Returns whether or not current browser is Google Chrome.
73 74 75 |
# File 'lib/howitzer/capybara_helpers.rb', line 73 def chrome_browser? browser? :chrome end |
#cloud_driver(app, caps, url) ⇒ Capybara::Selenium::Driver
Buids selenium driver for a cloud service
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/howitzer/capybara_helpers.rb', line 139 def cloud_driver(app, caps, url) http_client = ::Selenium::WebDriver::Remote::Http::Default.new http_client.read_timeout = Howitzer.cloud_http_idle_timeout http_client.open_timeout = Howitzer.cloud_http_idle_timeout = { url: url, desired_capabilities: ::Selenium::WebDriver::Remote::Capabilities.new(caps), http_client: http_client, browser: :remote } driver = Capybara::Selenium::Driver.new(app, **) driver.browser.file_detector = remote_file_detector driver end |
#cloud_driver? ⇒ Boolean
Returns true if current driver related with SauceLab, Testingbot or Browserstack cloud service.
48 49 50 |
# File 'lib/howitzer/capybara_helpers.rb', line 48 def cloud_driver? CLOUD_BROWSERS.include?(Howitzer.driver.to_sym) end |
#cloud_resource_path(kind) ⇒ String
Currently SauceLabs is supported only
Returns path to cloud resources (logs, videos, etc.).
159 160 161 162 163 164 165 |
# File 'lib/howitzer/capybara_helpers.rb', line 159 def cloud_resource_path(kind) case Howitzer.driver.to_sym when SAUCE then sauce_resource_path(kind) else '[NOT IMPLEMENTED]' end end |
#duration(time_in_numeric) ⇒ String
Returns formatted duration time.
88 89 90 91 92 93 94 95 |
# File 'lib/howitzer/capybara_helpers.rb', line 88 def duration(time_in_numeric) secs = time_in_numeric.to_i mins = secs / 60 hours = mins / 60 return "[#{hours}h #{mins % 60}m #{secs % 60}s]" if hours.positive? return "[#{mins}m #{secs % 60}s]" if mins.positive? return "[0m #{secs}s]" if secs >= 0 end |
#ff_browser? ⇒ Boolean
Returns whether or not current browser is FireFox.
65 66 67 |
# File 'lib/howitzer/capybara_helpers.rb', line 65 def ff_browser? browser? :ff, :firefox end |
#ie_browser? ⇒ Boolean
Returns whether or not current browser is Internet Explorer.
57 58 59 |
# File 'lib/howitzer/capybara_helpers.rb', line 57 def ie_browser? browser? :ie, :iexplore end |
#load_driver_gem!(driver, lib, gem) ⇒ Object
Tries to load appropriate driver gem
115 116 117 118 119 120 |
# File 'lib/howitzer/capybara_helpers.rb', line 115 def load_driver_gem!(driver, lib, gem) require lib rescue LoadError raise LoadError, "`:#{driver}` driver is unable to load `#{lib}`, please add `gem '#{gem}'` to your Gemfile." end |
#required_cloud_caps ⇒ Hash
Returns selenium capabilities required for a cloud driver.
124 125 126 127 128 129 130 131 |
# File 'lib/howitzer/capybara_helpers.rb', line 124 def required_cloud_caps { platform: Howitzer.cloud_platform, browserName: Howitzer.cloud_browser_name, version: Howitzer.cloud_browser_version, name: "#{prefix_name} #{Howitzer.cloud_browser_name}" } end |
#safari_browser? ⇒ Boolean
Returns whether or not current browser is Safari.
81 82 83 |
# File 'lib/howitzer/capybara_helpers.rb', line 81 def safari_browser? browser? :safari end |
#update_cloud_job_status(json_data = {}) ⇒ Object
SauceLabs is currently supported only
Updates a job status on the job cloud
101 102 103 104 105 106 107 |
# File 'lib/howitzer/capybara_helpers.rb', line 101 def update_cloud_job_status(json_data = {}) case Howitzer.driver.to_sym when SAUCE then update_sauce_job_status(json_data) else '[NOT IMPLEMENTED]' end end |