eyes_selenium 1.39.0 → 1.40.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzQ0YzQzZGMwZGY2Mjc1YjI3Mjk5YWMxNjc3NGU4ODFiNTQ0NmZlZg==
4
+ ZGIwYmU3YzViYzJmNWI2Mzg3NzFjZWZiYjg5OTIzMDE2NTQwODYyZQ==
5
5
  data.tar.gz: !binary |-
6
- ZTU4ZjBkM2U2Y2Q4ZWE5YzhhNTQ4NDA5MmQyOWJhOTdlY2U4ZTNlMA==
6
+ NzdkZDQxZTEzMDFlYTc5YWI5Mzg3Yzk0NmNjZDYyMzhlNDlmOThkZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YzNlZGUzZjBlNDc1NGU1ZjliMDEyMDBmMzViNjE5NWMxZjZkODBhNmUxNmE1
10
- NWUwZTNiMmFiN2U5NTkyMmNiZDExNmZmY2FiYWMwZDg5MzA4ZDAyYzEzNTBm
11
- Mjk4Mjg2NDAzMzVjODE0ZmEyYWMxMDQwNTc2NDFjZjU5NDljNTM=
9
+ YjA0ZTVmNzI2NjNlZjQ4Yzk1NmE0ZWJkYjUxMTM0OWY3NzcyYzRkZjg2YTVi
10
+ ODA4ZDFkNzQ2MDQ3NTMzZThmYjkyMGJmOGIwNzQxZTA5ODMxNWQyZWM1ZmRl
11
+ Mjk4OGI1NWI1NDYyY2U0NjM3OWEwNDJiOTViM2EyYjQ0N2E3YTE=
12
12
  data.tar.gz: !binary |-
13
- N2FmMTdjNjNmNTQwMWU1ZjI3ZTJhMmJlMjVhYmZkMTllNDU1ZjUzYmE5MjNh
14
- MDFiYjM5ZDhjOTg4OGY2ZjE5ZWI4ODg5ZmNmYjY2MzJiNTVjZTEzMTE2MGQ0
15
- N2M0NmVmN2I3YzhlODU3MGUxMTEyMDA5N2NiNGQyMmI5ODhkODM=
13
+ ZmY1NzY2MGViNGUwMGZmY2EwMDQ4NzM1YTZhODMyOThjM2UxY2JjOTkwMGI0
14
+ NjMwNGQ0N2Q2MDc2MjJkNGIyYjljYWY2YWVkMGFjNTUyZWIyNThhMDU5MjBi
15
+ MDVlN2U0YmI4ZTM4YWU1YmQ4Yzk0ZTQ3ZDYwNTg1YWQ2NGQwYWE=
@@ -99,7 +99,7 @@ class Applitools::Eyes
99
99
  user_inputs.clear
100
100
  end
101
101
 
102
- def check_region(how, what, tag=nil)
102
+ def check_region(how, what, tag=nil, specific_timeout=-1)
103
103
  return if disabled?
104
104
  # We have to start the session if it's not started, since we want the viewport size to be set before getting the
105
105
  # element's position and size
@@ -113,11 +113,11 @@ class Applitools::Eyes
113
113
  location = element_to_check.location
114
114
  size = element_to_check.size
115
115
  region = Applitools::Region.new(location.x, location.y, size.width, size.height)
116
- check_region_(region, tag)
116
+ check_region_(region, tag, specific_timeout)
117
117
  end
118
118
 
119
- def check_window(tag=nil)
120
- check_region_(Applitools::Region::EMPTY, tag)
119
+ def check_window(tag=nil, specific_timeout=-1)
120
+ check_region_(Applitools::Region::EMPTY, tag, specific_timeout)
121
121
  end
122
122
 
123
123
  def close(raise_ex=true)
@@ -265,8 +265,9 @@ class Applitools::Eyes
265
265
  end
266
266
  end
267
267
 
268
- def check_region_(region, tag=nil)
268
+ def check_region_(region, tag=nil, specific_timeout=-1)
269
269
  return if disabled?
270
+ EyesLogger.info "check_region('#{tag}', #{specific_timeout})"
270
271
  raise Applitools::EyesError.new('region cannot be nil!') if region.nil?
271
272
  raise Applitools::EyesError.new('Eyes not open') if !open?
272
273
 
@@ -275,11 +276,11 @@ class Applitools::Eyes
275
276
  self.match_window_task = Applitools::MatchWindowTask.new(self, agent_connector, session, driver, match_timeout)
276
277
  end
277
278
 
278
- as_expected = match_window_task.match_window(region, tag, should_match_window_run_once_on_timeout)
279
+ as_expected = match_window_task.match_window(region, specific_timeout, tag, should_match_window_run_once_on_timeout)
279
280
  unless as_expected
280
281
  self.should_match_window_run_once_on_timeout = true
281
282
  unless session.new_session?
282
- EyesLogger.info %( "mismatch #{ tag ? '' : "(#{tag})" } )
283
+ EyesLogger.info %( mismatch #{ tag ? '' : "(#{tag})" } )
283
284
  if failure_reports.to_i == Applitools::FailureReports::IMMEDIATE
284
285
  raise Applitools::TestFailedError.new("Mismatch found in '#{session_start_info.scenario_id_or_name}'"\
285
286
  " of '#{session_start_info.app_id_or_name}'")
@@ -7,29 +7,36 @@ class Applitools::MatchWindowTask
7
7
  MATCH_INTERVAL = 0.5
8
8
  AppOutput = Struct.new(:title, :screenshot64)
9
9
 
10
- attr_reader :eyes, :agent_connector, :session, :driver, :max_window_load_time, :last_checked_window ,:last_screenshot_bounds
10
+ attr_reader :eyes, :agent_connector, :session, :driver, :default_retry_timeout, :last_checked_window ,:last_screenshot_bounds
11
11
 
12
12
  public
13
- ## max_load_time: maximum wait time for check window, in seconds
14
- def initialize(eyes, agent_connector, session, driver, max_window_load_time)
13
+ #noinspection RubyParameterNamingConvention
14
+ def initialize(eyes, agent_connector, session, driver, default_retry_timeout)
15
15
  @eyes = eyes
16
16
  @agent_connector = agent_connector
17
17
  @session = session
18
18
  @driver = driver
19
- @max_window_load_time = max_window_load_time
19
+ @default_retry_timeout = default_retry_timeout
20
20
  @last_checked_window = nil # +ChunkyPNG::Canvas+
21
21
  @last_screenshot_bounds = Applitools::Region::EMPTY # +Applitools::Region+
22
22
  @current_screenshot = nil # +ChunkyPNG::Canvas+
23
23
  end
24
24
 
25
- def match_window(region, tag,run_once_after_wait=false)
26
- res = if max_window_load_time.zero?
25
+ def match_window(region, retry_timeout, tag,run_once_after_wait=false)
26
+ if retry_timeout < 0
27
+ retry_timeout = default_retry_timeout
28
+ end
29
+ EyesLogger.debug "Retry timeout set to: #{retry_timeout}"
30
+ start = Time.now
31
+ res = if retry_timeout.zero?
27
32
  run(region, tag)
28
33
  elsif run_once_after_wait
29
- run(region, tag, max_window_load_time)
34
+ run(region, tag, retry_timeout)
30
35
  else
31
- run_with_intervals(region, tag, max_window_load_time)
36
+ run_with_intervals(region, tag, retry_timeout)
32
37
  end
38
+ elapsed_time = Time.now - start
39
+ EyesLogger.debug "match_window(): Completed in #{format('%.2f', elapsed_time)} seconds"
33
40
  @last_checked_window = @current_screenshot
34
41
  @last_screenshot_bounds = region.empty? ? Applitools::Region.new(0, 0, last_checked_window.width, last_checked_window.height) : region
35
42
  #noinspection RubyUnnecessaryReturnStatement
@@ -37,20 +44,33 @@ class Applitools::MatchWindowTask
37
44
  end
38
45
 
39
46
  def run(region, tag, wait_before_run=nil)
47
+ EyesLogger.debug "Trying matching once..."
40
48
  sleep(wait_before_run) if wait_before_run
41
49
  match(region, tag)
42
50
  end
43
51
 
44
- def run_with_intervals(region, tag, total_run_time)
52
+ def run_with_intervals(region, tag, retry_timeout)
53
+ # We intentionally take the first screenshot before starting the timer, to allow the page
54
+ # just a tad more time to stabilize.
55
+ EyesLogger.debug 'Matching with interval...'
56
+ data = prep_match_data(region, tag, true)
45
57
  start = Time.now
46
- match_retry = total_run_time
47
- while match_retry > 0
58
+ as_expected = agent_connector.match_window(session, data)
59
+ EyesLogger.debug "First call result: #{as_expected}"
60
+ return true if as_expected
61
+ match_retry = Time.now - start
62
+ while match_retry < retry_timeout
48
63
  sleep(MATCH_INTERVAL)
64
+ EyesLogger.debug 'Matching...'
49
65
  return true if match(region, tag, true)
50
- match_retry -= (Time.now - start)
66
+ match_retry = Time.now - start
67
+ EyesLogger.debug "Elapsed time: #{match_retry}"
51
68
  end
52
69
  ## lets try one more time if we still don't have a match
53
- match(region, tag)
70
+ EyesLogger.debug 'Last attempt to match...'
71
+ as_expected = match(region, tag)
72
+ EyesLogger.debug "Match result: #{as_expected}"
73
+ as_expected
54
74
  end
55
75
 
56
76
  private
@@ -1,3 +1,3 @@
1
1
  module Applitools
2
- VERSION = '1.39.0'
2
+ VERSION = '1.40.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: 1.39.0
4
+ version: 1.40.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-06-15 00:00:00.000000000 Z
11
+ date: 2014-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver