qat-web 9.0.4 → 9.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 430c60ccbae570acfdb1977b4bb5bbebfabe41fbbc1c680bf5a572bcc0af2eab
4
- data.tar.gz: 5d915e9e32ab5792d8a4ec052ccd3e771b57f3eedc9512e07bc08c5ceb298fee
3
+ metadata.gz: 78a4d74a940d69807c38861f94dead4eb76808d1fb161dcb9a9b197c46bb3ba0
4
+ data.tar.gz: 834ece543d03c4221b5645203289c9505395f9327351fd34700a7f3e1c26fa6f
5
5
  SHA512:
6
- metadata.gz: 8ff039a05d077081abfcb680cda83d014ed58b052e011989501b7253a8212011392761f98f1ad9a394c7b2412069671e9a9c6e7ea913b7eb63ad38ad5dd5074c
7
- data.tar.gz: 1a92d2e05b4a01b98f72799bbd7d20b57bbd1b4ee65b8c74086a30138784086a5e9800c3d5dacd2a699eefe05e1f8e739c05003e647702cf093c03f6d855cec9
6
+ metadata.gz: d3bbd046cb1a60d2096756f0171496537679ec3cdac04d3d556a14d8788c703c501bb06ae02ce54ae3b6ba0248059aa836ab672c37d90049c92dcd8f0892115d
7
+ data.tar.gz: 1eca044c4727ef1ddbc46778cd604ea36b59aa1ed06cb79a71a2983395ec869b19c799c751d8fa002df417d655939a4907d807379831d05239670af7b92cf26d
@@ -13,7 +13,7 @@ module QAT::Web
13
13
  # @param addons [String] Expected driver/browser addons
14
14
  # @param hooks [String] Cucumber hooks to use
15
15
  # @return [Capybara::RackTest::Driver||Capybara::Selenium::Driver]
16
- def load_generic_driver(browser, controller, screen, driver, properties, addons, hooks)
16
+ def load_generic_driver(browser, controller, screen, driver, properties, browser_options, addons, hooks)
17
17
  Capybara.register_driver controller do |app|
18
18
  loaded_screen = QAT::Web::Screen::Factory.for screen
19
19
  loaded_driver = nil
@@ -28,6 +28,10 @@ module QAT::Web
28
28
  customized_profile = create_profile(driver, browser, properties, addons)
29
29
  options.merge!(customized_profile) if customized_profile
30
30
  end
31
+ if browser_options
32
+ customized_options = create_options(driver, browser, browser_options)
33
+ options.merge!(customized_options) if customized_options
34
+ end
31
35
  loaded_driver = Capybara.const_get(driver.capitalize)::Driver.new(app, **options)
32
36
  loaded_driver.browser
33
37
  end
@@ -40,17 +40,18 @@ module QAT::Web
40
40
  private
41
41
 
42
42
  def register_controller(controller, options)
43
- browser = options['browser'].to_sym
44
- driver = options['driver'] || mapping[browser]
45
- screen = options['screen']
46
- properties = options['properties']
47
- addons = options['addons']
48
- hooks = options['hooks']
43
+ browser = options['browser'].to_sym
44
+ driver = options['driver'] || mapping[browser]
45
+ screen = options['screen']
46
+ properties = options['properties']
47
+ browser_options = options['options']
48
+ addons = options['addons']
49
+ hooks = options['hooks']
49
50
 
50
51
  if driver.to_sym == :poltergeist
51
52
  load_poltergeist_driver(browser, controller, screen)
52
53
  else
53
- load_generic_driver(browser, controller, screen, driver, properties, addons, hooks)
54
+ load_generic_driver(browser, controller, screen, driver, properties, browser_options, addons, hooks)
54
55
  end
55
56
  end
56
57
 
@@ -26,9 +26,23 @@ module QAT::Web
26
26
  end
27
27
  end
28
28
 
29
+ #@since 9.0.5
30
+ def create_options (driver, browser, options)
31
+ return nil unless options && options.any?
32
+ begin
33
+ method("#{driver}_#{browser}_options".to_sym).call(options)
34
+ rescue NoMethodError => exception
35
+ if exception.message.match(/.*_.*_options/)
36
+ raise(HandlerNotImplemented, "An options handler for driver '#{driver.capitalize}' and/or '#{browser.capitalize}' does not exist at this moment!")
37
+ else
38
+ raise
39
+ end
40
+ end
41
+ end
42
+
29
43
  private
30
44
  def selenium_firefox_profile(properties, addons)
31
- profile = selenium_profile(:firefox, properties)
45
+ profile = selenium_profile(:firefox)
32
46
 
33
47
  profile = load_firefox_addons(profile, addons)
34
48
 
@@ -38,14 +52,14 @@ module QAT::Web
38
52
  end
39
53
 
40
54
  def selenium_chrome_profile (properties, addons)
41
- profile = selenium_profile(:chrome, properties)
55
+ profile = selenium_profile(:chrome)
42
56
 
43
57
  profile = set_profile(profile, properties)
44
58
 
45
59
  { prefs: profile.send(:prefs) }
46
60
  end
47
61
 
48
- def selenium_profile(browser, properties)
62
+ def selenium_profile(browser)
49
63
  begin
50
64
  require 'selenium-webdriver'
51
65
  rescue LoadError => e
@@ -83,6 +97,37 @@ module QAT::Web
83
97
  profile
84
98
  end
85
99
 
100
+ def selenium_firefox_options(browser_options)
101
+ options = selenium_options(:firefox)
102
+ options = set_options(options, browser_options)
103
+ { options: options }
104
+ end
105
+
106
+ def selenium_chrome_options(browser_options)
107
+ options = selenium_options(:chrome)
108
+ options = set_options(options, browser_options)
109
+ { options: options }
110
+ end
111
+
112
+ def selenium_options(browser)
113
+ begin
114
+ require 'selenium-webdriver'
115
+ rescue LoadError => e
116
+ if e.message =~ /selenium-webdriver/
117
+ raise LoadError, "QAT-Web is unable to load `selenium-webdriver`, please install the gem and add `gem 'selenium-webdriver'` to your Gemfile if you are using bundler."
118
+ else
119
+ raise e
120
+ end
121
+ end
122
+ Selenium::WebDriver.const_get(browser.capitalize)::Options.new
123
+ end
124
+
125
+ def set_options(options, browser_options)
126
+ browser_options.fetch('args', [])&.each { |arg| options.add_argument(arg) }
127
+ browser_options.fetch('preferences', {})&.each { |name, value| options.add_preference(name, value) }
128
+ options
129
+ end
130
+
86
131
  class HandlerNotImplemented < StandardError
87
132
  end
88
133
  class InvalidAddonError < StandardError
@@ -4,6 +4,6 @@ module QAT
4
4
  #@since 1.0.0
5
5
  module Web
6
6
  # Represents QAT-Web's version
7
- VERSION = '9.0.4'
7
+ VERSION = '9.0.6'
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qat-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.4
4
+ version: 9.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - QAT
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-10 00:00:00.000000000 Z
11
+ date: 2025-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: qat-cucumber
@@ -283,7 +283,7 @@ licenses:
283
283
  - GPL-3.0
284
284
  metadata:
285
285
  source_code_uri: https://github.com/Ritain-io/qat-web
286
- post_install_message:
286
+ post_install_message:
287
287
  rdoc_options: []
288
288
  require_paths:
289
289
  - lib
@@ -298,8 +298,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
298
298
  - !ruby/object:Gem::Version
299
299
  version: '0'
300
300
  requirements: []
301
- rubygems_version: 3.3.26
302
- signing_key:
301
+ rubygems_version: 3.4.19
302
+ signing_key:
303
303
  specification_version: 4
304
304
  summary: QAT-Web is a browser controller for Web testing
305
305
  test_files: []