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 =
<<-JS.freeze return (function() { var height = undefined; var width = undefined; if (window.innerHeight) {height = window.innerHeight;} else if (document.documentElement && document.documentElement.clientHeight) {height = document.documentElement.clientHeight;} else { var b = document.getElementsByTagName('body')[0]; if (b.clientHeight) {height = b.clientHeight;} }; if (window.innerWidth) {width = window.innerWidth;} else if (document.documentElement && document.documentElement.clientWidth) {width = document.documentElement.clientWidth;} else { var b = document.getElementsByTagName('body')[0]; if (b.clientWidth) {width = b.clientWidth;} }; return [width, height]; }()); JS
- 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 ⇒ Object (also: #viewport_size, #extract_viewport_from_browser)
- #extract_viewport_size! ⇒ Object (also: #extract_viewport_from_browser!)
-
#initialize(driver, dimension = nil) ⇒ ViewportSize
constructor
A new instance of ViewportSize.
- #resize_browser(other) ⇒ Object
- #set ⇒ Object
- #size ⇒ Object
- #to_hash ⇒ Object
Constructor Details
#initialize(driver, dimension = nil) ⇒ ViewportSize
Returns a new instance of ViewportSize.
28 29 30 31 |
# File 'lib/applitools/selenium/viewport_size.rb', line 28 def initialize(driver, dimension = nil) @driver = driver @dimension = dimension.nil? ? nil : setup_dimension(dimension) end |
Class Method Details
.required_browser_size(options) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/applitools/selenium/viewport_size.rb', line 146 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 #{.inspect}:#{.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
86 87 88 |
# File 'lib/applitools/selenium/viewport_size.rb', line 86 def browser_size Applitools::Base::Dimension.for @driver.manage.window.size end |
#browser_to_upper_left_corner ⇒ Object
94 95 96 97 98 |
# File 'lib/applitools/selenium/viewport_size.rb', line 94 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.})" end |
#extract_viewport_size ⇒ Object Also known as: viewport_size, extract_viewport_from_browser
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/applitools/selenium/viewport_size.rb', line 43 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.})" 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!
37 38 39 |
# File 'lib/applitools/selenium/viewport_size.rb', line 37 def @dimension = end |
#resize_browser(other) ⇒ Object
90 91 92 |
# File 'lib/applitools/selenium/viewport_size.rb', line 90 def resize_browser(other) @driver.manage.window.size = other end |
#set ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/applitools/selenium/viewport_size.rb', line 67 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 raise Applitools::TestFailedError.new 'Failed to set browser size!' \ " (current size: #{browser_size})" unless resize_attempt browser_size_calculation_count += 1 if == size Applitools::EyesLogger.debug "Actual viewport size #{}" return end end raise Applitools::TestFailedError.new 'Failed to set viewport size' end |
#size ⇒ Object
33 34 35 |
# File 'lib/applitools/selenium/viewport_size.rb', line 33 def size @dimension end |
#to_hash ⇒ Object
100 101 102 |
# File 'lib/applitools/selenium/viewport_size.rb', line 100 def to_hash @dimension.to_hash end |