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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2132850b7105fa563d909e4c82575b19f525603fba19e23a241e743ab2ebf3ef
4
- data.tar.gz: b9f5a3a4414ac4b4dc56567593f99c6c4f39ecc494cde8820c09c04e06e3fa1e
3
+ metadata.gz: a21d9eaf5674c09425184631dd79d31f8d36cb2977e3d7dd309fe938d54603b9
4
+ data.tar.gz: a807c1805c6cfb6197692efdc4947081b02589ba923f30a058eeec80759e75a6
5
5
  SHA512:
6
- metadata.gz: 48cb93139b5f22b4b1993240c6ba7297f886936844eced9f587547d4527083876d1d2065a4eafb34e4a05848fae1d1455e6f3cb3af204fb1c35b02e356b0f5b0
7
- data.tar.gz: bb5e042cda619d6ce3714094ed6b50d4369cb8fabe229fdaf33132fc21dc0a094e36d5df49c57a52a8a74301e379f3e90940c9a12ac012098afa12be2cec6c57
6
+ metadata.gz: 25a0dac52bc614e8f5ee863825e105879b3c6db71451c59c8f8b05dadaecbbf121928083793cf1d2af24ab870882a9f351731637627bbc076b8d5f1f3dd31ae0
7
+ data.tar.gz: d5037066d18d20f9b82a86ed42de5b60ab2202bddf93304e211e5d6fcb9f2679c9a815391c3b6526a122196060cbf7a23d572e2b434b7c9ce8905afdefb58ea2
@@ -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 = 1680, resolution_y = 1050)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OnlyofficeWebdriverWrapper
4
4
  module Version
5
- STRING = '0.5.0'
5
+ STRING = '0.7.0'
6
6
  end
7
7
  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
- @headless = HeadlessHelper.new
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.5.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-08-26 00:00:00.000000000 Z
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.3
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.3
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.1.2
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.1.2
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.16.5
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.16.5
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.2.8
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.2.8
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.55.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.55.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.0.1
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.0.1
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.9.0
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.9.0
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: 0.89.1
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: 0.89.1
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.7.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.7.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: 1.43.2
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: 1.43.2
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