Class: Applitools::Selenium::ViewportSize
- Inherits:
-
Object
- Object
- Applitools::Selenium::ViewportSize
- Defined in:
- lib/applitools/selenium/viewport_size.rb
Constant Summary collapse
- JS_GET_VIEWPORT_SIZE =
" return (function() {\n var height = undefined;\n var width = undefined;\n if (window.innerHeight) {height = window.innerHeight;}\n else if (document.documentElement && document.documentElement.clientHeight)\n {height = document.documentElement.clientHeight;}\n else { var b = document.getElementsByTagName('body')[0];\n if (b.clientHeight) {height = b.clientHeight;}\n };\n\n if (window.innerWidth) {width = window.innerWidth;}\n else if (document.documentElement && document.documentElement.clientWidth)\n {width = document.documentElement.clientWidth;}\n else { var b = document.getElementsByTagName('body')[0];\n if (b.clientWidth) {width = b.clientWidth;}\n };\n return [width, height];\n }());\n".freeze
- VERIFY_SLEEP_PERIOD =
1- VERIFY_RETRIES =
3- BROWSER_SIZE_CALCULATION_RETRIES =
2
Class Method Summary collapse
Instance Method Summary collapse
- #browser_size ⇒ Object
- #browser_to_upper_left_corner ⇒ Object
-
#extract_viewport_size ⇒ Applitools::Base::Dimension
(also: #viewport_size, #extract_viewport_from_browser)
Extract the viewport size.
- #extract_viewport_size! ⇒ Object (also: #extract_viewport_from_browser!)
-
#initialize(driver, dimension = nil) ⇒ ViewportSize
constructor
Initialize a Applitools::Selenium::ViewportSize instance.
- #resize_browser(other) ⇒ Object
-
#set ⇒ Object
Set the viewport size.
- #size ⇒ Object
- #to_hash ⇒ Object
Constructor Details
#initialize(driver, dimension = nil) ⇒ ViewportSize
Initialize a Applitools::Selenium::ViewportSize instance.
32 33 34 35 |
# File 'lib/applitools/selenium/viewport_size.rb', line 32 def initialize(driver, dimension = nil) @driver = driver @dimension = dimension.nil? ? nil : setup_dimension(dimension) end |
Class Method Details
.required_browser_size(options) ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/applitools/selenium/viewport_size.rb', line 156 def required_browser_size() unless [:actual_browser_size].is_a?(Applitools::Base::Dimension) && [:actual_viewport_size].is_a?(Applitools::Base::Dimension) && [:required_viewport_size].is_a?(Applitools::Base::Dimension) raise ArgumentError, "expected #{options.inspect}:#{options.class} to be a hash with keys" \ ' :actual_browser_size, :actual_viewport_size, :required_viewport_size' end [:actual_browser_size] - [:actual_viewport_size] + [:required_viewport_size] end |
Instance Method Details
#browser_size ⇒ Object
96 97 98 |
# File 'lib/applitools/selenium/viewport_size.rb', line 96 def browser_size Applitools::Base::Dimension.for @driver.manage.window.size end |
#browser_to_upper_left_corner ⇒ Object
104 105 106 107 108 |
# File 'lib/applitools/selenium/viewport_size.rb', line 104 def browser_to_upper_left_corner @driver.manage.window.position = Selenium::WebDriver::Point.new(0, 0) rescue Selenium::WebDriver::Error::UnsupportedOperationError => e Applitools::EyesLogger.warn "Unsupported operation error: (#{e.message})" end |
#extract_viewport_size ⇒ Applitools::Base::Dimension Also known as: viewport_size, extract_viewport_from_browser
Extract the viewport size.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/applitools/selenium/viewport_size.rb', line 50 def width = nil height = nil begin width, height = @driver.execute_script(JS_GET_VIEWPORT_SIZE) rescue => e Applitools::EyesLogger.error "Failed extracting viewport size using JavaScript: (#{e.message})" end if width.nil? || height.nil? Applitools::EyesLogger.info 'Using window size as viewport size.' width, height = *browser_size.values.map(&:ceil) if @driver.landscape_orientation? && height > width width, height = height, width end end Applitools::Base::Dimension.new(width, height) end |
#extract_viewport_size! ⇒ Object Also known as: extract_viewport_from_browser!
41 42 43 |
# File 'lib/applitools/selenium/viewport_size.rb', line 41 def @dimension = end |
#resize_browser(other) ⇒ Object
100 101 102 |
# File 'lib/applitools/selenium/viewport_size.rb', line 100 def resize_browser(other) @driver.manage.window.size = other end |
#set ⇒ Object
Set the viewport size.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/applitools/selenium/viewport_size.rb', line 75 def set Applitools::EyesLogger.debug "Set viewport size #{@dimension}" # Before resizing the window, set its position to the upper left corner (otherwise, there might not be enough # "space" below/next to it and the operation won't be successful). browser_to_upper_left_corner browser_size_calculation_count = 0 while browser_size_calculation_count < BROWSER_SIZE_CALCULATION_RETRIES unless resize_attempt raise Applitools::TestFailedError.new 'Failed to set browser size!' \ " (current size: #{browser_size})" end browser_size_calculation_count += 1 if == size Applitools::EyesLogger.debug "Actual viewport size #{viewport_size}" return end end raise Applitools::TestFailedError.new 'Failed to set viewport size' end |
#size ⇒ Object
37 38 39 |
# File 'lib/applitools/selenium/viewport_size.rb', line 37 def size @dimension end |
#to_hash ⇒ Object
110 111 112 |
# File 'lib/applitools/selenium/viewport_size.rb', line 110 def to_hash @dimension.to_hash end |