site_prism 3.7.1 → 3.7.2

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
  SHA256:
3
- metadata.gz: c5deda0d9df9e83e2a66663a217cf5c434fd3ed25abae0d14778d99cd5db1c0f
4
- data.tar.gz: 6c86aff27c00c5e91b01667f7da1f9ee6e2d33d4f95d18fbb0cfdd9fd44779c5
3
+ metadata.gz: 177884e3ba39ca8a9e1fa0025274c31dd1d765adbba6983f86150feeef4fa301
4
+ data.tar.gz: 0ecc59ece70808dbb774128d1cf5e7f3fcdaa4d449b27be29f403633b3535c24
5
5
  SHA512:
6
- metadata.gz: 254398e151d390326bf085d0746391aedd247d1ed8bf47909d8fb87752b6cedd056ff32c14f324d5b33f4b922734ed01ec2467f64be59a8d97a07cf8aa002eea
7
- data.tar.gz: 652781ebe825ed5f943ca0f8480a9b5fbd511e81e6c12d9ce95de7c3239073d4499f4165044c8c58888aeabf0cf2d9bc76e4ca6f2ae6baa6996093117577005a
6
+ metadata.gz: 5f402e20e4888f02d4c7695289239c1b4dfca44b47e90029699efe4ec050b2d173f78c1e427f1dbd0647c9b8238397f1c34d22697601b5f36689266f942729b7
7
+ data.tar.gz: 549ac4b1187a96807c34475961999bcfaa6761fceba70cf13bdcedfdce13c86b23aad1fa700bcda122841a057bd258023f26ffc270194a8258d98756b3bf294c
@@ -5,6 +5,7 @@ module SitePrism
5
5
  class Deprecator
6
6
  class << self
7
7
  # @return SitePrism.logger.warn(msg)
8
+ #
8
9
  # Tells the user that they are using old functionality, which needs removing in the
9
10
  # next major version
10
11
  def deprecate(old, new = nil)
@@ -18,6 +19,7 @@ module SitePrism
18
19
  end
19
20
 
20
21
  # @return SitePrism.logger.debug(msg)
22
+ #
21
23
  # Tells the user that they are using functionality which is non-optimal
22
24
  # The functionality should usually provide a reason for it being poor, as well as an
23
25
  # optional way of upgrading to something different
@@ -197,6 +197,9 @@ module SitePrism
197
197
  end
198
198
  end
199
199
 
200
+ # Return a list of all mapped items on a SitePrism class instance (Page or Section)
201
+ # If legacy is set to true (Default) -> @return [Array]
202
+ # If legacy is set to false (New behaviour) -> @return [Hash]
200
203
  def mapped_items(legacy: true)
201
204
  return old_mapped_items if legacy
202
205
 
@@ -342,7 +345,7 @@ module SitePrism
342
345
 
343
346
  def deduce_section_class(base_class, &block)
344
347
  klass = base_class
345
- klass = Class.new(klass || SitePrism::Section, &block) if block_given?
348
+ klass = Class.new(klass || SitePrism::Section, &block) if block
346
349
  return klass if klass
347
350
 
348
351
  raise ArgumentError, 'You should provide descendant of SitePrism::Section class or/and a block as the second argument.'
@@ -35,10 +35,16 @@ module SitePrism
35
35
  end
36
36
  end
37
37
 
38
+ # Returns each element that is currently present inside the scope being tested
39
+ #
40
+ # @return [Array]
38
41
  def elements_present
39
42
  _mapped_items.select { |name| there?(name) }
40
43
  end
41
44
 
45
+ # Returns each element that is not currently present inside the scope being tested
46
+ #
47
+ # @return [Array]
42
48
  def elements_missing
43
49
  elements_to_check.reject { |name| there?(name) }
44
50
  end
@@ -10,19 +10,34 @@ module SitePrism
10
10
  class << self
11
11
  attr_reader :url
12
12
 
13
+ # Sets and returns the specific url that will be loaded for a page object
14
+ #
15
+ # @return [String]
13
16
  def set_url(page_url)
