onlyoffice_webdriver_wrapper 0.3.3 → 0.6.0

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: f98ac75fa3bf47f7ada257812f98097c9dc65d183ca4f6da5d5b42b2c410d84d
4
- data.tar.gz: 3cbcf38f96e27e4f8f9a71a08961b83a450c3d3da11fe970417e6ddc81bb6a07
3
+ metadata.gz: 01e7c8a03fdec74828c4f660d287be5729f56f29ce49b91f74005e29a666942e
4
+ data.tar.gz: bd3f969c07b3c5043b6329c07fff8e02d9576dfa373eef527af6738db1be9acd
5
5
  SHA512:
6
- metadata.gz: 64f12991857161f2234fa7f0b3d22b1da3fdb7c0b8af45fb6a8554cc53fea1a9278635429a2fc3ea8395f64bd58a785c65ce9ea9677e5b9881c7c040cc9ffd6c
7
- data.tar.gz: 6dc715859f6b85af142b13fa96d54ab0ca13bd221116076ad3a79eeeb599d2bb6a2c6bac613c4c4097b7f678a2f0441528a8c76532efe6ceb4a55fb006e048c1
6
+ metadata.gz: e5a02e944fd3b617209598f54274dcec25776695ed050576e9f7b92371de8c8bb72632ef8460c1bf0390a338f0e910f8610d590b59b449f29c08a93618440e99
7
+ data.tar.gz: dd7151ef729280ba654f37a5c4842f62b10c3d6c4b47f64df0e02e9a0d9658ad1a8c7c6c8ad4e44b2b9a87ea2a1e4092913ee290165006dd5ad00745f7bbd755
@@ -37,7 +37,6 @@ module OnlyofficeWebdriverWrapper
37
37
  caps = Selenium::WebDriver::Remote::Capabilities.chrome
38
38
  caps[:logging_prefs] = { browser: 'ALL' }
39
39
  caps[:proxy] = Selenium::WebDriver::Proxy.new(ssl: "#{@proxy.proxy_address}:#{@proxy.proxy_port}") if @proxy
40
- caps['chromeOptions'] = { w3c: false }
41
40
  switches = add_useragent_to_switches(DEFAULT_CHROME_SWITCHES)
42
41
  options = Selenium::WebDriver::Chrome::Options.new(args: switches,
43
42
  prefs: prefs)
@@ -4,19 +4,29 @@ require_relative 'headless_helper/real_display_tools'
4
4
  require_relative 'headless_helper/ruby_helper'
5
5
  require 'headless'
6
6
  require_relative 'headless_helper/headless_screenshot_patch'
7
+ require_relative 'headless_helper/headless_video_recorder'
7
8
 
8
9
  module OnlyofficeWebdriverWrapper
9
10
  # Class for using headless gem
10
11
  class HeadlessHelper
12
+ include HeadlessVideoRecorder
11
13
  include RealDisplayTools
12
14
  include RubyHelper
15
+ # @return [Headless] instance of headless object
13
16
  attr_accessor :headless_instance
17
+ # @return [Integer] x resolution of virtual screen
14
18
  attr_accessor :resolution_x
19
+ # @return [Integer] y resolution of virtual screen
15
20
  attr_accessor :resolution_y
21
+ # @return [True, False] is video should be recorded
22
+ attr_reader :record_video
16
23
 
17
- def initialize(resolution_x = 1680, resolution_y = 1050)
24
+ def initialize(resolution_x = 1680,
25
+ resolution_y = 1050,
26
+ record_video: true)
18
27
  @resolution_x = resolution_x
19
28
  @resolution_y = resolution_y
29
+ @record_video = record_video
20
30
  end
21
31
 
22
32
  # Check if should start headless
@@ -40,21 +50,25 @@ module OnlyofficeWebdriverWrapper
40
50
  begin
41
51
  @headless_instance = Headless.new(reuse: false,
42
52
  destroy_at_exit: true,
43
- dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24")
53
+ dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24",
54
+ video: { provider: :ffmpeg })
44
55
  rescue Exception => e
45
56
  OnlyofficeLoggerHelper.log("xvfb not started with problem #{e}")
46
57
  WebDriver.clean_up(true)
47
58
  @headless_instance = Headless.new(reuse: false,
48
59
  destroy_at_exit: true,
49
- dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24")
60
+ dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24",
61
+ video: { provider: :ffmpeg })
50
62
  end
51
63
  headless_instance.start
64
+ start_capture
52
65
  end
53
66
 
54
67
  def stop
