site_prism 3.7.2 → 3.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/site_prism/addressable_url_matcher.rb +1 -1
- data/lib/site_prism/dsl.rb +9 -9
- data/lib/site_prism/loadable.rb +46 -39
- data/lib/site_prism/page.rb +5 -0
- data/lib/site_prism/version.rb +1 -1
- metadata +22 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77096cbc91dc0e53b17b8f1af09415d52be9f2859333874869af7a4b07f3e488
|
4
|
+
data.tar.gz: 3562488e2a5122a6e71a43f3f042c6c18c6b97d89ee4bee8cf39efdbbd7963e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a97080c7a80c18b4fee6e4673957a16fe9a97a98d87b2cf4d4add2ce76500b326008684626757c16a090bc8a82a3363bd85d49b2b266815bcec49897f82b394
|
7
|
+
data.tar.gz: 22b3dc450956bbfbc05e0950815395c3cc4f44b9c5c8d28553cf784b8f95872f604ba177dab2a1b75c88f386f4a86544ee2fc46f70e1cf0c771b5a0bf0123cc3
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# SitePrism
|
2
2
|
[![Gem Version](https://badge.fury.io/rb/site_prism.svg)](https://badge.fury.io/rb/site_prism)
|
3
|
-
[![Build Status](https://
|
3
|
+
[![Build Status](https://github.com/site-prism/site_prism/actions/workflows/ci.yml/badge.svg)](https://github.com/site-prism/site_prism/actions/workflows/ci.yml)
|
4
4
|
|
5
5
|
_A Page Object Model DSL for Capybara_
|
6
6
|
|
@@ -128,7 +128,7 @@ module SitePrism
|
|
128
128
|
end
|
129
129
|
|
130
130
|
# If a slug begins with non-alpha characters, it may denote the start of
|
131
|
-
# a new component (e.g. query or fragment). We emit
|
131
|
+
# a new component (e.g. query or fragment). We emit this prefix as part of
|
132
132
|
# the substituted slug so that Addressable's URI parser can see it as such.
|
133
133
|
def slug_prefix(slug)
|
134
134
|
prefix = slug.match(/\A{([^A-Za-z]+)/)
|
data/lib/site_prism/dsl.rb
CHANGED
@@ -15,28 +15,28 @@ module SitePrism
|
|
15
15
|
|
16
16
|
private
|
17
17
|
|
18
|
-
# Call `find` inside context
|
18
|
+
# Call `find` inside `to_capybara_node` context (Either Capybara::Session or Capybara::Node::Element)
|
19
19
|
def _find(*find_args)
|
20
20
|
kwargs = find_args.pop
|
21
|
-
|
21
|
+
to_capybara_node.find(*find_args, **kwargs)
|
22
22
|
end
|
23
23
|
|
24
|
-
# Call `all` inside context
|
24
|
+
# Call `all` inside `to_capybara_node` context (Either Capybara::Session or Capybara::Node::Element)
|
25
25
|
def _all(*find_args)
|
26
26
|
kwargs = find_args.pop
|
27
|
-
|
27
|
+
to_capybara_node.all(*find_args, **kwargs)
|
28
28
|
end
|
29
29
|
|
30
|
-
# Call `has_selector?` inside context
|
30
|
+
# Call `has_selector?` inside `to_capybara_node` context (Either Capybara::Session or Capybara::Node::Element)
|
31
31
|
def element_exists?(*find_args)
|
32
32
|
kwargs = find_args.pop
|
33
|
-
|
33
|
+
to_capybara_node.has_selector?(*find_args, **kwargs)
|
34
34
|
end
|
35
35
|
|
36
|
-
# Call `has_no_selector?` inside context
|
36
|
+
# Call `has_no_selector?` inside `to_capybara_node` context (Either Capybara::Session or Capybara::Node::Element)
|
37
37
|
def element_does_not_exist?(*find_args)
|
38
38
|
kwargs = find_args.pop
|
39
|
-
|
39
|
+
to_capybara_node.has_no_selector?(*find_args, **kwargs)
|
40
40
|
end
|
41
41
|
|
42
42
|
# Prevent users from calling methods with blocks when they shouldn't be.
|
@@ -103,7 +103,7 @@ module SitePrism
|
|
103
103
|
options[:wait] = Capybara.default_max_wait_time unless options.key?(:wait)
|
104
104
|
end
|
105
105
|
|
106
|
-
# SitePrism::DSL::ClassMethods
|
106
|
+
# [SitePrism::DSL::ClassMethods]
|
107
107
|
# This exposes all of the DSL definitions users will use when generating
|
108
108
|
# their POM classes.
|
109
109
|
#
|
data/lib/site_prism/loadable.rb
CHANGED
@@ -9,45 +9,6 @@ module SitePrism
|
|
9
9
|
# Loadable's are primarily used with the `#load` method which will auto-execute them all
|
10
10
|
# in their defined order. But they can be used dynamically wherever desired.
|
11
11
|
module Loadable
|
12
|
-
module ClassMethods
|
13
|
-
# The list of load_validations.
|
14
|
-
# They will be executed in the order they are defined.
|
15
|
-
#
|
16
|
-
# @return [Array]
|
17
|
-
def load_validations
|
18
|
-
if superclass.respond_to?(:load_validations)
|
19
|
-
superclass.load_validations + _load_validations
|
20
|
-
else
|
21
|
-
_load_validations
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# Appends a load validation block to the page class.
|
26
|
-
#
|
27
|
-
# When `loaded?` is called, these blocks are instance_eval'd
|
28
|
-
# against the current page instance.
|
29
|
-
# This allows users to wait for specific events to occur on
|
30
|
-
# the page or certain elements to be loaded before performing
|
31
|
-
# any actions on the page.
|
32
|
-
#
|
33
|
-
# @param block [&block] A block which returns true if the page
|
34
|
-
# loaded successfully, or false if it did not.
|
35
|
-
# This block can contain up to 2 elements in an array
|
36
|
-
# The first is the physical validation test to be truthily evaluated.
|
37
|
-
#
|
38
|
-
# If this does not pass, then the 2nd item (if defined), is output
|
39
|
-
# as an error message to the +FailedLoadValidationError+ that is thrown
|
40
|
-
def load_validation(&block)
|
41
|
-
_load_validations << block
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def _load_validations
|
47
|
-
@_load_validations ||= []
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
12
|
def self.included(base)
|
52
13
|
base.extend(ClassMethods)
|
53
14
|
end
|
@@ -106,5 +67,51 @@ module SitePrism
|
|
106
67
|
passed
|
107
68
|
end
|
108
69
|
end
|
70
|
+
|
71
|
+
# [SitePrism::Loadable::ClassMethods]
|
72
|
+
# This exposes all of the DSL definitions users will use when generating "loadables"
|
73
|
+
#
|
74
|
+
# A "Loadable" is a definition whereby the page object once loaded must pass a boolean check
|
75
|
+
# These loadables are typically provided using the method `load_validation`
|
76
|
+
module ClassMethods
|
77
|
+
# The list of load_validations.
|
78
|
+
# They will be executed in the order they are defined.
|
79
|
+
#
|
80
|
+
# @return [Array]
|
81
|
+
def load_validations
|
82
|
+
if superclass.respond_to?(:load_validations)
|
83
|
+
superclass.load_validations + _load_validations
|
84
|
+
else
|
85
|
+
_load_validations
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# Appends a load validation block to the page class.
|
90
|
+
#
|
91
|
+
# When `loaded?` is called, these blocks are instance_eval'd
|
92
|
+
# against the current page instance.
|
93
|
+
# This allows users to wait for specific events to occur on
|
94
|
+
# the page or certain elements to be loaded before performing
|
95
|
+
# any actions on the page.
|
96
|
+
#
|
97
|
+
# @param block [&block] A block which returns true if the page
|
98
|
+
# loaded successfully, or false if it did not.
|
99
|
+
# This block can contain up to 2 elements in an array
|
100
|
+
# The first is the physical validation test to be truthily evaluated.
|
101
|
+
#
|
102
|
+
# If this does not pass, then the 2nd item (if defined), is output
|
103
|
+
# as an error message to the +FailedLoadValidationError+ that is thrown
|
104
|
+
#
|
105
|
+
# @return [Proc]
|
106
|
+
def load_validation(&block)
|
107
|
+
_load_validations << block
|
108
|
+
end
|
109
|
+
|
110
|
+
private
|
111
|
+
|
112
|
+
def _load_validations
|
113
|
+
@_load_validations ||= []
|
114
|
+
end
|
115
|
+
end
|
109
116
|
end
|
110
117
|
end
|
data/lib/site_prism/page.rb
CHANGED
@@ -42,6 +42,11 @@ module SitePrism
|
|
42
42
|
(defined?(@page) && @page) || Capybara.current_session
|
43
43
|
end
|
44
44
|
|
45
|
+
# This scopes our calls inside Page correctly to the `Capybara::Session`
|
46
|
+
def to_capybara_node
|
47
|
+
page
|
48
|
+
end
|
49
|
+
|
45
50
|
# Loads the page.
|
46
51
|
# @param expansion_or_html
|
47
52
|
# @param block [&block] An optional block to run once the page is loaded.
|
data/lib/site_prism/version.rb
CHANGED
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.3
|
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-09-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -17,28 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '2.
|
20
|
+
version: '2.6'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '2.
|
27
|
+
version: '2.6'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: capybara
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '3.
|
34
|
+
version: '3.15'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '3.
|
41
|
+
version: '3.15'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: site_prism-all_there
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -63,22 +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
|
-
version: '4
|
68
|
+
version: '4'
|
69
69
|
- - "<"
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: '
|
71
|
+
version: '8'
|
72
72
|
type: :development
|
73
73
|
prerelease: false
|
74
74
|
version_requirements: !ruby/object:Gem::Requirement
|
75
75
|
requirements:
|
76
|
-
- - "
|
76
|
+
- - ">"
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: '4
|
78
|
+
version: '4'
|
79
79
|
- - "<"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '8'
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: pry-byebug
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,48 +93,34 @@ dependencies:
|
|
93
93
|
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
|
-
name: rake
|
98
|
-
requirement: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - "~>"
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '13.0'
|
103
|
-
type: :development
|
104
|
-
prerelease: false
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '13.0'
|
110
96
|
- !ruby/object:Gem::Dependency
|
111
97
|
name: rspec
|
112
98
|
requirement: !ruby/object:Gem::Requirement
|
113
99
|
requirements:
|
114
100
|
- - "~>"
|
115
101
|
- !ruby/object:Gem::Version
|
116
|
-
version: '3.
|
102
|
+
version: '3.10'
|
117
103
|
type: :development
|
118
104
|
prerelease: false
|
119
105
|
version_requirements: !ruby/object:Gem::Requirement
|
120
106
|
requirements:
|
121
107
|
- - "~>"
|
122
108
|
- !ruby/object:Gem::Version
|
123
|
-
version: '3.
|
109
|
+
version: '3.10'
|
124
110
|
- !ruby/object:Gem::Dependency
|
125
111
|
name: rubocop
|
126
112
|
requirement: !ruby/object:Gem::Requirement
|
127
113
|
requirements:
|
128
114
|
- - "~>"
|
129
115
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
116
|
+
version: 1.11.0
|
131
117
|
type: :development
|
132
118
|
prerelease: false
|
133
119
|
version_requirements: !ruby/object:Gem::Requirement
|
134
120
|
requirements:
|
135
121
|
- - "~>"
|
136
122
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
123
|
+
version: 1.11.0
|
138
124
|
- !ruby/object:Gem::Dependency
|
139
125
|
name: rubocop-performance
|
140
126
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,21 +141,21 @@ dependencies:
|
|
155
141
|
requirements:
|
156
142
|
- - "~>"
|
157
143
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
144
|
+
version: 2.2.0
|
159
145
|
type: :development
|
160
146
|
prerelease: false
|
161
147
|
version_requirements: !ruby/object:Gem::Requirement
|
162
148
|
requirements:
|
163
149
|
- - "~>"
|
164
150
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
151
|
+
version: 2.2.0
|
166
152
|
- !ruby/object:Gem::Dependency
|
167
153
|
name: selenium-webdriver
|
168
154
|
requirement: !ruby/object:Gem::Requirement
|
169
155
|
requirements:
|
170
156
|
- - ">="
|
171
157
|
- !ruby/object:Gem::Version
|
172
|
-
version: '3.
|
158
|
+
version: '3.13'
|
173
159
|
- - "<"
|
174
160
|
- !ruby/object:Gem::Version
|
175
161
|
version: '4.1'
|
@@ -179,7 +165,7 @@ dependencies:
|
|
179
165
|
requirements:
|
180
166
|
- - ">="
|
181
167
|
- !ruby/object:Gem::Version
|
182
|
-
version: '3.
|
168
|
+
version: '3.13'
|
183
169
|
- - "<"
|
184
170
|
- !ruby/object:Gem::Version
|
185
171
|
version: '4.1'
|
@@ -203,14 +189,14 @@ dependencies:
|
|
203
189
|
requirements:
|
204
190
|
- - "~>"
|
205
191
|
- !ruby/object:Gem::Version
|
206
|
-
version: '4.
|
192
|
+
version: '4.6'
|
207
193
|
type: :development
|
208
194
|
prerelease: false
|
209
195
|
version_requirements: !ruby/object:Gem::Requirement
|
210
196
|
requirements:
|
211
197
|
- - "~>"
|
212
198
|
- !ruby/object:Gem::Version
|
213
|
-
version: '4.
|
199
|
+
version: '4.6'
|
214
200
|
description: SitePrism gives you a simple, clean and semantic DSL for describing your
|
215
201
|
site. SitePrism implements the Page Object Model pattern on top of Capybara.
|
216
202
|
email:
|