14
17
  @url = page_url.to_s
15
18
  end
16
19
 
20
+ # Sets and returns the specific url matcher that will be used to validate the page is loaded
21
+ #
22
+ # @return [Regexp]
17
23
  def set_url_matcher(page_url_matcher)
18
24
  @url_matcher = page_url_matcher
19
25
  end
20
26
 
27
+ # The specific url matcher that is used to validate the page is loaded.
28
+ # When one hasn't been previously set, use the url that was set as a direct Regexp exact matcher
29
+ #
30
+ # @return [Regexp]
21
31
  def url_matcher
22
32
  @url_matcher ||= url
23
33
  end
24
34
  end
25
35
 
36
+ # Where a Capybara HTML fragment has been directly injected into `#load` as a block return this loaded fragment
37
+ # Where a page has been directly navigated to through traditional means (i.e. Selenium), return an instance of the
38
+ # current Capybara session (With all applicable methods)
39
+ #
40
+ # @return [Capybara::Node::Simple || Capybara::Session]
26
41
  def page
27
42
  (defined?(@page) && @page) || Capybara.current_session
28
43
  end
@@ -134,7 +149,7 @@ module SitePrism
134
149
  visit expanded_url
135
150
  if with_validations
136
151
  when_loaded(&block)
137
- elsif block_given?
152
+ elsif block
138
153
  yield self
139
154
  end
140
155
  end
@@ -34,7 +34,7 @@ module SitePrism
34
34
  def initialize(parent, root_element, &block)
35
35
  @parent = parent
36
36
  @root_element = root_element
37
- within(&block) if block_given?
37
+ within(&block) if block
38
38
  end
39
39
 
40
40
  # Send all root_element methods through `#root_element`
@@ -1,9 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
+ # [SitePrism::Timer]
5
+ #
6
+ # Used to count asynchronously towards an overall desired duration or condition (Block)
4
7
  class Timer
5
8
  attr_reader :wait_time
6
9
 
10
+ # Return &block
11
+ #
12
+ # Count towards a specified time (Supplied)
7
13
  def self.run(wait_time, &block)
8
14
  new(wait_time).run(&block)
9
15
  end
@@ -13,10 +19,16 @@ module SitePrism
13
19
  @done = false
14
20
  end
15
21
 
22
+ # Return Boolean
23
+ #
24
+ # Whether the timer has completed
16
25
  def done?
17
26
  @done == true
18
27
  end
19
28
 
29
+ # Return &block
30
+ #
31
+ # Start the Timer and re-evaluate the block repeatedly
20
32
  def run
21
33
  start
22
34
  yield self
@@ -24,6 +36,9 @@ module SitePrism
24
36
  stop
25
37
  end
26
38
 
39
+ # Return [Boolean, Nil]
40
+ #
41
+ # Start the Timer in a separate process
27
42
  def start
28
43
  stop
29
44
  return if wait_time.zero?
@@ -35,6 +50,9 @@ module SitePrism
35
50
  end
36
51
  end
37
52
 
53
+ # Return True
54
+ #
55
+ # Forcibly stop the timer, and kill any threads created by it
38
56
  def stop
39
57
  if @thread
40
58
  @thread.kill
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
- VERSION = '3.7.1'
4
+ VERSION = '3.7.2'
5
5
  end
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
+ # [SitePrism::Waiter]
4
5
  class Waiter
5
- def self.sleep_duration
6
- 0.05
7
- end
8
-
6
+ # @return Boolean
7
+ #
8
+ # A looper that will wait until the passed in block evaluates to true
9
+ # Alternatively it will time out once the wait_time is exceeded
9
10
  def self.wait_until_true(wait_time = Capybara.default_max_wait_time)
10
11
  Timer.run(wait_time) do |timer|
11
12
  loop do
12
13
  return true if yield
13
14
  break if timer.done?
14
15
 
15
- sleep(sleep_duration)
16
+ sleep(0.05)
16
17
  end