55
68
  return unless running?
56
69
 
57
70
  OnlyofficeLoggerHelper.log('Stopping Headless Session')
71
+ stop_capture
58
72
  headless_instance.destroy
59
73
  end
60
74
 
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeWebdriverWrapper
4
+ # Methods to record video
5
+ module HeadlessVideoRecorder
6
+ # @return [String] uniq file path to recorded file
7
+ def recorded_video_file
8
+ return @recorded_video_file if @recorded_video_file
9
+
10
+ file_pattern = 'onlyoffice_webdriver_wrapper_video_file'
11
+ temp_file = Tempfile.new([file_pattern, '.mp4'])
12
+ @recorded_video_file = temp_file.path
13
+ temp_file.unlink
14
+ @recorded_video_file
15
+ end
16
+
17
+ # @return [nil] start capture of file
18
+ def start_capture
19
+ headless_instance.video.start_capture if record_video
20
+ rescue Headless::Exception => e
21
+ OnlyofficeLoggerHelper.log("Cannot start video capture: #{e}")
22
+ @record_video = false
23
+ end
24
+
25
+ # @return [nil] stop catpure of file
26
+ def stop_capture
27
+ return unless record_video
28
+
29
+ headless_instance.video.stop_and_save(recorded_video_file)
30
+ OnlyofficeLoggerHelper.log("Video is saved to #{recorded_video_file}")
31
+ rescue Headless::Exception => e
32
+ OnlyofficeLoggerHelper.log("Saving recorded video failed: #{e}")
33
+ @record_video = false
34
+ end
35
+ end
36
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OnlyofficeWebdriverWrapper
4
4
  module Version
5
- STRING = '0.3.3'
5
+ STRING = '0.6.0'
6
6
  end
7
7
  end
@@ -44,13 +44,15 @@ module OnlyofficeWebdriverWrapper
44
44
  TIMEOUT_FILE_DOWNLOAD = 100
45
45
  # @return [Array, String] default switches for chrome
46
46
  attr_accessor :driver
47
+ # @return [Symbol] browser to use
47
48
  attr_accessor :browser
48
49
  # @return [True, False] is browser currently running
49
50
  attr_reader :browser_running
50
51
  # @return [Symbol] device of which we try to simulate, default - :desktop_linux
51
52
  attr_accessor :device
53
+ # @return [String] directory to which file is downloaded
52
54
  attr_accessor :download_directory
53
- attr_accessor :server_address
55
+ # @return [HeadlessHelper] headless wrapper
54
56
  attr_accessor :headless
55
57
  # @return [Net::HTTP::Proxy] connection proxy
56
58
  attr_accessor :proxy
@@ -74,21 +76,20 @@ module OnlyofficeWebdriverWrapper
74
76
  when :chrome
75
77
  @driver = start_chrome_driver
76
78
  else
77
- raise 'Unknown Browser: ' + browser.to_s
79
+ raise("Unknown Browser: #{browser}")
78
80
  end
79
81
  @browser_running = true
80
82
  end
81
83
 
82
84
  def open(url)
83
- url = 'http://' + url unless url.include?('http') || url.include?('file://')
85
+ url = "http://#{url}" unless url.include?('http') || url.include?('file://')
84
86
  loop do
85
- begin
86
- @driver.navigate.to url
87
- break
88
- rescue Timeout::Error
89
- @driver.navigate.refresh
90
- end
87
+ @driver.navigate.to url
88
+ break
89
+ rescue Timeout::Error
90
+ @driver.navigate.refresh
91
91
  end
92
+ sleep(1) # Correct wait for Page to init focus
92
93
  OnlyofficeLoggerHelper.log("Opened page: #{url}")
93
94
  end
94
95
 
@@ -160,27 +161,6 @@ module OnlyofficeWebdriverWrapper
160
161
  OnlyofficeLoggerHelper.log('Go back to previous page')
161
162
  end
162
163
 
163
- def self.host_name_by_full_url(full_url)
164
- uri = URI(full_url)
165
- uri.port == 80 || uri.port == 443 ? "#{uri.scheme}://#{uri.host}" : "#{uri.scheme}://#{uri.host}:#{uri.port}"
166
- end
167
-
168
- def get_host_name
169
- WebDriver.host_name_by_full_url(get_url)
170
- end
171
-
172
- def remove_event(event_name)
173
- execute_javascript("jQuery(document).unbind('#{event_name}');")
174
- end
175
-
176
- def remove_class_by_jquery(selector, class_name)
177
- execute_javascript("$(#{dom_element_by_xpath(selector)}).removeClass('#{class_name}');")
178
- end
179
-
180
- def add_class_by_jquery(selector, class_name)
181
- execute_javascript("$(#{dom_element_by_xpath(selector)}).addClass('#{class_name}');")
182
- end
183
-
184
164
  # Perform drag'n'drop action in one element (for example on big canvas area)
