Class: OnlyofficeWebdriverWrapper::HeadlessHelper

Inherits:
Object
  • Object
show all
Includes:
HeadlessVideoRecorder, RealDisplayTools, RubyHelper
Defined in:
lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb

Overview

Class for using headless gem

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RubyHelper

#debug?, #os_64_bit?

Methods included from RealDisplayTools

#real_display_connected?, #xrandr_result

Methods included from HeadlessVideoRecorder

#recorded_video_file, #start_capture, #stop_capture

Constructor Details

#initialize(resolution_x: 1680, resolution_y: 1050, record_video: true) ⇒ HeadlessHelper

Returns a new instance of HeadlessHelper.



25
26
27
28
29
30
31
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 25

def initialize(resolution_x: 1680,
               resolution_y: 1050,
               record_video: true)
  @resolution_x = resolution_x
  @resolution_y = resolution_y
  @record_video = record_video
end

Instance Attribute Details

#headless_instanceHeadless

Returns instance of headless object.

Returns:

  • (Headless)

    instance of headless object



17
18
19
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 17

def headless_instance
  @headless_instance
end

#record_videoTrue, False (readonly)

Returns is video should be recorded.

Returns:

  • (True, False)

    is video should be recorded



23
24
25
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 23

def record_video
  @record_video
end

#resolution_xInteger

Returns x resolution of virtual screen.

Returns:

  • (Integer)

    x resolution of virtual screen



19
20
21
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 19

def resolution_x
  @resolution_x
end

#resolution_yInteger

Returns y resolution of virtual screen.

Returns:

  • (Integer)

    y resolution of virtual screen



21
22
23
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 21

def resolution_y
  @resolution_y
end

Instance Method Details

#running?Boolean

Check if headless session currently running

Returns:

  • (Boolean)

    result of this check



82
83
84
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 82

def running?
  !headless_instance.nil?
end

#should_start?True, False

Check if should start headless

Returns:

  • (True, False)

    result



35
36
37
38
39
40
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 35

def should_start?
  return false if debug?
  return false if OSHelper.mac?

  true
end

#startvoid

This method returns an undefined value.

Start headless session



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 44

def start
  create_session = if real_display_connected?
                     should_start?
                   else
                     true
                   end
  return unless create_session

  OnlyofficeLoggerHelper.log('Starting Headless Session')
  begin
    @headless_instance = Headless.new(reuse: false,
                                      destroy_at_exit: true,
                                      dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24",
                                      video: { provider: :ffmpeg })
  rescue StandardError => e
    OnlyofficeLoggerHelper.log("xvfb not started with problem #{e}")
    WebDriver.clean_up(true)
    @headless_instance = Headless.new(reuse: false,
                                      destroy_at_exit: true,
                                      dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24",
                                      video: { provider: :ffmpeg })
  end
  headless_instance.start
  start_capture
end

#stopvoid

This method returns an undefined value.

Stop current headless session



72
73
74
75
76
77
78
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 72

def stop
  return unless running?

  OnlyofficeLoggerHelper.log('Stopping Headless Session')
  stop_capture
  headless_instance.destroy
end

#take_screenshot(scr_path = '/tmp/screenshot.png') ⇒ void

This method returns an undefined value.

Take a screenshot of current headless session

Parameters:

  • scr_path (String) (defaults to: '/tmp/screenshot.png')

    Path to store screenshot



89
90
91
92
93
94
# File 'lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb', line 89

def take_screenshot(scr_path = '/tmp/screenshot.png')
  return unless running?

  headless_instance.take_screenshot(scr_path)
  OnlyofficeLoggerHelper.log("Took Screenshot to file: #{scr_path}")
end