eyes_core 3.16.15 → 3.16.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/applitools/appium/android_screenshot.rb +21 -0
- data/lib/applitools/appium/driver.rb +3 -2
- data/lib/applitools/appium/eyes.rb +16 -7
- data/lib/applitools/appium/ios_screenshot.rb +10 -0
- data/lib/applitools/appium/screenshot.rb +15 -0
- data/lib/applitools/appium/target.rb +168 -2
- data/lib/applitools/appium/utils.rb +16 -6
- data/lib/applitools/core/match_window_data.rb +1 -0
- data/lib/applitools/version.rb +1 -1
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b136d9d87a89f8d7de25d38d7a6597d4dce20866def4985ba735a39e7b6e3462
         | 
| 4 | 
            +
              data.tar.gz: 8d5861b1392c336a75ca393ac20224493cc7fd26e40ebee43951ff479ce8f63c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c504140d557d1aac4516873f7c65149e293c10cde3c28f43bfbb31eee608b3ed5743b75e07a3674b51fe8a4ccde5a004b46ec986721957f342549575be345bc8
         | 
| 7 | 
            +
              data.tar.gz: 53cff244c5b9290bf8baf58bb6f6d1e294183dc0f10097eb2c55273ca9301b31c6d0df21d97a1a404bd95835f5a5e5beb4b6b1afd095784703574154ca46c7d0
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require_relative './screenshot.rb'
         | 
| 2 | 
            +
            module Applitools
         | 
| 3 | 
            +
              module Appium
         | 
| 4 | 
            +
                class AndroidScreenshot < Applitools::Appium::Screenshot
         | 
| 5 | 
            +
                  def convert_region_location(region, from, to)
         | 
| 6 | 
            +
                    # converted_size = region.size.dup.scale_it!(1 / device_pixel_ratio)
         | 
| 7 | 
            +
                    # converted_location = region.location.dup.offset_negative(Applitools::Location.new(0, status_bar_height)).scale_it!(1 / device_pixel_ratio)
         | 
| 8 | 
            +
                    # Applitools::Region.from_location_size(converted_location, converted_size)
         | 
| 9 | 
            +
                    Applitools::Region.from_location_size(
         | 
| 10 | 
            +
                      convert_location(region.location, nil, nil),
         | 
| 11 | 
            +
                      region.size
         | 
| 12 | 
            +
                    ).scale_it!(1.to_f / device_pixel_ratio)
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  def convert_location(location, _from, _to)
         | 
| 16 | 
            +
                    location.offset_negative(Applitools::Location.new(0, status_bar_height))
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -2,10 +2,11 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Applitools::Appium
         | 
| 4 4 | 
             
              class Driver < Applitools::Selenium::Driver
         | 
| 5 | 
            -
                attr_accessor :appium_driver
         | 
| 6 5 | 
             
                def initialize(eyes, options)
         | 
| 7 | 
            -
                  self.appium_driver = options.delete(:appium_driver)
         | 
| 8 6 | 
             
                  super(eyes, options)
         | 
| 9 7 | 
             
                end
         | 
| 8 | 
            +
                module AppiumLib
         | 
| 9 | 
            +
                  extend self
         | 
| 10 | 
            +
                end
         | 
| 10 11 | 
             
              end
         | 
| 11 12 | 
             
            end
         | 
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: false
         | 
| 2 2 |  | 
| 3 3 | 
             
            class Applitools::Appium::Eyes < Applitools::Selenium::SeleniumEyes
         | 
| 4 | 
            +
              attr_accessor :status_bar_height
         | 
| 4 5 | 
             
              def perform_driver_settings_for_appium_driver
         | 
| 5 6 | 
             
                self.region_visibility_strategy = Applitools::Selenium::NopRegionVisibilityStrategy.new
         | 
| 6 7 | 
             
                self.force_driver_resolution_as_viewport_size = true
         | 
| @@ -11,6 +12,7 @@ class Applitools::Appium::Eyes < Applitools::Selenium::SeleniumEyes | |
| 11 12 | 
             
                self.dont_get_title = true
         | 
| 12 13 | 
             
                self.runner = Applitools::ClassicRunner.new
         | 
| 13 14 | 
             
                self.base_agent_id = "eyes.appium.ruby/#{Applitools::VERSION}".freeze
         | 
| 15 | 
            +
                self.status_bar_height = 0
         | 
| 14 16 | 
             
              end
         | 
