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 +4 -4
- data/lib/onlyoffice_webdriver_wrapper/helpers/bin/chromedriver +0 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/bin/chromedriver_mac +0 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper.rb +0 -1
- data/lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb +17 -3
- data/lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/headless_video_recorder.rb +36 -0
- data/lib/onlyoffice_webdriver_wrapper/version.rb +1 -1
- data/lib/onlyoffice_webdriver_wrapper/webdriver.rb +21 -57
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_attributes_helper.rb +19 -0
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb +6 -1
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_style_helper.rb +11 -14
- metadata +112 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01e7c8a03fdec74828c4f660d287be5729f56f29ce49b91f74005e29a666942e
|
4
|
+
data.tar.gz: bd3f969c07b3c5043b6329c07fff8e02d9576dfa373eef527af6738db1be9acd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5a02e944fd3b617209598f54274dcec25776695ed050576e9f7b92371de8c8bb72632ef8460c1bf0390a338f0e910f8610d590b59b449f29c08a93618440e99
|
7
|
+
data.tar.gz: dd7151ef729280ba654f37a5c4842f62b10c3d6c4b47f64df0e02e9a0d9658ad1a8c7c6c8ad4e44b2b9a87ea2a1e4092913ee290165006dd5ad00745f7bbd755
|
Binary file
|
Binary file
|
@@ -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,
|
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
|
@@ -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
|
-
|
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
|
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 =
|
85
|
+
url = "http://#{url}" unless url.include?('http') || url.include?('file://')
|
84
86
|
loop do
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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
|
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
|
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
|
-
|
245
|
+
case xpath_name
|
246
|
+
when PageObject::Elements::Element
|
266
247
|
xpath_name.present?
|
267
|
-
|
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
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
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
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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("
|
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 =
|
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(
|
30
|
-
|
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.
|
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-
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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: '
|
267
|
+
version: '2.5'
|
183
268
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
269
|
requirements:
|
185
270
|
- - ">="
|