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 +4 -4
- data/lib/site_prism/deprecator.rb +2 -0
- data/lib/site_prism/dsl.rb +4 -1
- data/lib/site_prism/element_checker.rb +6 -0
- data/lib/site_prism/page.rb +16 -1
- data/lib/site_prism/section.rb +1 -1
- data/lib/site_prism/timer.rb +18 -0
- data/lib/site_prism/version.rb +1 -1
- data/lib/site_prism/waiter.rb +6 -5
- metadata +20 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 177884e3ba39ca8a9e1fa0025274c31dd1d765adbba6983f86150feeef4fa301
|
4
|
+
data.tar.gz: 0ecc59ece70808dbb774128d1cf5e7f3fcdaa4d449b27be29f403633b3535c24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/site_prism/dsl.rb
CHANGED
@@ -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
|
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
|
data/lib/site_prism/page.rb
CHANGED
@@ -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
|
152
|
+
elsif block
|
138
153
|
yield self
|
139
154
|
end
|
140
155
|
end
|
data/lib/site_prism/section.rb
CHANGED
data/lib/site_prism/timer.rb
CHANGED
@@ -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
|
data/lib/site_prism/version.rb
CHANGED
data/lib/site_prism/waiter.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SitePrism
|
4
|
+
# [SitePrism::Waiter]
|
4
5
|
class Waiter
|
5
|
-
|
6
|
-
|
7
|
-
|
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(
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|