| 15 17 |  | 
| 16 18 | 
             
              private :perform_driver_settings_for_appium_driver
         | 
| @@ -76,7 +78,7 @@ class Applitools::Appium::Eyes < Applitools::Selenium::SeleniumEyes | |
| 76 78 | 
             
                result = super do |screenshot|
         | 
| 77 79 | 
             
                  if scale_provider
         | 
| 78 80 | 
             
                    scaled_image = scale_provider.scale_image(screenshot.image)
         | 
| 79 | 
            -
                    self.screenshot =  | 
| 81 | 
            +
                    self.screenshot = screenshot_class.new(
         | 
| 80 82 | 
             
                      Applitools::Screenshot.from_image(
         | 
| 81 83 | 
             
                        case scaled_image
         | 
| 82 84 | 
             
                        when ChunkyPNG::Image
         | 
| @@ -86,7 +88,9 @@ class Applitools::Appium::Eyes < Applitools::Selenium::SeleniumEyes | |
| 86 88 | 
             
                        else
         | 
| 87 89 | 
             
                          raise Applitools::EyesError.new('Unknown image format after scale!')
         | 
| 88 90 | 
             
                        end
         | 
| 89 | 
            -
                      )
         | 
| 91 | 
            +
                      ),
         | 
| 92 | 
            +
                      status_bar_height: Applitools::Utils::EyesSeleniumUtils.status_bar_height(driver),
         | 
| 93 | 
            +
                      device_pixel_ratio: Applitools::Utils::EyesSeleniumUtils.device_pixel_ratio(driver)
         | 
| 90 94 | 
             
                    )
         | 
| 91 95 | 
             
                  end
         | 
| 92 96 | 
             
                end
         | 
| @@ -115,17 +119,22 @@ class Applitools::Appium::Eyes < Applitools::Selenium::SeleniumEyes | |
| 115 119 |  | 
| 116 120 | 
             
              def viewport_screenshot
         | 
| 117 121 | 
             
                logger.info 'Viewport screenshot requested...'
         | 
| 118 | 
            -
             | 
| 122 | 
            +
             | 
| 123 | 
            +
                self.screenshot = screenshot_class.new(
         | 
| 119 124 | 
             
                  Applitools::Screenshot.from_datastream(driver.screenshot_as(:png))
         | 
| 120 125 | 
             
                )
         | 
| 121 126 | 
             
              end
         | 
| 122 127 |  | 
| 123 128 | 
             
              def element_screenshot
         | 
| 124 129 | 
             
                logger.info 'Element screenshot requested...'
         | 
| 125 | 
            -
                self.screenshot =  | 
| 126 | 
            -
                  Applitools::Screenshot.from_datastream(
         | 
| 127 | 
            -
                    driver.element_screenshot_as(eyes_element_to_check, :png)
         | 
| 128 | 
            -
                  )
         | 
| 130 | 
            +
                self.screenshot = screenshot_class.new(
         | 
| 131 | 
            +
                  Applitools::Screenshot.from_datastream(driver.element_screenshot_as(eyes_element_to_check, :png))
         | 
| 129 132 | 
             
                )
         | 
| 130 133 | 
             
              end
         | 
| 134 | 
            +
             | 
| 135 | 
            +
              def screenshot_class
         | 
| 136 | 
            +
                return Applitools::Appium::IosScreenshot if Applitools::Utils::EyesSeleniumUtils.ios?(Applitools::Appium::Driver::AppiumLib)
         | 
| 137 | 
            +
                return Applitools::Appium::AndroidScreenshot if Applitools::Utils::EyesSeleniumUtils.android?(Applitools::Appium::Driver::AppiumLib)
         | 
| 138 | 
            +
                raise Applitools::EyesError, 'Unknown device type'
         | 
| 139 | 
            +
              end
         | 
| 131 140 | 
             
            end
         | 
| @@ -0,0 +1,10 @@ | |
| 1 | 
            +
            require_relative './screenshot.rb'
         | 
| 2 | 
            +
            module Applitools
         | 
| 3 | 
            +
              module Appium
         | 
| 4 | 
            +
                class IosScreenshot < Applitools::Appium::Screenshot
         | 
| 5 | 
            +
                  def convert_location(location, _from, _to)
         | 
| 6 | 
            +
                    location.offset_negative(Applitools::Location.new(0, status_bar_height))
         | 
| 7 | 
            +
                  end
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
            end
         | 
