onlyoffice_webdriver_wrapper 0.5.0 → 0.7.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/headless_helper.rb +14 -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 +8 -8
- metadata +37 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a21d9eaf5674c09425184631dd79d31f8d36cb2977e3d7dd309fe938d54603b9
|
4
|
+
data.tar.gz: a807c1805c6cfb6197692efdc4947081b02589ba923f30a058eeec80759e75a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25a0dac52bc614e8f5ee863825e105879b3c6db71451c59c8f8b05dadaecbbf121928083793cf1d2af24ab870882a9f351731637627bbc076b8d5f1f3dd31ae0
|
7
|
+
data.tar.gz: d5037066d18d20f9b82a86ed42de5b60ab2202bddf93304e211e5d6fcb9f2679c9a815391c3b6526a122196060cbf7a23d572e2b434b7c9ce8905afdefb58ea2
|
Binary file
|
Binary file
|
@@ -4,10 +4,12 @@ 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
|
13
15
|
# @return [Headless] instance of headless object
|
@@ -16,10 +18,15 @@ module OnlyofficeWebdriverWrapper
|
|
16
18
|
attr_accessor :resolution_x
|
17
19
|
# @return [Integer] y resolution of virtual screen
|
18
20
|
attr_accessor :resolution_y
|
21
|
+
# @return [True, False] is video should be recorded
|
22
|
+
attr_reader :record_video
|
19
23
|
|
20
|
-
def initialize(resolution_x
|
24
|
+
def initialize(resolution_x: 1680,
|
25
|
+
resolution_y: 1050,
|
26
|
+
record_video: true)
|
21
27
|
@resolution_x = resolution_x
|
22
28
|
@resolution_y = resolution_y
|
29
|
+
@record_video = record_video
|
23
30
|
end
|
24
31
|
|
25
32
|
# Check if should start headless
|
@@ -43,21 +50,25 @@ module OnlyofficeWebdriverWrapper
|
|
43
50
|
begin
|
44
51
|
@headless_instance = Headless.new(reuse: false,
|
45
52
|
destroy_at_exit: true,
|
46
|
-
dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24"
|
53
|
+
dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24",
|
54
|
+
video: { provider: :ffmpeg })
|
47
55
|
rescue Exception => e
|
48
56
|
OnlyofficeLoggerHelper.log("xvfb not started with problem #{e}")
|
49
57
|
WebDriver.clean_up(true)
|
50
58
|
@headless_instance = Headless.new(reuse: false,
|
51
59
|
destroy_at_exit: true,
|
52
|
-
dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24"
|
60
|
+
dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24",
|
61
|
+
video: { provider: :ffmpeg })
|
53
62
|
end
|
54
63
|
headless_instance.start
|
64
|
+
start_capture
|
55
65
|
end
|
56
66
|
|
57
67
|
def stop
|
58
68
|
return unless running?
|
59
69
|
|
60
70
|
OnlyofficeLoggerHelper.log('Stopping Headless Session')
|
71
|
+
stop_capture
|
61
72
|
headless_instance.destroy
|
62
73
|
end
|
63
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
|
@@ -56,20 +56,20 @@ module OnlyofficeWebdriverWrapper
|
|
56
56
|
attr_accessor :headless
|
57
57
|
# @return [Net::HTTP::Proxy] connection proxy
|
58
58
|
attr_accessor :proxy
|
59
|
+
# @return [True, False] should video be recorded
|
60
|
+
attr_reader :record_video
|
59
61
|
|
60
|
-
def initialize(browser = :firefox,
|
61
|
-
_remote_server = nil,
|
62
|
-
device: :desktop_linux,
|
63
|
-
proxy: nil)
|
62
|
+
def initialize(browser = :firefox, params = {})
|
64
63
|
raise WebdriverSystemNotSupported, 'Your OS is not 64 bit. It is not supported' unless os_64_bit?
|
65
64
|
|
66
|
-
@device = device
|
67
|
-
@
|
65
|
+
@device = params.fetch(:device, :desktop_linux)
|
66
|
+
@record_video = params.fetch(:record_video, true)
|
67
|
+
@headless = HeadlessHelper.new(record_video: record_video)
|
68
68
|
@headless.start
|
69
69
|
|
70
70
|
@download_directory = Dir.mktmpdir('webdriver-download')
|
71
|
-
@browser = browser
|
72
|
-
@proxy = proxy
|
71
|
+
@browser = params.fetch(:browser, browser)
|
72
|
+
@proxy = params[:proxy]
|
73
73
|
case browser
|
74
74
|
when :firefox
|
75
75
|
@driver = start_firefox_driver
|
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.7.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-11-18 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: headless
|
@@ -47,28 +47,28 @@ dependencies:
|
|
47
47
|
requirements:
|
48
48
|
- - '='
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: 1.0
|
50
|
+
version: 1.1.0
|
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.0
|
57
|
+
version: 1.1.0
|
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.
|
64
|
+
version: 0.3.0
|
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.
|
71
|
+
version: 0.3.0
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: page-object
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,112 +103,112 @@ dependencies:
|
|
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
112
|
- !ruby/object:Gem::Version
|
113
|
-
version: 6.
|
113
|
+
version: 6.17.0
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: codecov
|
116
116
|
requirement: !ruby/object:Gem::Requirement
|
117
117
|
requirements:
|
118
|
-
- -
|
118
|
+
- - "~>"
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version: 0
|
120
|
+
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
123
|
version_requirements: !ruby/object:Gem::Requirement
|
124
124
|
requirements:
|
125
|
-
- -
|
125
|
+
- - "~>"
|
126
126
|
- !ruby/object:Gem::Version
|
127
|
-
version: 0
|
127
|
+
version: '0'
|
128
128
|
- !ruby/object:Gem::Dependency
|
129
129
|
name: overcommit
|
130
130
|
requirement: !ruby/object:Gem::Requirement
|
131
131
|
requirements:
|
132
|
-
- -
|
132
|
+
- - "~>"
|
133
133
|
- !ruby/object:Gem::Version
|
134
|
-
version: 0
|
134
|
+
version: '0'
|
135
135
|
type: :development
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - "~>"
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version: 0
|
141
|
+
version: '0'
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
143
|
name: rake
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
145
145
|
requirements:
|
146
|
-
- -
|
146
|
+
- - "~>"
|
147
147
|
- !ruby/object:Gem::Version
|
148
|
-
version: 13
|
148
|
+
version: '13'
|
149
149
|
type: :development
|
150
150
|
prerelease: false
|
151
151
|
version_requirements: !ruby/object:Gem::Requirement
|
152
152
|
requirements:
|
153
|
-
- -
|
153
|
+
- - "~>"
|
154
154
|
- !ruby/object:Gem::Version
|
155
|
-
version: 13
|
155
|
+
version: '13'
|
156
156
|
- !ruby/object:Gem::Dependency
|
157
157
|
name: rspec
|
158
158
|
requirement: !ruby/object:Gem::Requirement
|
159
159
|
requirements:
|
160
|
-
- -
|
160
|
+
- - "~>"
|
161
161
|
- !ruby/object:Gem::Version
|
162
|
-
version: 3
|
162
|
+
version: '3'
|
163
163
|
type: :development
|
164
164
|
prerelease: false
|
165
165
|
version_requirements: !ruby/object:Gem::Requirement
|
166
166
|
requirements:
|
167
|
-
- -
|
167
|
+
- - "~>"
|
168
168
|
- !ruby/object:Gem::Version
|
169
|
-
version: 3
|
169
|
+
version: '3'
|
170
170
|
- !ruby/object:Gem::Dependency
|
171
171
|
name: rubocop
|
172
172
|
requirement: !ruby/object:Gem::Requirement
|
173
173
|
requirements:
|
174
|
-
- -
|
174
|
+
- - "~>"
|
175
175
|
- !ruby/object:Gem::Version
|
176
|
-
version:
|
176
|
+
version: '1'
|
177
177
|
type: :development
|
178
178
|
prerelease: false
|
179
179
|
version_requirements: !ruby/object:Gem::Requirement
|
180
180
|
requirements:
|
181
|
-
- -
|
181
|
+
- - "~>"
|
182
182
|
- !ruby/object:Gem::Version
|
183
|
-
version:
|
183
|
+
version: '1'
|
184
184
|
- !ruby/object:Gem::Dependency
|
185
185
|
name: rubocop-performance
|
186
186
|
requirement: !ruby/object:Gem::Requirement
|
187
187
|
requirements:
|
188
|
-
- -
|
188
|
+
- - "~>"
|
189
189
|
- !ruby/object:Gem::Version
|
190
|
-
version: 1
|
190
|
+
version: '1'
|
191
191
|
type: :development
|
192
192
|
prerelease: false
|
193
193
|
version_requirements: !ruby/object:Gem::Requirement
|
194
194
|
requirements:
|
195
|
-
- -
|
195
|
+
- - "~>"
|
196
196
|
- !ruby/object:Gem::Version
|
197
|
-
version: 1
|
197
|
+
version: '1'
|
198
198
|
- !ruby/object:Gem::Dependency
|
199
199
|
name: rubocop-rspec
|
200
200
|
requirement: !ruby/object:Gem::Requirement
|
201
201
|
requirements:
|
202
|
-
- -
|
202
|
+
- - "~>"
|
203
203
|
- !ruby/object:Gem::Version
|
204
|
-
version:
|
204
|
+
version: '2'
|
205
205
|
type: :development
|
206
206
|
prerelease: false
|
207
207
|
version_requirements: !ruby/object:Gem::Requirement
|
208
208
|
requirements:
|
209
|
-
- -
|
209
|
+
- - "~>"
|
210
210
|
- !ruby/object:Gem::Version
|
211
|
-
version:
|
211
|
+
version: '2'
|
212
212
|
description: ONLYOFFICE Webdriver Wrapper Gem. Used in QA
|
213
213
|
email:
|
214
214
|
- shockwavenn@gmail.com
|
@@ -226,6 +226,7 @@ files:
|
|
226
226
|
- lib/onlyoffice_webdriver_wrapper/helpers/firefox_helper/save_to_disk_files.list
|
227
227
|
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb
|
228
228
|
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/headless_screenshot_patch.rb
|
229
|
+
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/headless_video_recorder.rb
|
229
230
|
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/real_display_tools.rb
|
230
231
|
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/ruby_helper.rb
|
231
232
|
- lib/onlyoffice_webdriver_wrapper/helpers/os_helper.rb
|