Class: Applitools::Selenium::EyesConnector

Inherits:
EyesBase
  • Object
show all
Defined in:
lib/applitools/selenium/visual_grid/eyes_connector.rb

Defined Under Namespace

Classes: RegionProvider

Constant Summary collapse

USE_DEFAULT_MATCH_TIMEOUT =
-1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ EyesConnector

Returns a new instance of EyesConnector.



17
18
19
20
21
22
23
24
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 17

def initialize(*args)
  options = Applitools::Utils.extract_options!(args)
  super
  self.render_statuses = {}
  self.dummy_region_provider = RegionProvider.new
  self.dont_get_title = false
  self.driver_lock = options[:driver_lock]
end

Instance Attribute Details

#browser_infoObject

Returns the value of attribute browser_info.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def browser_info
  @browser_info
end

#current_uuidObject

Returns the value of attribute current_uuid.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def current_uuid
  @current_uuid
end

#device_nameObject

Returns the value of attribute device_name.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def device_name
  @device_name
end

#dont_get_titleObject

Returns the value of attribute dont_get_title.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def dont_get_title
  @dont_get_title
end

#driverObject

Returns the value of attribute driver.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def driver
  @driver
end

#driver_lockObject

Returns the value of attribute driver_lock.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def driver_lock
  @driver_lock
end

#dummy_region_providerObject

Returns the value of attribute dummy_region_provider.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def dummy_region_provider
  @dummy_region_provider
end

#render_statusesObject

Returns the value of attribute render_statuses.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def render_statuses
  @render_statuses
end

#test_resultObject

Returns the value of attribute test_result.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def test_result
  @test_result
end

#titleObject

Returns the value of attribute title.



7
8
9
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 7

def title
  @title
end

Instance Method Details

#app_environmentObject

rubocop:enable Style/AccessorMethodName



121
122
123
124
125
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 121

def app_environment
  super.tap do |env|
    env.device_info = device_name
  end
end

#base_agent_idObject



64
65
66
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 64

def base_agent_id
  "eyes.selenium.visualgrid.ruby/#{Applitools::VERSION}"
end

#capture_screenshotObject



73
74
75
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 73

def capture_screenshot
  nil
end

#check(name, target, check_task_uuid) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 41

def check(name, target, check_task_uuid)
  self.current_uuid = check_task_uuid
  target_to_check = target.finalize
  timeout = target_to_check.options[:timeout] || USE_DEFAULT_MATCH_TIMEOUT

  match_data = Applitools::Selenium::VgMatchWindowData.new(default_match_settings)
  match_data.tag = name
  match_data.render_id = render_status['renderId']
  begin
    driver_lock.synchronize do
      match_data.read_target(target_to_check, driver, selector_regions)
    end
  rescue Applitools::Selenium::VgMatchWindowData::RegionCoordinatesError => e
    logger.error "Error retrieving coordinates for region #{e.region}"
    logger.error e.message
  end
  check_result = check_window_base(
    dummy_region_provider, timeout, match_data
  )
  self.current_uuid = nil
  check_result
end

#close(throw_exception = true, be_silent = false) ⇒ Object



68
69
70
71
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 68

def close(throw_exception = true, be_silent = false)
  self.current_uuid = nil
  self.test_result = super
end

#dom_urlObject



92
93
94
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 92

def dom_url
  render_status['domLocation']
end

#ensure_configObject



26
27
28
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 26

def ensure_config
  self.config = Applitools::Selenium::Configuration.new
end

#get_app_output_with_screenshot(region_provider, _last_screenshot) ⇒ Object



141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 141

def get_app_output_with_screenshot(region_provider, _last_screenshot)
  region = region_provider.region
  a_title = title
  Applitools::AppOutputWithScreenshot.new(
    Applitools::AppOutput.new(a_title, '').tap do |o|
      o.location = region.location unless region.empty?
      o.dom_url = dom_url
      o.screenshot_url = screenshot_url if respond_to?(:screenshot_url) && !screenshot_url.nil?
    end,
    nil,
    true
  )
end

#inferred_environmentObject

def match_level_keys

%w(match_level exact scale remainder ).map(&:to_sym)

end



104
105
106
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 104

def inferred_environment
  "useragent: #{render_status['userAgent']}"
end

#open(driver, browser_info) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 30

def open(driver, browser_info)
  self.driver = driver
  self.browser_info = browser_info
  self.device_name = browser_info.device_name
  logger.info "opening EyesConnector for #{config.short_description} with viewport size: #{browser_info}"
  config.viewport_size = browser_info.viewport_size
  title
  open_base
  # ensure_running_session
end

#render_statusObject

Raises:

  • (Applitools::EyesError)


81
82
83
84
85
86
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 81

def render_status
  status = render_statuses[current_uuid]
  raise Applitools::EyesError, 'Got empty render status!' if
      status.nil? || !status.is_a?(Hash) || status.keys.empty?
  status
end

#render_status_for_task(uuid, status) ⇒ Object



77
78
79
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 77

def render_status_for_task(uuid, status)
  render_statuses[uuid] = status
end

#screenshot_urlObject



88
89
90
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 88

def screenshot_url
  render_status['imageLocation']
end

#selector_regionsObject



96
97
98
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 96

def selector_regions
  render_status['selectorRegions']
end

#set_viewport_size(*_args) ⇒ Object

rubocop:disable Style/AccessorMethodName



118
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 118

def set_viewport_size(*_args); end

#viewport_sizeObject



127
128
129
130
131
# File 'lib/applitools/selenium/visual_grid/eyes_connector.rb', line 127

def viewport_size
  status = render_statuses[render_statuses.keys.first]
  size = status['deviceSize']
  Applitools::RectangleSize.new(size['width'], size['height'])
end