| @@ -3,6 +3,16 @@ | |
| 3 3 | 
             
            module Applitools
         | 
| 4 4 | 
             
              module Appium
         | 
| 5 5 | 
             
                class Screenshot < Applitools::EyesScreenshot
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                  attr_reader :status_bar_height, :device_pixel_ratio
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def initialize(*args)
         | 
| 10 | 
            +
                    options = Applitools::Utils.extract_options!(args)
         | 
| 11 | 
            +
                    @status_bar_height = options[:status_bar_height] || 0
         | 
| 12 | 
            +
                    @device_pixel_ratio = options[:device_pixel_ratio] || 1
         | 
| 13 | 
            +
                    super
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 6 16 | 
             
                  def sub_screenshot(region, _coordinate_type, _throw_if_clipped = false, _force_nil_if_clipped = false)
         | 
| 7 17 | 
             
                    self.class.new(
         | 
| 8 18 | 
             
                      Applitools::Screenshot.from_image(
         | 
| @@ -10,6 +20,11 @@ module Applitools | |
| 10 20 | 
             
                      )
         | 
| 11 21 | 
             
                    )
         | 
| 12 22 | 
             
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  def convert_location(location, _from, _to)
         | 
| 25 | 
            +
                    raise 'Applitools::Appium::Screenshot is an abstract class.' \
         | 
| 26 | 
            +
                      ' You should implement :convert_location method in a descendant class.'
         | 
| 27 | 
            +
                  end
         | 
| 13 28 | 
             
                end
         | 
| 14 29 | 
             
              end
         | 
| 15 30 | 
             
            end
         | 
| @@ -4,8 +4,7 @@ module Applitools | |
| 4 4 | 
             
              module Appium
         | 
| 5 5 | 
             
                class Target
         | 
| 6 6 | 
             
                  include Applitools::FluentInterface
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  attr_accessor :region_to_check, :options
         | 
| 7 | 
            +
                  attr_accessor :region_to_check, :options, :ignored_regions, :floating_regions, :layout_regions, :content_regions, :strict_regions, :accessibility_regions
         | 
| 9 8 |  | 
| 10 9 | 
             
                  class << self
         | 
| 11 10 | 
             
                    def window
         | 
| @@ -19,6 +18,12 @@ module Applitools | |
| 19 18 |  | 
| 20 19 | 
             
                  def initialize
         | 
| 21 20 | 
             
                    self.region_to_check = proc { Applitools::Region::EMPTY }
         | 
| 21 | 
            +
                    self.ignored_regions = []
         | 
| 22 | 
            +
                    self.floating_regions = []
         | 
| 23 | 
            +
                    self.layout_regions = []
         | 
| 24 | 
            +
                    self.content_regions = []
         | 
| 25 | 
            +
                    self.strict_regions = []
         | 
| 26 | 
            +
                    self.accessibility_regions = []
         | 
| 22 27 | 
             
                    self.options = {}
         | 
| 23 28 | 
             
                  end
         | 
| 24 29 |  | 
| @@ -34,9 +39,170 @@ module Applitools | |
| 34 39 | 
             
                    self
         | 
| 35 40 | 
             
                  end
         | 
| 36 41 |  | 
| 42 | 
            +
                  def ignore(*args)
         | 
| 43 | 
            +
                    requested_padding = if args.last.is_a? Applitools::PaddingBounds
         | 
| 44 | 
            +
                                          args.pop
         | 
| 45 | 
            +
                                        else
         | 
| 46 | 
            +
                                          Applitools::PaddingBounds::ZERO_PADDING
         | 
| 47 | 
            +
                                        end
         | 
| 48 | 
            +
                    ignored_regions <<  case (first_argument = args.first)
         | 
| 49 | 
            +
                                        when ::Selenium::WebDriver::Element
         | 
| 50 | 
            +
                                          proc do
         | 
| 51 | 
            +
                                            Applitools::Region
         | 
| 52 | 
            +
                                              .from_location_size(first_argument.location, first_argument.size)
         | 
| 53 | 
            +
                                              .padding(requested_padding)
         | 
| 54 | 
            +
                                          end
         | 
| 55 | 
            +
                                        when Applitools::Region
         | 
| 56 | 
            +
                                          result = first_argument.padding(requested_padding)
         | 
| 57 | 
            +
                                          if Applitools::Utils::EyesSeleniumUtils.ios?(Applitools::Appium::Driver::AppiumLib)
         | 
| 58 | 
            +
                                            def result.converted?
         | 
| 59 | 
            +
                                              true
         | 
| 60 | 
            +
                                            end
         | 
| 61 | 
            +
                                          end
         | 
| 62 | 
            +
                                          result
         | 
| 63 | 
            +
                                        else
         | 
| 64 | 
            +
                                          proc do |driver|
         | 
| 65 | 
            +
                                            element = driver.find_element(*args)
         | 
| 66 | 
            +
                                            Applitools::Region
         | 
| 67 | 
            +
                                              .from_location_size(element.location, element.size)
         | 
| 68 | 
            +
                                              .padding(requested_padding)
         | 
| 69 | 
            +
                                          end
         | 
| 70 | 
            +
                                        end
         | 
| 71 | 
            +
                    self
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                  def floating(*args)
         | 
| 75 | 
            +
                    value = case args.first
         | 
| 76 | 
            +
                            when Applitools::FloatingRegion
         | 
| 77 | 
            +
                              args.first
         | 
| 78 | 
            +
                            when Applitools::Region
         | 
| 79 | 
            +
                              result = Applitools::FloatingRegion.any(*args)
         | 
| 80 | 
            +
                              if Applitools::Utils::EyesSeleniumUtils.ios?(Applitools::Appium::Driver::AppiumLib)
         | 
| 81 | 
            +
                                def result.converted?
         | 
| 82 | 
            +
                                  true
         | 
| 83 | 
            +
                                end
         | 
| 84 | 
            +
                              end
         | 
| 85 | 
            +
                              result
         | 
| 86 | 
            +
                            when ::Selenium::WebDriver::Element
         | 
| 87 | 
            +
                              args_dup = args.dup
         | 
| 88 | 
            +
                              Applitools::FloatingRegion.any(*args_dup)
         | 
| 89 | 
            +
                            else
         | 
| 90 | 
            +
                              proc do |driver|
         | 
| 91 | 
            +
                                args_dup = args.dup
         | 
| 92 | 
            +
                                region = driver.find_element(args_dup.shift, args_dup.shift)
         | 
| 93 | 
            +
                                Applitools::FloatingRegion.any(
         | 
| 94 | 
            +
                                    region, *args_dup
         | 
| 95 | 
            +
                                )
         | 
| 96 | 
            +
                              end
         | 
| 97 | 
            +
                            end
         | 
| 98 | 
            +
                    floating_regions << value
         | 
| 99 | 
            +
                    self
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  def layout
         | 
| 103 | 
            +
                    return match_level(Applitools::MatchLevel::LAYOUT) if args.empty?
         | 
| 104 | 
            +
                    region = process_region(*args)
         | 
| 105 | 
            +
                    layout_regions << region
         | 
| 106 | 
            +
                  self
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                  def content(*args)
         | 
| 111 | 
            +
                    return match_level(Applitools::MatchLevel::CONTENT) if args.empty?
         | 
| 112 | 
            +
                    region = process_region(*args)
         | 
| 113 | 
            +
                    content_regions << region
         | 
| 114 | 
            +
                    self
         | 
| 115 | 
            +
                  end
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                  def strict(*args)
         | 
| 118 | 
            +
                    return match_level(Applitools::MatchLevel::STRICT) if args.empty?
         | 
| 119 | 
            +
                    region = process_region(*args)
         | 
| 120 | 
            +
                    strict_regions << region
         | 
| 121 | 
            +
                    self
         | 
| 122 | 
            +
                  end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                  def exact(*args)
         | 
| 125 | 
            +
                    match_level(Applitools::MatchLevel::EXACT, *args)
         | 
| 126 | 
            +
                  end
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                  def accessibility(*args)
         | 
| 129 | 
            +
                    options = Applitools::Utils.extract_options! args
         | 
| 130 | 
            +
                    unless options[:type]
         | 
| 131 | 
            +
                      raise Applitools::EyesError,
         | 
| 132 | 
            +
                            'You should call Target.accessibility(region, type: type). The region_type option is required'
         | 
| 133 | 
            +
                    end
         | 
| 134 | 
            +
                    unless Applitools::AccessibilityRegionType.enum_values.include?(options[:type])
         | 
| 135 | 
            +
                      raise Applitools::EyesIllegalArgument,
         | 
| 136 | 
            +
                            "The region type should be one of [#{Applitools::AccessibilityRegionType.enum_values.join(', ')}]"
         | 