185
165
  # for drag'n'drop one whole element use 'drag_and_drop_by'
186
166
  # ==== Attributes
@@ -229,10 +209,10 @@ module OnlyofficeWebdriverWrapper
229
209
  def open_dropdown_selector(xpath_name, horizontal_shift = 30, vertical_shift = 0)
230
210
  element = get_element(xpath_name)
231
211
  if @browser == :firefox || @browser == :safari
232
- set_style_attribute(xpath_name + '/button', 'display', 'none')
212
+ set_style_attribute("#{xpath_name}/button", 'display', 'none')
233
213
  set_style_attribute(xpath_name, 'display', 'inline')
234
214
  element.click
235
- set_style_attribute(xpath_name + '/button', 'display', 'inline-block')
215
+ set_style_attribute("#{xpath_name}/button", 'display', 'inline-block')
236
216
  set_style_attribute(xpath_name, 'display', 'block')
237
217
  else
238
218
  @driver.action.move_to(element, horizontal_shift, vertical_shift).click.perform
@@ -262,9 +242,10 @@ module OnlyofficeWebdriverWrapper
262
242
  end
263
243
 
264
244
  def element_present?(xpath_name)
265
- if xpath_name.is_a?(PageObject::Elements::Element)
245
+ case xpath_name
246
+ when PageObject::Elements::Element
266
247
  xpath_name.present?
267
- elsif xpath_name.is_a?(Selenium::WebDriver::Element)
248
+ when Selenium::WebDriver::Element
268
249
  xpath_name.displayed?
269
250
  else
270
251
  @driver.find_element(:xpath, xpath_name)
@@ -351,14 +332,12 @@ module OnlyofficeWebdriverWrapper
351
332
  # @param [String] xpath_name name of current xpath
352
333
  def select_frame(xpath_name = '//iframe', count_of_frames = 1)
353
334
  (0...count_of_frames).each do
354
- begin
355
- frame = @driver.find_element(:xpath, xpath_name)
356
- @driver.switch_to.frame frame
357
- rescue Selenium::WebDriver::Error::NoSuchElementError
358
- OnlyofficeLoggerHelper.log('Raise NoSuchElementError in the select_frame method')
359
- rescue Exception => e
360
- webdriver_error("Raise unkwnown exception: #{e}")
361
- end
335
+ frame = @driver.find_element(:xpath, xpath_name)
336
+ @driver.switch_to.frame frame
337
+ rescue Selenium::WebDriver::Error::NoSuchElementError
338
+ OnlyofficeLoggerHelper.log('Raise NoSuchElementError in the select_frame method')
339
+ rescue Exception => e
340
+ webdriver_error("Raise unkwnown exception: #{e}")
362
341
  end
363
342
  end
364
343
 
@@ -390,16 +369,6 @@ module OnlyofficeWebdriverWrapper
390
369
  @driver.find_elements(:xpath, xpath_several_elements).map { |element| element.text unless element.text == '' }.compact
391
370
  end
392
371
 
393
- def set_parameter(xpath, attribute, attribute_value)
394
- execute_javascript("document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext()." \
395
- "#{attribute}=\"#{attribute_value}\";")
396
- end
397
-
398
- def remove_attribute(xpath, attribute)
399
- execute_javascript("document.evaluate(\"#{xpath}\",document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)." \
400
- "singleNodeValue.removeAttribute('#{attribute}');")
401
- end
402
-
403
372
  def select_combo_box(xpath_name, select_value, select_by = :value)
404
373
  wait_until_element_visible(xpath_name)
405
374
  option = Selenium::WebDriver::Support::Select.new(get_element(xpath_name))
@@ -439,11 +408,6 @@ module OnlyofficeWebdriverWrapper
439
408
  full_file_name
440
409
  end
441
410
 
442
- def service_unavailable?
443
- source = get_page_source
444
- source.include?('Error 503')
445
- end
446
-
447
411
  # Perform cleanup if something went wrong during tests
448
412
  # @param forced [True, False] should cleanup run in all cases
449
413
  def self.clean_up(forced = false)
@@ -40,5 +40,24 @@ module OnlyofficeWebdriverWrapper
40
40
  end
41
41
  0
42
42
  end
43
+
44
+ # Set element attribute
45
+ # @param xpath [String] element to select
46
+ # @param attribute [String] attribute to set
47
+ # @param attribute_value [String] value of attribute
48
+ # @return [String] result of execution
49
+ def set_attribute(xpath, attribute, attribute_value)
50
+ execute_javascript("#{dom_element_by_xpath(xpath)}.#{attribute}=\"#{attribute_value}\";")
51
+ end
52
+
53
+ alias set_parameter set_attribute
54
+
55
+ # Remove attribute of element
56
+ # @param xpath [String] xpath of element
57
+ # @param attribute [String] attribute to remove
58
+ # @return [String] result of execution
59
+ def remove_attribute(xpath, attribute)
60
+ execute_javascript("#{dom_element_by_xpath(xpath)}.removeAttribute('#{attribute}');")
61
+ end
43
62
  end
44
63
  end
@@ -28,8 +28,13 @@ module OnlyofficeWebdriverWrapper
28
28
  execute_javascript("document.evaluate('#{xpath_name}', document, null, XPathResult.ANY_TYPE, null).iterateNext().value=\"#{escaped_text}\";")
29
29
  end
30
30
 
31
+ # Get text in object by xpath
32
+ # @param xpath [String] xpath to get text
33
+ # @return [String] text in xpath
31
34
  def get_text_by_js(xpath)
32
- execute_javascript("return document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext().textContent")
35
+ text = execute_javascript("return #{dom_element_by_xpath(xpath)}.textContent")
36
+ text = execute_javascript("return #{dom_element_by_xpath(xpath)}.value") if text.empty?
37
+ text
33
38
  end
34
39
 
35
40
  # Calculate object size using Javascript
@@ -10,26 +10,23 @@ module OnlyofficeWebdriverWrapper
10
10
  nil
11
11
  end
12
12
 
13
- def set_style_parameter(xpath, attribute, attribute_value)
14
- execute_javascript("document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext()." \
15
- "style.#{attribute}=\"#{attribute_value}\"")
16
- end
17
-
13
+ # Set style attribute value of element
14
+ # @param xpath [String] xpath to set
15
+ # @param attribute [String] style param to set
16
+ # @param attribute_value [String] attribute value to set
17
+ # @return [String] result of execution
18
18
  def set_style_attribute(xpath, attribute, attribute_value)
19
- execute_javascript("document.evaluate('#{xpath}',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)." \
20
- "singleNodeValue.style.#{attribute}=\"#{attribute_value}\"")
19
+ execute_javascript("#{dom_element_by_xpath(xpath)}.style.#{attribute}=\"#{attribute_value}\"")
21
20
  end
22
21
 
22
+ alias set_style_parameter set_style_attribute
23
+
23
24
  def set_style_show_by_xpath(xpath, move_to_center = false)
24
- xpath = xpath.tr("'", '"')
25
- execute_javascript('document.evaluate( \'' + xpath.to_s +
26
- '\' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.style.display = "block";')
25
+ execute_javascript("#{dom_element_by_xpath(xpath)}.style.display = 'block';")
27
26
  return unless move_to_center
28
27
 
29
- execute_javascript('document.evaluate( \'' + xpath.to_s +
30
- '\' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.style.left = "410px";')
31
- execute_javascript('document.evaluate( \'' + xpath.to_s +
32
- '\' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.style.top = "260px";')
28
+ execute_javascript("#{dom_element_by_xpath(xpath)}.style.left = '410px';")
29
+ execute_javascript("#{dom_element_by_xpath(xpath)}.style.top = '260px';")
33
30
  end
34
31
  end
35
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onlyoffice_webdriver_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ONLYOFFICE
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-07-03 00:00:00.000000000 Z
14
+ date: 2020-09-03 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: headless
@@ -31,58 +31,58 @@ dependencies:
31
31
  name: onlyoffice_file_helper
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - "~>"
34
+ - - '='
35
35
  - !ruby/object:Gem::Version
36
- version: '0.1'
36
+ version: 0.3.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - "~>"
41
+ - - '='
42
42
  - !ruby/object:Gem::Version
43
- version: '0.1'
43
+ version: 0.3.0
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: onlyoffice_logger_helper
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - "~>"
48
+ - - '='
49
49
  - !ruby/object:Gem::Version
50
- version: '1'
50
+ version: 1.0.3
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - "~>"
55
+ - - '='
56
56
  - !ruby/object:Gem::Version
57
- version: '1'
57
+ version: 1.0.3
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: onlyoffice_s3_wrapper
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - "~>"
62
+ - - '='
63
63
  - !ruby/object:Gem::Version
64
- version: '0.1'
64
+ version: 0.1.2
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - "~>"
69
+ - - '='
70
70
  - !ruby/object:Gem::Version
71
- version: '0.1'
71
+ version: 0.1.2
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: page-object
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - "~>"
76
+ - - '='
77
77
  - !ruby/object:Gem::Version
78
- version: '2'
78
+ version: 2.2.6
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - "~>"
83
+ - - '='
84
84
  - !ruby/object:Gem::Version
85
- version: '2'
85
+ version: 2.2.6
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: selenium-webdriver
88
88
  requirement: !ruby/object:Gem::Requirement
@@ -101,30 +101,114 @@ dependencies:
101
101
  name: watir
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - "~>"
104
+ - - '='
105
105
  - !ruby/object:Gem::Version
106
- version: '6'
106
+ version: 6.17.0
107
107
  type: :runtime
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - "~>"
111
+ - - '='
112
+ - !ruby/object:Gem::Version
113
+ version: 6.17.0
114
+ - !ruby/object:Gem::Dependency
115
+ name: codecov
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - '='
119
+ - !ruby/object:Gem::Version
120
+ version: 0.2.9
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - '='
126
+ - !ruby/object:Gem::Version
127
+ version: 0.2.9
128
+ - !ruby/object:Gem::Dependency
129
+ name: overcommit
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - '='
133
+ - !ruby/object:Gem::Version
134
+ version: 0.55.0
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - '='
112
140
  - !ruby/object:Gem::Version
113
- version: '6'
141
+ version: 0.55.0
114
142
  - !ruby/object:Gem::Dependency
115
143
  name: rake
116
144
  requirement: !ruby/object:Gem::Requirement
117
145
  requirements:
118
- - - "~>"
146
+ - - '='
119
147
  - !ruby/object:Gem::Version
120
- version: '13.0'
148
+ version: 13.0.1
121
149
  type: :development
122
150
  prerelease: false
123
151
  version_requirements: !ruby/object:Gem::Requirement
124
152
  requirements:
125
- - - "~>"
153
+ - - '='
154
+ - !ruby/object:Gem::Version
155
+ version: 13.0.1
156
+ - !ruby/object:Gem::Dependency
157
+ name: rspec
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - '='
126
161
  - !ruby/object:Gem::Version
127
- version: '13.0'
162
+ version: 3.9.0
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - '='
168
+ - !ruby/object:Gem::Version
169
+ version: 3.9.0
170
+ - !ruby/object:Gem::Dependency
171
+ name: rubocop
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - '='
175
+ - !ruby/object:Gem::Version
176
+ version: 0.90.0
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - '='
182
+ - !ruby/object:Gem::Version
183
+ version: 0.90.0
184
+ - !ruby/object:Gem::Dependency
185
+ name: rubocop-performance
186
+ requirement: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - '='
189
+ - !ruby/object:Gem::Version
190
+ version: 1.7.1
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - '='
196
+ - !ruby/object:Gem::Version
197
+ version: 1.7.1
198
+ - !ruby/object:Gem::Dependency
199
+ name: rubocop-rspec
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - '='
203
+ - !ruby/object:Gem::Version
204
+ version: 1.43.2
205
+ type: :development
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - '='
210
+ - !ruby/object:Gem::Version
211
+ version: 1.43.2
128
212
  description: ONLYOFFICE Webdriver Wrapper Gem. Used in QA
129
213
  email:
130
214
  - shockwavenn@gmail.com
@@ -142,6 +226,7 @@ files:
142
226
  - lib/onlyoffice_webdriver_wrapper/helpers/firefox_helper/save_to_disk_files.list
143
227
  - lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb
144
228
  - lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/headless_screenshot_patch.rb
229
+ - lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/headless_video_recorder.rb
145
230
  - lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/real_display_tools.rb
146
231
  - lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/ruby_helper.rb
147
232
  - lib/onlyoffice_webdriver_wrapper/helpers/os_helper.rb
@@ -179,7 +264,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
264
  requirements:
180
265
  - - ">="
181
266
  - !ruby/object:Gem::Version
182
- version: '0'
267
+ version: '2.5'
183
268
  required_rubygems_version: !ruby/object:Gem::Requirement
184
269
  requirements:
185
270
  - - ">="