onlyoffice_webdriver_wrapper 0.5.0 → 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: 2132850b7105fa563d909e4c82575b19f525603fba19e23a241e743ab2ebf3ef
4
- data.tar.gz: b9f5a3a4414ac4b4dc56567593f99c6c4f39ecc494cde8820c09c04e06e3fa1e
3
+ metadata.gz: 01e7c8a03fdec74828c4f660d287be5729f56f29ce49b91f74005e29a666942e
4
+ data.tar.gz: bd3f969c07b3c5043b6329c07fff8e02d9576dfa373eef527af6738db1be9acd
5
5
  SHA512:
6
- metadata.gz: 48cb93139b5f22b4b1993240c6ba7297f886936844eced9f587547d4527083876d1d2065a4eafb34e4a05848fae1d1455e6f3cb3af204fb1c35b02e356b0f5b0
7
- data.tar.gz: bb5e042cda619d6ce3714094ed6b50d4369cb8fabe229fdaf33132fc21dc0a094e36d5df49c57a52a8a74301e379f3e90940c9a12ac012098afa12be2cec6c57
6
+ metadata.gz: e5a02e944fd3b617209598f54274dcec25776695ed050576e9f7b92371de8c8bb72632ef8460c1bf0390a338f0e910f8610d590b59b449f29c08a93618440e99
7
+ data.tar.gz: dd7151ef729280ba654f37a5c4842f62b10c3d6c4b47f64df0e02e9a0d9658ad1a8c7c6c8ad4e44b2b9a87ea2a1e4092913ee290165006dd5ad00745f7bbd755
@@ -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.6.0'
6
6
  end
7
7
  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.5.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-08-26 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
@@ -103,28 +103,28 @@ 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.2.9
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.2.9
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: overcommit
130
130
  requirement: !ruby/object:Gem::Requirement
@@ -173,14 +173,14 @@ dependencies:
173
173
  requirements:
174
174
  - - '='
175
175
  - !ruby/object:Gem::Version
176
- version: 0.89.1
176
+ version: 0.90.0
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: 0.90.0
184
184
  - !ruby/object:Gem::Dependency
185
185
  name: rubocop-performance
186
186
  requirement: !ruby/object:Gem::Requirement
@@ -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