17
18
  raise SitePrism::TimeoutError, "Timed out after #{wait_time}s."
18
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: site_prism
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.1
4
+ version: 3.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Hill
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-02-19 00:00:00.000000000 Z
12
+ date: 2021-08-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
@@ -63,16 +63,22 @@ dependencies:
63
63
  name: cucumber
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '4.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '5.2'
69
72
  type: :development
70
73
  prerelease: false
71
74
  version_requirements: !ruby/object:Gem::Requirement
72
75
  requirements:
73
- - - "~>"
76
+ - - ">="
74
77
  - !ruby/object:Gem::Version
75
78
  version: '4.0'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '5.2'
76
82
  - !ruby/object:Gem::Dependency
77
83
  name: pry-byebug
78
84
  requirement: !ruby/object:Gem::Requirement
@@ -121,42 +127,42 @@ dependencies:
121
127
  requirements:
122
128
  - - "~>"
123
129
  - !ruby/object:Gem::Version
124
- version: 0.90.0
130
+ version: 0.93.0
125
131
  type: :development
126
132
  prerelease: false
127
133
  version_requirements: !ruby/object:Gem::Requirement
128
134
  requirements:
129
135
  - - "~>"
130
136
  - !ruby/object:Gem::Version
131
- version: 0.90.0
137
+ version: 0.93.0
132
138
  - !ruby/object:Gem::Dependency
133
139
  name: rubocop-performance
134
140
  requirement: !ruby/object:Gem::Requirement
135
141
  requirements:
136
142
  - - "~>"
137
143
  - !ruby/object:Gem::Version
138
- version: 1.8.1
144
+ version: 1.10.1
139
145
  type: :development
140
146
  prerelease: false
141
147
  version_requirements: !ruby/object:Gem::Requirement
142
148
  requirements:
143
149
  - - "~>"
144
150
  - !ruby/object:Gem::Version
145
- version: 1.8.1
151
+ version: 1.10.1
146
152
  - !ruby/object:Gem::Dependency
147
153
  name: rubocop-rspec
148
154
  requirement: !ruby/object:Gem::Requirement
149
155
  requirements:
150
156
  - - "~>"
151
157
  - !ruby/object:Gem::Version
152
- version: 1.38.0
158
+ version: 1.44.0
153
159
  type: :development
154
160
  prerelease: false
155
161
  version_requirements: !ruby/object:Gem::Requirement
156
162
  requirements:
157
163
  - - "~>"
158
164
  - !ruby/object:Gem::Version
159
- version: 1.38.0
165
+ version: 1.44.0
160
166
  - !ruby/object:Gem::Dependency
161
167
  name: selenium-webdriver
162
168
  requirement: !ruby/object:Gem::Requirement
@@ -183,28 +189,28 @@ dependencies:
183
189
  requirements:
184
190
  - - "~>"
185
191
  - !ruby/object:Gem::Version
186
- version: '0.17'
192
+ version: '0.18'
187
193
  type: :development
188
194
  prerelease: false
189
195
  version_requirements: !ruby/object:Gem::Requirement
190
196
  requirements:
191
197
  - - "~>"
192
198
  - !ruby/object:Gem::Version
193
- version: '0.17'
199
+ version: '0.18'
194
200
  - !ruby/object:Gem::Dependency
195
201
  name: webdrivers
196
202
  requirement: !ruby/object:Gem::Requirement
197
203
  requirements:
198
204
  - - "~>"
199
205
  - !ruby/object:Gem::Version
200
- version: '4.3'
206
+ version: '4.5'
201
207
  type: :development
202
208
  prerelease: false
203
209
  version_requirements: !ruby/object:Gem::Requirement
204
210
  requirements:
205
211
  - - "~>"
206
212
  - !ruby/object:Gem::Version
207
- version: '4.3'
213
+ version: '4.5'
208
214
  description: SitePrism gives you a simple, clean and semantic DSL for describing your
209
215
  site. SitePrism implements the Page Object Model pattern on top of Capybara.
210
216
  email: