gridium 1.1.10 → 1.1.11

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: bf5a9c8f3df0f9978e83575bad02a71c85ec17d7
4
- data.tar.gz: 2fb3b033b7f5f295d6d3921c438c5a36c10146c0
3
+ metadata.gz: 21c60d0c86933dc7c134b4a1df4477e7383f7e4b
4
+ data.tar.gz: ac75c7b23af931d5922504a683a5d7b549ae6d31
5
5
  SHA512:
6
- metadata.gz: ec1ce374dbf1796c28af13fdd05c37ad86ee525589f78ac1f7be8b44590d035723b0c8f5a3d75ba8d443d403e02c4262d231a5ce394eac5e9e125a4b834a60fe
7
- data.tar.gz: c8da2b2a07d475805b867052a7bea04150da3f850258df9f1fef1f48856d8bfd68858e35eb04875f841663b328c33b5933dd8ec227944e6da71f77d1c59e3429
6
+ metadata.gz: e47b40b45770b778ba05e13a0fee50578cedc829172d66fb40f3bb03b3a6a6e719cd7215403bfb512392751960956e0b219dd63ba563140b108d574cd195ad59
7
+ data.tar.gz: 0e6d8a037c6fcfd25ec5c88a2b8237fde5be80bbbb05c54478d6f63dfc5a07f10a79f50d34af19e217f0add8d8d7c1b7b591100490da984becd9cf9a1515953f
data/bin/start CHANGED
@@ -7,8 +7,7 @@ main(){
7
7
  docker exec $(docker-compose ps -q gridium) bundle install;
8
8
  ;;
9
9
  -d) #start in development mode
10
- ${BUILD_NUMBER:=dev}
11
- export BUILD_NUMBER
10
+ export BUILD_NUMBER=${BUILD_NUMBER:=dev}
12
11
  docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
13
12
  docker exec $(docker-compose ps -q gridium) bundle install;
14
13
  ;;
@@ -10,7 +10,7 @@ class Driver
10
10
  Log.debug("[Gridium::Driver] Driver.reset: #{@@driver}")
11
11
  driver.manage.delete_all_cookies
12
12
  driver.manage.timeouts.page_load = Gridium.config.page_load_timeout
13
- driver.manage.timeouts.implicit_wait = Gridium.config.element_timeout
13
+ driver.manage.timeouts.implicit_wait = 0 # always use explicit waits!
14
14
 
15
15
  # Ensure the browser is maximized to maximize visibility of element
16
16
  # Ensure the browser is maximized to maximize visibility of element
@@ -29,9 +29,11 @@ class Element
29
29
  "'#{@name}' (By:#{@by} => '#{@locator}')"
30
30
  end
31
31
 
32
- def element
32
+ def element(opts = {})
33
+ timeout = opts[:timeout].nil? ? Gridium.config.element_timeout : opts[:timeout]
34
+
33
35
  if stale?
34
- wait = Selenium::WebDriver::Wait.new :timeout => Gridium.config.element_timeout, :interval => 1
36
+ wait = Selenium::WebDriver::Wait.new :timeout => timeout, :interval => 1
35
37
  if Gridium.config.visible_elements_only
36
38
  wait.until { @element = displayed_element }
37
39
  else
@@ -76,16 +78,14 @@ class Element
76
78
  # ================ #
77
79
 
78
80
  # soft failure, will not kill test immediately
79
- def verify(timeout: nil)
81
+ def verify(timeout: Gridium.config.element_timeout)
80
82
  Log.debug('[GRIDIUM::Element] Verifying new element...')
81
- timeout = Gridium.config.element_timeout if timeout.nil?
82
83
  ElementVerification.new(self, timeout)
83
84
  end
84
85
 
85
86
  # hard failure, will kill test immediately
86
- def wait_until(timeout: nil)
87
+ def wait_until(timeout: Gridium.config.element_timeout)
87
88
  Log.debug('[GRIDIUM::Element] Waiting for new element...')
88
- timeout = Gridium.config.element_timeout if timeout.nil?
89
89
  ElementVerification.new(self, timeout, fail_test: true)
90
90
  end
91
91
 
@@ -97,8 +97,6 @@ class Element
97
97
  element.css_value(name)
98
98
  end
99
99
 
100
-
101
-
102
100
  def present?
103
101
  return element.enabled?
104
102
  rescue StandardError => error
@@ -258,7 +256,7 @@ class Element
258
256
  else
259
257
  Log.error('[GRIDIUM::Element] Cannot jquery_click. Element is not present.')
260
258
  end
261
- end
259
+ end
262
260
 
263
261
  def size
264
262
  element.size
@@ -29,10 +29,10 @@ class Gridium::ElementVerification
29
29
  end
30
30
 
31
31
  if should_have_text
32
- fail_message = "Element should contain text (#{text}), but does not."
32
+ fail_message = "Element should contain text (#{text}), but does not. timed out after #{@timeout} seconds"
33
33
  pass_message = "contains text (#{text})."
34
34
  else
35
- fail_message = "Element should not contain text (#{text}), but does."
35
+ fail_message = "Element should not contain text (#{text}), but does. timed out after #{@timeout} seconds"
36
36
  pass_message = "does not contain text (#{text}). Actual text is: (#{element_text})."
