ae_page_objects 4.1.0 → 4.3.1.tim3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: dd0afd4ed4d86badecf47afd9e5fce2fe456482e
4
- data.tar.gz: f3d63d6237c9bc2c803375fcb6495e12ac5822dd
2
+ SHA256:
3
+ metadata.gz: b0025f2cd90d1613fc5699f80dfe27de1e9117d3d1045d200199cadf7073b7c9
4
+ data.tar.gz: 6dae02265d6ab3c436fe415c09f040276d290d0c5c63e94b0b30c3dc841d4196
5
5
  SHA512:
6
- metadata.gz: 0dff0c3a6baaa42c9262d26c0bd283506c70fa8663cb027ae046c03730e0e6268cca305c62ca4d9e779f721541318a719760d34159712e7d59e76763a4e8cbe2
7
- data.tar.gz: b2ac6e9d0ed2bb3b8b3257653326810579b00b06806ae21d613f82153f9e2842e29f928f77865dead6d0aa9b9a48d4927fa84ac3e6d7bd1bc57c4daa00c64b01
6
+ metadata.gz: f9f846b4daa76ef8d3f59c96bedd65c79bc474c474744c31d5903ad355b89a5e19463793b04174633a10f580dfecf2839ec69276f18e695ea43eda83887697fa
7
+ data.tar.gz: ed76dbaa70c21b1a1cc62f4b0e7976064c664b4181aeb39ec0614c95dc9e097c79a4195d8f2ea015c177eddf1cee63ba8885a4203bc2a3a9a55dfead7d683f90
@@ -16,31 +16,21 @@ module AePageObjects
16
16
  end
17
17
 
18
18
  def visible?(options = {})
19
- wait_until_visible(options[:wait])
20
- true
21
- rescue ElementNotVisible
22
- false
19
+ reload_element
20
+ @loaded_element&.visible?
23
21
  end
24
22
 
25
23
  def hidden?(options = {})
26
- wait_until_hidden(options[:wait])
27
- true
28
- rescue ElementNotHidden
29
- false
24
+ !visible?
30
25
  end
31
26
 
32
27
  def present?(options = {})
33
- wait_until_present(options[:wait])
34
- true
35
- rescue ElementNotPresent
36
- false
28
+ reload_element
29
+ !@loaded_element.nil?
37
30
  end
38
31
 
39
32
  def absent?(options = {})
40
- wait_until_absent(options[:wait])
41
- true
42
- rescue ElementNotAbsent
43
- false
33
+ !present?
44
34
  end
45
35
 
46
36
  def presence
@@ -123,8 +113,19 @@ module AePageObjects
123
113
 
124
114
  private
125
115
 
126
- def load_element
127
- @element_class.new(*@args)
116
+ def load_element(wait: true)
117
+ args = @args.dup
118
+
119
+ options_or_locator = args.pop
120
+ options = if options_or_locator.is_a?(Hash)
121
+ options_or_locator.dup.merge(wait: wait)
122
+ else
123
+ { locator: options_or_locator, wait: wait }
124
+ end
125
+
126
+ args << options
127
+
128
+ @element_class.new(*args)
128
129
  end
129
130
 
130
131
  def implicit_element
@@ -132,7 +133,7 @@ module AePageObjects
132
133
  end
133
134
 
134
135
  def reload_element
135
- @loaded_element = load_element
136
+ @loaded_element = load_element(wait: false)
136
137
  rescue LoadingElementFailed
137
138
  @loaded_element = nil
138
139
  end
@@ -41,7 +41,19 @@ module AePageObjects
41
41
  end
42
42
 
43
43
  def size
44
- node.all(:xpath, item_xpath, options.merge(wait: false)).size
44
+ #
45
+ # In some cases when #size is called while the DOM is updating, Capybara
46
+ # will catch (and swallow) underlying exceptions such as
47
+ # `Selenium::WebDriver::Error::StaleElementReferenceError`.
48
+ # When this happens it will wait up to the max wait time, which can cause
49
+ # issues for `AePageObjects.wait_until` blocks.
50
+ #
51
+ # To prevent this issue the #all and #size calls are made with the Capybara
52
+ # wait time set to 0.
53
+ #
54
+ Capybara.using_wait_time(0) do
55
+ node.all(:xpath, item_xpath, options).size
56
+ end
45
57
  end
46
58
 
47
59
  def last
@@ -133,12 +133,12 @@ module AePageObjects
133
133
  private
134
134
 
135
135
  def recognizer
136
- @recognizer ||= case ::Rails.version
137
- when /\A3\.[01]/
136
+ @recognizer ||= case ::Rails.gem_version
137
+ when Gem::Requirement.new('>= 3.0', '< 3.2')
138
138
  Recognizer::Rails3.new
139
- when /\A3\.2/
139
+ when Gem::Requirement.new('~> 3.2')
140
140
  Recognizer::Rails32.new
141
- when /\A(4\.[012]|5\.0)/
141
+ when Gem::Requirement.new('>= 4.0', '< 7.0')
142
142
  Recognizer::Rails4Plus.new
143
143
  else
144
144
  warn "[WARNING]: AePageObjects is not tested against Rails #{::Rails.version} and may behave in an undefined manner."
@@ -1,3 +1,3 @@
1
1
  module AePageObjects
2
- VERSION = '4.1.0'.freeze
2
+ VERSION = '4.3.1.tim3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ae_page_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.3.1.tim3
5
5
  platform: ruby
6
6
  authors:
7
7
  - AppFolio Engineering
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-29 00:00:00.000000000 Z
11
+ date: 2021-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -64,7 +64,7 @@ homepage: http://github.com/appfolio/ae_page_objects
64
64
  licenses:
65
65
  - MIT
66
66
  metadata: {}
67
- post_install_message:
67
+ post_install_message:
68
68
  rdoc_options: []
69
69
  require_paths:
70
70
  - lib
@@ -75,13 +75,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
75
  version: 2.2.5
76
76
  required_rubygems_version: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - ">"
79
79
  - !ruby/object:Gem::Version
80
- version: '0'
80
+ version: 1.3.1
81
81
  requirements: []
82
- rubyforge_project:
83
- rubygems_version: 2.5.2
84
- signing_key:
82
+ rubygems_version: 3.1.4
83
+ signing_key:
85
84
  specification_version: 4
86
85
  summary: Capybara Page Objects pattern
87
86
  test_files: []