Module: Browser

Defined in:
lib/utils/browser.rb

Overview

Created on 02 Aug 2018 @author: Andy Perrett

Versions: 1.0 - Baseline

browser_setup.rb - a browser functions

Class Method Summary collapse

Class Method Details

.bObject

define browser value



103
104
105
# File 'lib/utils/browser.rb', line 103

def self.b
  browser = @browser
end

.browser_full_screenObject

makes the browser full screen.



95
96
97
98
99
100
# File 'lib/utils/browser.rb', line 95

def self.browser_full_screen
  screen_width = @browser.execute_script('return screen.width;')
  screen_height = @browser.execute_script('return screen.height;')
  @browser.driver.manage.window.resize_to(screen_width, screen_height)
  @browser.driver.manage.window.move_to(0, 0)
end

.browser_versionObject

Check browser version



108
109
110
111
112
# File 'lib/utils/browser.rb', line 108

def self.browser_version
  browserversion = @browser.driver.capabilities[:version]
rescue StandardError
  browserversion = 'No Browser version'
end

.check_save_screenshot(full_sc_dirname, screen_shot) ⇒ Object

create screenshot filename and save the screenshot if the test has failed or if explictly required



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/utils/browser.rb', line 116

def self.check_save_screenshot(full_sc_dirname, screen_shot)
  if ($currentTestFail || screen_shot)
    time = Time.now.strftime('%H%M')
    if ($currentTestFail)
      scFileName = full_sc_dirname + "/Test_step-#{$testStep}_Failed_"\
                                      "#{time}.png"
    else
      # file name will be teststep.png
      scFileName = full_sc_dirname + "/Test_step-#{$testStep}_#{time}.png"
    end

    # Screenshot capture for websites
    Browser.b.screenshot.save scFileName
    MyLog.log.info("Screenshot saved to: #{scFileName} \n")
    else
      MyLog.log.debug "No screenshot requested \n"
    end

  # if any issues with saving the screenshot then log a warning
  rescue StandardError => error
  # construct the error message from custom text and the actual system
  # error message (converted to a string).
  MyLog.log.warn("Error saving the screenshot: #{scFileName}   #{error.to_s}")
end

.chromeObject

chrome browser details



39
40
41
42
43
44
# File 'lib/utils/browser.rb', line 39

def self.chrome
  @browser = Watir::Browser.new :chrome, switches: %w[
    --acceptInsecureCerts-true --start-maximized --window-size=1920,1080
  ]
  browser_version
end

.chrome_headlessObject

chrome headless browser details



47
48
49
50
51
52
53
# File 'lib/utils/browser.rb', line 47

def self.chrome_headless
  @browser = Watir::Browser.new :chrome, switches: %w[
    --start-maximized --disable-gpu --headless --acceptInsecureCerts-true
    --no-sandbox --window-size=1920,1080
  ]
  browser_version
end

.firefoxObject

firefox browser details



56
57
58
59
60
61
62
63
# File 'lib/utils/browser.rb', line 56

def self.firefox
  caps = Selenium::WebDriver::Remote::Capabilities.firefox
  caps['acceptInsecureCerts'] = true
  driver = Selenium::WebDriver.for(:firefox, desired_capabilities: caps)
  @browser = Watir::Browser.new(driver)
  browser_full_screen
  browser_version
end

.firefox_headlessObject

firefox headless browser details



66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/utils/browser.rb', line 66

def self.firefox_headless
  caps = Selenium::WebDriver::Remote::Capabilities.firefox
  options = Selenium::WebDriver::Firefox::Options.new(args: ['-headless'])
  caps['acceptInsecureCerts'] = true
  driver = Selenium::WebDriver.for(:firefox, options: options,
                                  desired_capabilities: caps)
  @browser = Watir::Browser.new(driver)
  # makes the browser full screen.
  @browser.driver.manage.window.resize_to(1920, 1200)
  @browser.driver.manage.window.move_to(0, 0)
  browser_version
  # browser
end

.ieObject

ie browser details



81
82
83
84
85
# File 'lib/utils/browser.rb', line 81

def self.ie
  @browser = Watir::Browser.new :ie
  browser_full_screen
  browser_version
end

.open_browserObject

open_browser function



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/utils/browser.rb', line 11

def self.open_browser
  lc_browser_type = $browserType.downcase
  case lc_browser_type
  when 'chrome'
    chrome
  when 'chrome-headless'
    chrome_headless
  when 'firefox'
    firefox
  when 'firefox-headless'
    firefox_headless
  when 'ie'
    ie
  when 'safari'
    safari
  else
    MyLog.log.error "unable to open selected browser: #{lc_browser_type}"
    raise BrowserFailedOpen
  end
rescue BrowserFailedOpen => error
  # construct the error message from custom text and the actual system error
  # message (converted to a string)
  error_text = "Unable to open"\
                "the requested browser: #{lc_browser_type} " + error.to_s
  raise error_text
end

.safariObject

sarfari headless browser details



88
89
90
91
92
# File 'lib/utils/browser.rb', line 88

def self.safari
  @browser = Watir::Browser.new :safari
  browser_full_screen
  browser_version
end