site_prism 3.7.1 → 3.7.2
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|