| 137 | 
            +
                    end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                    accessibility_regions << case args.first
         | 
| 140 | 
            +
                                             when ::Selenium::WebDriver::Element
         | 
| 141 | 
            +
                                               element = args.first
         | 
| 142 | 
            +
                                               Applitools::AccessibilityRegion.new(
         | 
| 143 | 
            +
                                                 element,
         | 
| 144 | 
            +
                                                 options[:type]
         | 
| 145 | 
            +
                                               )
         | 
| 146 | 
            +
                                             when Applitools::Region
         | 
| 147 | 
            +
                                               result = Applitools::AccessibilityRegion.new(
         | 
| 148 | 
            +
                                                   args.first, options[:type]
         | 
| 149 | 
            +
                                               )
         | 
| 150 | 
            +
                                               if Applitools::Utils::EyesSeleniumUtils.ios?(Applitools::Appium::Driver::AppiumLib)
         | 
| 151 | 
            +
                                                 def result.converted?
         | 
| 152 | 
            +
                                                   true
         | 
| 153 | 
            +
                                                 end
         | 
| 154 | 
            +
                                               end
         | 
| 155 | 
            +
                                               result
         | 
| 156 | 
            +
                                             when String
         | 
| 157 | 
            +
                                               proc do |driver|
         | 
| 158 | 
            +
                                                 element = driver.find_element(name_or_id: args.first)
         | 
| 159 | 
            +
                                                 Applitools::AccessibilityRegion.new(
         | 
| 160 | 
            +
                                                   element,
         | 
| 161 | 
            +
                                                   options[:type]
         | 
| 162 | 
            +
                                                 )
         | 
| 163 | 
            +
                                               end
         | 
| 164 | 
            +
                                             else
         | 
| 165 | 
            +
                                               proc do |driver|
         | 
| 166 | 
            +
                                                 elements = driver.find_elements(*args)
         | 
| 167 | 
            +
                                                 elements.map do |e|
         | 
| 168 | 
            +
                                                   Applitools::AccessibilityRegion.new(
         | 
| 169 | 
            +
                                                     e,
         | 
| 170 | 
            +
                                                     options[:type]
         | 
| 171 | 
            +
                                                   )
         | 
| 172 | 
            +
                                                 end
         | 
| 173 | 
            +
                                               end
         | 
| 174 | 
            +
                                             end
         | 
| 175 | 
            +
                    self
         | 
| 176 | 
            +
                  end
         | 
| 177 | 
            +
             | 
| 37 178 | 
             
                  def finalize
         | 
| 38 179 | 
             
                    self
         | 
| 39 180 | 
             
                  end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                  private
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                  def process_region(*args)
         | 
| 185 | 
            +
                    r = args.first
         | 
| 186 | 
            +
                    case r
         | 
| 187 | 
            +
                    when ::Selenium::WebDriver::Element
         | 
| 188 | 
            +
                      proc do |driver|
         | 
| 189 | 
            +
                        Applitools::Region.from_location_size(r.location, r.size)
         | 
| 190 | 
            +
                      end
         | 
| 191 | 
            +
                    when Applitools::Region
         | 
| 192 | 
            +
                      if Applitools::Utils::EyesSeleniumUtils.ios?(Applitools::Appium::Driver::AppiumLib)
         | 
| 193 | 
            +
                        def r.converted?
         | 
| 194 | 
            +
                          true
         | 
| 195 | 
            +
                        end
         | 
| 196 | 
            +
                      end
         | 
| 197 | 
            +
                      r
         | 
| 198 | 
            +
                    else
         | 
| 199 | 
            +
                      proc do |driver|
         | 
| 200 | 
            +
                        element = driver.find_element(*args)
         | 
| 201 | 
            +
                        Applitools::Region.from_location_size(element.location, element.size)
         | 
| 202 | 
            +
                      end
         | 
| 203 | 
            +
                    end
         | 
| 204 | 
            +
                  end
         | 
| 205 | 
            +
             | 
| 40 206 | 
             
                end
         | 
| 41 207 | 
             
              end
         | 
| 42 208 | 
             
            end
         | 
| @@ -4,7 +4,9 @@ module Applitools::Appium | |
| 4 4 | 
             
              module Utils
         | 
| 5 5 | 
             
                # true if test is running on mobile device
         | 
| 6 6 | 
             
                def mobile_device?(driver)
         | 
| 7 | 
            -
                  defined?(Appium::Driver) && | 
| 7 | 
            +
                  defined?(Appium::Driver) &&
         | 
| 8 | 
            +
                      defined?(Applitools::Appium::Driver::AppiumLib) &&
         | 
| 9 | 
            +
                      Applitools::Appium::Driver::AppiumLib
         | 
| 8 10 | 
             
                end
         | 
| 9 11 |  | 
| 10 12 | 
             
                # true if test is running on Android device
         | 
| @@ -19,18 +21,26 @@ module Applitools::Appium | |
| 19 21 |  | 
| 20 22 | 
             
                # @param [Applitools::Selenium::Driver] driver
         | 
| 21 23 | 
             
                def platform_version(driver)
         | 
| 22 | 
            -
                  driver.respond_to?(: | 
| 24 | 
            +
                  driver.respond_to?(:platform_version) && driver.platform_version
         | 
| 23 25 | 
             
                end
         | 
| 24 26 |  | 
| 25 27 | 
             
                # @param [Applitools::Selenium::Driver] executor
         | 
| 26 28 | 
             
                def device_pixel_ratio(executor)
         | 
| 27 | 
            -
                   | 
| 28 | 
            -
             | 
| 29 | 
            -
                    return session_info['pixelRatio'].to_f if session_info['pixelRatio']
         | 
| 30 | 
            -
                  end
         | 
| 29 | 
            +
                  session_info = session_capabilities(executor)
         | 
| 30 | 
            +
                  return session_info['pixelRatio'].to_f if session_info['pixelRatio']
         | 
| 31 31 | 
             
                  Applitools::Selenium::Eyes::UNKNOWN_DEVICE_PIXEL_RATIO
         | 
| 32 32 | 
             
                end
         | 
| 33 33 |  | 
| 34 | 
            +
                def status_bar_height(executor)
         | 
| 35 | 
            +
                  session_info = session_capabilities(executor)
         | 
| 36 | 
            +
                  return session_info['statBarHeight'].to_i if session_info['statBarHeight']
         | 
| 37 | 
            +
                  0
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def session_capabilities(executor)
         | 
| 41 | 
            +
                   executor.session_capabilities if executor.respond_to? :session_capabilities
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 34 44 | 
             
                def current_scroll_position(driver)
         | 
| 35 45 | 
             
                  super
         | 
| 36 46 | 
             
                rescue
         | 
| @@ -4,6 +4,7 @@ module Applitools | |
| 4 4 | 
             
              class MatchWindowData
         | 
| 5 5 | 
             
                class << self
         | 
| 6 6 | 
             
                  def convert_coordinates(region, screenshot)
         | 
| 7 | 
            +
                    return region.with_padding.to_hash if region.respond_to?(:converted?) && region.converted?
         | 
| 7 8 | 
             
                    screenshot.convert_region_location(
         | 
| 8 9 | 
             
                      region.with_padding,
         | 
| 9 10 | 
             
                      Applitools::EyesScreenshot::COORDINATE_TYPES[:context_relative],
         | 
    
        data/lib/applitools/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: eyes_core
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.16. | 
| 4 | 
            +
              version: 3.16.16
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Applitools Team
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020-04- | 
| 11 | 
            +
            date: 2020-04-28 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: oily_png
         | 
| @@ -260,10 +260,12 @@ files: | |
| 260 260 | 
             
            - ext/eyes_core/extconf.rb
         | 
| 261 261 | 
             
            - ext/eyes_core/eyes_core.c
         | 
| 262 262 | 
             
            - ext/eyes_core/eyes_core.h
         | 
| 263 | 
            +
            - lib/applitools/appium/android_screenshot.rb
         | 
| 263 264 | 
             
            - lib/applitools/appium/driver.rb
         | 
| 264 265 | 
             
            - lib/applitools/appium/eyes.rb
         | 
| 265 266 | 
             
            - lib/applitools/appium/initialize_1.9.rb
         | 
| 266 267 | 
             
            - lib/applitools/appium/initialize_2.0.rb
         | 
| 268 | 
            +
            - lib/applitools/appium/ios_screenshot.rb
         | 
| 267 269 | 
             
            - lib/applitools/appium/region_provider.rb
         | 
| 268 270 | 
             
            - lib/applitools/appium/screenshot.rb
         | 
| 269 271 | 
             
            - lib/applitools/appium/target.rb
         |