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.
-
#required_w3c_cloud_caps ⇒ Hash
Selenium W3C 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.
-
#w3c_selenium? ⇒ Boolean
Whether or not Selenium is W3C compatible.
Instance Method Details
#chrome_browser? ⇒ Boolean
Returns whether or not current browser is Google Chrome.
75 76 77 |
# File 'lib/howitzer/capybara_helpers.rb', line 75 def chrome_browser? browser? :chrome end |
#cloud_driver(app, caps, url) ⇒ Capybara::Selenium::Driver
Buids selenium driver for a cloud service
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/howitzer/capybara_helpers.rb', line 156 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, http_client: http_client, browser: :remote } [w3c_selenium? ? :capabilities : :desired_capabilities] = ::Selenium::WebDriver::Remote::Capabilities.new(caps) 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.
50 51 52 |
# File 'lib/howitzer/capybara_helpers.rb', line 50 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.).
176 177 178 179 180 181 182 |
# File 'lib/howitzer/capybara_helpers.rb', line 176 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.
90 91 92 93 94 95 96 97 |
# File 'lib/howitzer/capybara_helpers.rb', line 90 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.
67 68 69 |
# File 'lib/howitzer/capybara_helpers.rb', line 67 def ff_browser? browser? :ff, :firefox end |
#ie_browser? ⇒ Boolean
Returns whether or not current browser is Internet Explorer.
59 60 61 |
# File 'lib/howitzer/capybara_helpers.rb', line 59 def ie_browser? browser? :ie, :iexplore end |
#load_driver_gem!(driver, lib, gem) ⇒ Object
Tries to load appropriate driver gem
117 118 119 120 121 122 |
# File 'lib/howitzer/capybara_helpers.rb', line 117 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.
126 127 128 129 130 131 132 133 |
# File 'lib/howitzer/capybara_helpers.rb', line 126 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 |
#required_w3c_cloud_caps ⇒ Hash
Returns selenium W3C capabilities required for a cloud driver.
137 138 139 140 141 142 |
# File 'lib/howitzer/capybara_helpers.rb', line 137 def required_w3c_cloud_caps { browserName: Howitzer.cloud_browser_name, browserVersion: Howitzer.cloud_browser_version } end |
#safari_browser? ⇒ Boolean
Returns whether or not current browser is Safari.
83 84 85 |
# File 'lib/howitzer/capybara_helpers.rb', line 83 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
103 104 105 106 107 108 109 |
# File 'lib/howitzer/capybara_helpers.rb', line 103 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 |