onlyoffice_webdriver_wrapper 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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