eyes_selenium 2.4.0 → 2.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb0e2180f6bc37088d848c7f72d32c7a8f2bf1a5
4
- data.tar.gz: f815d843a06af0b271c0a8b8e72c723429ad508b
3
+ metadata.gz: 4219715fa9dc4e8d577f379654dfb8de47f4b0c3
4
+ data.tar.gz: be34d6a658b4c2da134940518a56355a4ddd2b2e
5
5
  SHA512:
6
- metadata.gz: cccd36fb6e9568d7a5f7b594197bf0a591faa404f09454f13c281c625c03f785b4ccb065cd3f2256aeb43ecf2cfc66ec2c69e93c6a3885f61b4b7995c79d8ac1
7
- data.tar.gz: 8d4775c59074e78fc8d7f3080cfc5b725f960eb1e66c6a0d1ab6182eb081a52d1acd18b02844d8f70603d99f808d9d960366bb1771fb5b410fe6cc5f02b84ebe
6
+ metadata.gz: 6c64a2308075fa442cbe9bef45d88b2873b4ea27403cc9daab82c62afcc418b3368a3d379256c0a70aee5bc262f52176428bbe158484e6900b02757d48a400fd
7
+ data.tar.gz: 7b2b468fe9957dba640ecc54e715f2a3c9f2e7a8f9af40ece6fefe07ae2ffea1bf286fb3677c434695529ca1ac2cbe2a6e48ed5fade55d4a9f1cebce4768e083
@@ -25,9 +25,10 @@ class Applitools::AgentConnector
25
25
  self.class.headers 'Content-Type' => 'application/octet-stream'
26
26
  json_data = data.to_hash.to_json.force_encoding('BINARY') # Notice that this does not include the screenshot
27
27
  body = [json_data.length].pack('L>') + json_data + data.screenshot
28
-
28
+ EyesLogger.debug 'Sending match data...'
29
29
  res = self.class.post(@endpoint_uri + "/#{session.id}", query: {apiKey: api_key}, body: body)
30
30
  raise Applitools::EyesError.new('could not connect to server') if res.code != 200
31
+ EyesLogger.debug "Got response! #{res.parsed_response['asExpected']}"
31
32
  res.parsed_response['asExpected']
32
33
  end
33
34
 
@@ -121,20 +121,30 @@ class Applitools::Eyes
121
121
  end
122
122
 
123
123
  def check_region(how, what, tag=nil, specific_timeout=-1)
124
+ EyesLogger.debug 'check_region called'
124
125
  return if disabled?
125
126
  # We have to start the session if it's not started, since we want the viewport size to be set before getting the
126
127
  # element's position and size
127
128
  raise Applitools::EyesError.new('Eyes not open') if !open?
128
129
  unless session
130
+ EyesLogger.debug 'Starting session...'
129
131
  start_session
132
+ EyesLogger.debug 'Done! Creating match window task...'
130
133
  self.match_window_task = Applitools::MatchWindowTask.new(self, agent_connector, session, driver, match_timeout)
134
+ EyesLogger.debug 'Done!'
131
135
  end
132
136
 
137
+ EyesLogger.debug 'Finding element...'
133
138
  element_to_check = driver.find_element(how, what)
139
+ EyesLogger.debug 'Done! Getting element location...'
134
140
  location = element_to_check.location
141
+ EyesLogger.debug 'Done! Getting element size...'
135
142
  size = element_to_check.size
143
+ EyesLogger.debug 'Done! Creating region...'
136
144
  region = Applitools::Region.new(location.x, location.y, size.width, size.height)
145
+ EyesLogger.debug 'Done! Checking region...'
137
146
  check_region_(region, tag, specific_timeout)
147
+ EyesLogger.debug 'Done!'
138
148
  end
139
149
 
140
150
  def check_window(tag=nil, specific_timeout=-1)
@@ -288,16 +298,21 @@ class Applitools::Eyes
288
298
 
289
299
  def check_region_(region, tag=nil, specific_timeout=-1)
290
300
  return if disabled?
291
- EyesLogger.info "check_region('#{tag}', #{specific_timeout})"
301
+ EyesLogger.info "check_region_('#{tag}', #{specific_timeout})"
292
302
  raise Applitools::EyesError.new('region cannot be nil!') if region.nil?
293
303
  raise Applitools::EyesError.new('Eyes not open') if !open?
294
304
 
295
305
  unless session
306
+ EyesLogger.debug 'Starting session...'
296
307
  start_session
308
+ EyesLogger.debug 'Done! Creating match window task...'
297
309
  self.match_window_task = Applitools::MatchWindowTask.new(self, agent_connector, session, driver, match_timeout)
310
+ EyesLogger.debug 'Done!'
298
311
  end
299
312
 
313
+ EyesLogger.debug 'Starting match task...'
300
314
  as_expected = match_window_task.match_window(region, specific_timeout, tag, should_match_window_run_once_on_timeout)
315
+ EyesLogger.debug 'Match window done!'
301
316
  unless as_expected
302
317
  self.should_match_window_run_once_on_timeout = true
303
318
  unless session.new_session?
@@ -44,24 +44,30 @@ class Applitools::MatchWindowTask
44
44
  end
45
45
 
46
46
  def run(region, tag, wait_before_run=nil)
47
- EyesLogger.debug "Trying matching once..."
48
- sleep(wait_before_run) if wait_before_run
47
+ EyesLogger.debug 'Trying matching once...'
48
+ if wait_before_run
49
+ EyesLogger.debug 'waiting before run...'
50
+ sleep(wait_before_run)
51
+ EyesLogger.debug 'waiting done!'
52
+ end
49
53
  match(region, tag)
50
54
  end
51
55
 
52
56
  def run_with_intervals(region, tag, retry_timeout)
53
57
  # We intentionally take the first screenshot before starting the timer, to allow the page
54
58
  # just a tad more time to stabilize.
55
- EyesLogger.debug 'Matching with interval...'
59
+ EyesLogger.debug 'Matching with intervals...'
56
60
  data = prep_match_data(region, tag, true)
57
61
  start = Time.now
58
62
  as_expected = agent_connector.match_window(session, data)
59
63
  EyesLogger.debug "First call result: #{as_expected}"
60
64
  return true if as_expected
65
+ EyesLogger.debug "Not as expected, performing retry (total timeout #{retry_timeout})"
61
66
  match_retry = Time.now - start
62
67
  while match_retry < retry_timeout
68
+ EyesLogger.debug 'Waiting before match...'
63
69
  sleep(MATCH_INTERVAL)
64
- EyesLogger.debug 'Matching...'
70
+ EyesLogger.debug 'Done! Matching...'
65
71
  return true if match(region, tag, true)
66
72
  match_retry = Time.now - start
67
73
  EyesLogger.debug "Elapsed time: #{match_retry}"
@@ -84,25 +90,39 @@ class Applitools::MatchWindowTask
84
90
  end
85
91
 
86
92
  def prep_match_data(region, tag, ignore_mismatch)
93
+ EyesLogger.debug 'Preparing match data...'
87
94
  title = eyes.title
95
+ EyesLogger.debug 'Getting screenshot...'
96
+ screenshot64 = driver.screenshot_as(:base64)
97
+ EyesLogger.debug 'Done! Decoding base64...'
88
98
  # 'encoded', as in 'png'.
89
- current_screenshot_encoded = Base64.decode64(driver.screenshot_as(:base64))
99
+ current_screenshot_encoded = Base64.decode64(screenshot64)
100
+ EyesLogger.debug 'Done! Creating image object from PNG...'
90
101
  @current_screenshot = ChunkyPNG::Image.from_blob(current_screenshot_encoded)
102
+ EyesLogger.debug 'Done!'
91
103
  # If a region was defined, we refer to the sub-image defined by the region.
92
104
  unless region.empty?
105
+ EyesLogger.debug 'Calculating clipped region...'
93
106
  # If the region is out of bounds, clip it
94
107
  clipped_region = get_clipped_region(region, @current_screenshot)
95
108
  raise Applitools::EyesError.new("Region is outside the viewport: #{region}") if clipped_region.empty?
109
+ EyesLogger.debug 'Done! Cropping region...'
96
110
  @current_screenshot.crop!(clipped_region.left, clipped_region.top, clipped_region.width, clipped_region.height)
111
+ EyesLogger.debug 'Done! Creating cropped image object...'
97
112
  current_screenshot_encoded = @current_screenshot.to_blob.force_encoding('BINARY')
113
+ EyesLogger.debug 'Done!'
98
114
  end
115
+ EyesLogger.debug 'Compressing screenshot...'
99
116
  compressed_screenshot = Applitools::Utils::ImageDeltaCompressor.compress_by_raw_blocks(@current_screenshot,
100
117
  current_screenshot_encoded,
101
118
  last_checked_window)
119
+ EyesLogger.debug 'Done! Creating AppOuptut...'
102
120
  app_output = AppOutput.new(title, nil)
103
121
  user_inputs = []
122
+ EyesLogger.debug 'Handling user inputs...'
104
123
  if !last_checked_window.nil?
105
124
  driver.eyes.user_inputs.each do |trigger|
125
+ EyesLogger.debug 'Handling trigger...'
106
126
  if trigger.is_a?(Applitools::MouseTrigger)
107
127
  updated_trigger = nil
108
128
  trigger_left = trigger.control.left + trigger.location.x
@@ -121,6 +141,7 @@ class Applitools::MatchWindowTask
121
141
  updated_control = Applitools::Region.new(control_left, control_top, trigger.control.width, trigger.control.height)
122
142
  updated_trigger = Applitools::MouseTrigger.new(trigger.mouse_action, updated_control, Selenium::WebDriver::Point.new(trigger_left, trigger_top))
123
143
  end
144
+ EyesLogger.debug 'Done with trigger!'
124
145
  user_inputs << updated_trigger
125
146
  else
126
147
  EyesLogger.info "Trigger ignored: #{trigger} (out of bounds)"
@@ -133,6 +154,7 @@ class Applitools::MatchWindowTask
133
154
  control_top = trigger.control.top - last_screenshot_bounds.top
134
155
  updated_control = Applitools::Region.new(control_left, control_top, trigger.control.width, trigger.control.height)
135
156
  updated_trigger = Applitools::TextTrigger.new(trigger.text, updated_control)
157
+ EyesLogger.debug 'Done with trigger!'
136
158
  user_inputs << updated_trigger
137
159
  else
138
160
  EyesLogger.info "Trigger ignored: #{trigger} (control out of bounds)"
@@ -147,11 +169,17 @@ class Applitools::MatchWindowTask
147
169
  else
148
170
  EyesLogger.info 'Triggers ignored: no previous window checked'
149
171
  end
150
- Applitools::MatchWindowData.new(app_output, user_inputs, tag, ignore_mismatch, compressed_screenshot)
172
+ EyesLogger.debug 'Creating MatchWindowData object..'
173
+ match_window_data_obj = Applitools::MatchWindowData.new(app_output, user_inputs, tag, ignore_mismatch, compressed_screenshot)
174
+ EyesLogger.debug 'Done creating MatchWindowData object!'
175
+ match_window_data_obj
151
176
  end
152
177
 
153
178
  def match(region, tag, ignore_mismatch=false)
179
+ EyesLogger.debug 'Match called...'
154
180
  data = prep_match_data(region, tag, ignore_mismatch)
155
- agent_connector.match_window(session, data)
181
+ match_result = agent_connector.match_window(session, data)
182
+ EyesLogger.debug 'Match done!'
183
+ match_result
156
184
  end
157
185
  end
@@ -1,3 +1,3 @@
1
1
  module Applitools
2
- VERSION = '2.4.0'
2
+ VERSION = '2.5.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eyes_selenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Applitools team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-25 00:00:00.000000000 Z
11
+ date: 2014-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver