Module: OnlyofficeWebdriverWrapper::WebdriverScreenshotHelper

Included in:
WebDriver
Defined in:
lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_screenshot_helper.rb

Overview

Working with screenshots

Instance Method Summary collapse

Instance Method Details

#get_screenshot(path_to_screenshot = "#{screenshot_folder}/#{StringHelper.generate_random_string}.png") ⇒ Object



29
30
31
32
33
34
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_screenshot_helper.rb', line 29

def get_screenshot(path_to_screenshot = "#{screenshot_folder}/#{StringHelper.generate_random_string}.png")
  screenshot_folder = File.dirname(path_to_screenshot)
  FileUtils.mkdir_p(screenshot_folder) unless File.directory?(screenshot_folder)
  @driver.save_screenshot(path_to_screenshot)
  OnlyofficeLoggerHelper.log("get_screenshot(#{path_to_screenshot})")
end

#get_screenshot_and_upload(path_to_screenshot = "#{screenshot_folder}/#{StringHelper.generate_random_string}.png") ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_screenshot_helper.rb', line 10

def get_screenshot_and_upload(path_to_screenshot = "#{screenshot_folder}/#{StringHelper.generate_random_string}.png")
  begin
    get_screenshot(path_to_screenshot)
    cloud_screenshot = OnlyofficeS3Wrapper::AmazonS3Wrapper.new.upload_file_and_make_public(path_to_screenshot, 'screenshots')
    File.delete(path_to_screenshot) if File.exist?(path_to_screenshot)
    OnlyofficeLoggerHelper.log("upload screenshot: #{cloud_screenshot}")
    return cloud_screenshot
  rescue Errno::ENOENT => e
    begin
      @driver.save_screenshot(path_to_screenshot)
      OnlyofficeLoggerHelper.log("Cant upload screenshot #{path_to_screenshot}. Error: #{e}")
    rescue Errno::ENOENT => e
      @driver.save_screenshot("tmp/#{File.basename(path_to_screenshot)}")
      OnlyofficeLoggerHelper.log("Upload screenshot to tmp/#{File.basename(path_to_screenshot)}. Error: #{e}")
    end
  end
  path_to_screenshot
end

#screenshot_folderString

Returns location of screenshot to take.

Returns:

  • (String)

    location of screenshot to take



6
7
8
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_screenshot_helper.rb', line 6

def screenshot_folder
  '/tmp/screenshot/WebdriverError'
end

#webdriver_screenshot(screenshot_name = SecureRandom.uuid) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_screenshot_helper.rb', line 36

def webdriver_screenshot(screenshot_name = SecureRandom.uuid)
  begin
    link = get_screenshot_and_upload("#{screenshot_folder}/#{screenshot_name}.png")
  rescue Exception => e
    OnlyofficeLoggerHelper.log("Error in get screenshot: #{e}. Trying to get headless screenshot")
    if @headless.headless_instance.nil?
      system_screenshot("/tmp/#{screenshot_name}.png")
      begin
        link = OnlyofficeS3Wrapper::AmazonS3Wrapper.new.upload_file_and_make_public("/tmp/#{screenshot_name}.png", 'screenshots')
      rescue Exception => e
        OnlyofficeLoggerHelper.log("Error in get screenshot: #{e}. System screenshot #{link}")
      end
    else
      @headless.take_screenshot("/tmp/#{screenshot_name}.png")
      begin
        link = OnlyofficeS3Wrapper::AmazonS3Wrapper.new.upload_file_and_make_public("/tmp/#{screenshot_name}.png", 'screenshots')
      rescue Exception => e
        OnlyofficeLoggerHelper.log("Error in get screenshot: #{e}. Headless screenshot #{link}")
      end
    end
  end
  "screenshot: #{link}"
end