37
37
  end
38
38
 
@@ -49,6 +49,7 @@ class Gridium::ElementVerification
49
49
  ElementExtensions.highlight(@element) if Gridium.config.highlight_verifications
50
50
  log_success(pass_message)
51
51
  else
52
+ # TODO: @rizzza: This `.not` case is wrong. It bails too early and does not evaluate with the wait block
52
53
  log_issue("#{fail_message} Element's text is: (#{element_text}).")
53
54
  end
54
55
  end
@@ -62,17 +63,17 @@ class Gridium::ElementVerification
62
63
  should_be_visible = @should_exist
63
64
 
64
65
  if should_be_visible
65
- fail_message = "Element should be visible."
66
+ fail_message = "Element should be visible. timed out after #{@timeout} seconds"
66
67
  pass_message = "Element is visible."
67
68
  else
68
- fail_message = "Element should not be visible."
69
+ fail_message = "Element should not be visible. timed out after #{@timeout} seconds"
69
70
  pass_message = "Element is not visible."
70
71
  end
71
72
 
72
73
  wait = Selenium::WebDriver::Wait.new :timeout => @timeout, :interval => 1
73
74
  begin
74
75
  wait.until do
75
- element_is_displayed = @element.displayed?
76
+ element_is_displayed = @element.element(timeout: @timeout).displayed?
76
77
  if element_is_displayed && should_be_visible
77
78
  ElementExtensions.highlight(@element) if Gridium.config.highlight_verifications
78
79
  log_success(pass_message)
@@ -81,6 +82,7 @@ class Gridium::ElementVerification
81
82
  Log.debug("[GRIDIUM::ElementVerification] Confirming element is NOT visible...")
82
83
  log_success(pass_message)
83
84
  else
85
+ # TODO: @rizzza: This `.not` case is wrong. It bails too early and does not evaluate with the wait block
84
86
  log_issue(fail_message)
85
87
  end
86
88
  end
@@ -94,17 +96,17 @@ class Gridium::ElementVerification
94
96
  should_be_present = @should_exist
95
97
 
96
98
  if should_be_present
97
- fail_message = "Element should be present."
99
+ fail_message = "Element should be present. timed out after #{@timeout} seconds"
98
100
  pass_message = "is present."
99
101
  else
100
- fail_message = "Element should NOT be present."
102
+ fail_message = "Element should NOT be present. timed out after #{@timeout} seconds"
101
103
  pass_message = "is not present."
102
104
  end
103
105
 
104
106
  wait = Selenium::WebDriver::Wait.new :timeout => @timeout, :interval => 1
105
107
  begin
106
108
  wait.until do
107
- element_is_present = @element.present?
109
+ element_is_present = @element.element(timeout: @timeout).present?
108
110
  if element_is_present && should_be_present
109
111
  ElementExtensions.highlight(@element) if Gridium.config.highlight_verifications
110
112
  log_success(pass_message)
@@ -113,6 +115,7 @@ class Gridium::ElementVerification
113
115
  Log.debug("[GRIDIUM::ElementVerification] Confirming element is NOT present...")
114
116
  log_success(pass_message)
115
117
  else
118
+ # TODO: @rizzza: This `.not` case is wrong. It bails too early and does not evaluate with the wait block
116
119
  log_issue(fail_message)
117
120
  end
118
121
  end
@@ -147,7 +150,7 @@ class Gridium::ElementVerification
147
150
  if @fail_test
148
151
  Log.error("[GRIDIUM::ElementVerification] #{message} ['#{@element.name}' (By:(#{@element.by} => '#{@element.locator}'))].")
149
152
  $fail_test_instantly = true
150
- Kernel.fail(message)
153
+ raise Selenium::WebDriver::Error::TimeOutError, message
151
154
  else
152
155
  Log.error("[GRIDIUM::ElementVerification] #{message} ['#{@element.name}' (By:(#{@element.by} => '#{@element.locator}'))].")
153
156
  $fail_test_at_end = true
@@ -89,6 +89,8 @@ module Gridium
89
89
  Timeout.timeout(Gridium.config.page_load_timeout) do
90
90
  loop until jquery_loaded?
91
91
  end
92
+ rescue Timeout::Error => e
93
+ Log.warn("[GRIDIUM::Page] Timed-out waiting for ajax")
92
94
  end
93
95
 
94
96
  def self.jquery_loaded?
@@ -98,9 +100,9 @@ module Gridium
98
100
  #
99
101
  # JQuery click
100
102
  # @param [String] CSS selector
101
- #
102
- # Occasionaly selenium is unable to click on elements in the DOM which have some
103
- # interesting React goodies around the element.
103
+ #
104
+ # Occasionaly selenium is unable to click on elements in the DOM which have some
105
+ # interesting React goodies around the element.
104
106
  #
105
107
  def self.jquery_click(selector)
106
108
  Driver.evaluate_script("$(\"#{selector}\").click().change();")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gridium
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.10
4
+ version: 1.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Urban
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-26 00:00:00.000000000 Z
11
+ date: 2017-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler