site_prism 4.0.3 → 5.0
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/README.md +60 -54
- data/lib/site_prism/deprecator.rb +2 -21
- data/lib/site_prism/dsl/builder.rb +144 -0
- data/lib/site_prism/dsl/locators.rb +85 -0
- data/lib/site_prism/dsl/methods.rb +135 -0
- data/lib/site_prism/dsl/validator.rb +95 -0
- data/lib/site_prism/dsl.rb +14 -327
- data/lib/site_prism/element_checker.rb +2 -2
- data/lib/site_prism/error.rb +4 -1
- data/lib/site_prism/loadable.rb +13 -23
- data/lib/site_prism/logger.rb +1 -1
- data/lib/site_prism/page.rb +4 -15
- data/lib/site_prism/version.rb +1 -1
- data/lib/site_prism.rb +7 -3
- metadata +51 -36
- data/lib/site_prism/dsl_validator.rb +0 -75
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:
|
4
|
+
version: '5.0'
|
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: 2023-
|
12
|
+
date: 2023-12-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -18,6 +18,9 @@ dependencies:
|
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '2.8'
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.8.1
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -25,54 +28,77 @@ dependencies:
|
|
25
28
|
- - "~>"
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '2.8'
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.8.1
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
name: capybara
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
31
37
|
requirements:
|
32
38
|
- - "~>"
|
33
39
|
- !ruby/object:Gem::Version
|
34
|
-
version: '3.
|
40
|
+
version: '3.31'
|
35
41
|
type: :runtime
|
36
42
|
prerelease: false
|
37
43
|
version_requirements: !ruby/object:Gem::Requirement
|
38
44
|
requirements:
|
39
45
|
- - "~>"
|
40
46
|
- !ruby/object:Gem::Version
|
41
|
-
version: '3.
|
47
|
+
version: '3.31'
|
42
48
|
- !ruby/object:Gem::Dependency
|
43
49
|
name: site_prism-all_there
|
44
50
|
requirement: !ruby/object:Gem::Requirement
|
45
51
|
requirements:
|
46
|
-
- - "
|
52
|
+
- - ">"
|
47
53
|
- !ruby/object:Gem::Version
|
48
|
-
version: '2
|
54
|
+
version: '2'
|
55
|
+
- - "<"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '5'
|
49
58
|
type: :runtime
|
50
59
|
prerelease: false
|
60
|
+
version_requirements: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '2'
|
65
|
+
- - "<"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '5'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: automation_helpers
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '4.0'
|
75
|
+
type: :development
|
76
|
+
prerelease: false
|
51
77
|
version_requirements: !ruby/object:Gem::Requirement
|
52
78
|
requirements:
|
53
79
|
- - "~>"
|
54
80
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
81
|
+
version: '4.0'
|
56
82
|
- !ruby/object:Gem::Dependency
|
57
83
|
name: cucumber
|
58
84
|
requirement: !ruby/object:Gem::Requirement
|
59
85
|
requirements:
|
60
86
|
- - ">"
|
61
87
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
88
|
+
version: '7'
|
63
89
|
- - "<"
|
64
90
|
- !ruby/object:Gem::Version
|
65
|
-
version: '
|
91
|
+
version: '10'
|
66
92
|
type: :development
|
67
93
|
prerelease: false
|
68
94
|
version_requirements: !ruby/object:Gem::Requirement
|
69
95
|
requirements:
|
70
96
|
- - ">"
|
71
97
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
98
|
+
version: '7'
|
73
99
|
- - "<"
|
74
100
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
101
|
+
version: '10'
|
76
102
|
- !ruby/object:Gem::Dependency
|
77
103
|
name: rspec
|
78
104
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,56 +119,56 @@ dependencies:
|
|
93
119
|
requirements:
|
94
120
|
- - "~>"
|
95
121
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
122
|
+
version: 1.57.1
|
97
123
|
type: :development
|
98
124
|
prerelease: false
|
99
125
|
version_requirements: !ruby/object:Gem::Requirement
|
100
126
|
requirements:
|
101
127
|
- - "~>"
|
102
128
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
129
|
+
version: 1.57.1
|
104
130
|
- !ruby/object:Gem::Dependency
|
105
131
|
name: rubocop-performance
|
106
132
|
requirement: !ruby/object:Gem::Requirement
|
107
133
|
requirements:
|
108
134
|
- - "~>"
|
109
135
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
136
|
+
version: 1.19.0
|
111
137
|
type: :development
|
112
138
|
prerelease: false
|
113
139
|
version_requirements: !ruby/object:Gem::Requirement
|
114
140
|
requirements:
|
115
141
|
- - "~>"
|
116
142
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.
|
143
|
+
version: 1.19.0
|
118
144
|
- !ruby/object:Gem::Dependency
|
119
145
|
name: rubocop-rspec
|
120
146
|
requirement: !ruby/object:Gem::Requirement
|
121
147
|
requirements:
|
122
148
|
- - "~>"
|
123
149
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.
|
150
|
+
version: 2.25.0
|
125
151
|
type: :development
|
126
152
|
prerelease: false
|
127
153
|
version_requirements: !ruby/object:Gem::Requirement
|
128
154
|
requirements:
|
129
155
|
- - "~>"
|
130
156
|
- !ruby/object:Gem::Version
|
131
|
-
version: 2.
|
157
|
+
version: 2.25.0
|
132
158
|
- !ruby/object:Gem::Dependency
|
133
159
|
name: selenium-webdriver
|
134
160
|
requirement: !ruby/object:Gem::Requirement
|
135
161
|
requirements:
|
136
162
|
- - "~>"
|
137
163
|
- !ruby/object:Gem::Version
|
138
|
-
version: '4.
|
164
|
+
version: '4.7'
|
139
165
|
type: :development
|
140
166
|
prerelease: false
|
141
167
|
version_requirements: !ruby/object:Gem::Requirement
|
142
168
|
requirements:
|
143
169
|
- - "~>"
|
144
170
|
- !ruby/object:Gem::Version
|
145
|
-
version: '4.
|
171
|
+
version: '4.7'
|
146
172
|
- !ruby/object:Gem::Dependency
|
147
173
|
name: simplecov
|
148
174
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,20 +183,6 @@ dependencies:
|
|
157
183
|
- - "~>"
|
158
184
|
- !ruby/object:Gem::Version
|
159
185
|
version: '0.21'
|
160
|
-
- !ruby/object:Gem::Dependency
|
161
|
-
name: webdrivers
|
162
|
-
requirement: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - "~>"
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '5.0'
|
167
|
-
type: :development
|
168
|
-
prerelease: false
|
169
|
-
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '5.0'
|
174
186
|
description: SitePrism gives you a simple, clean and semantic DSL for describing your
|
175
187
|
site. SitePrism implements the Page Object Model pattern on top of Capybara.
|
176
188
|
email:
|
@@ -186,7 +198,10 @@ files:
|
|
186
198
|
- lib/site_prism/addressable_url_matcher.rb
|
187
199
|
- lib/site_prism/deprecator.rb
|
188
200
|
- lib/site_prism/dsl.rb
|
189
|
-
- lib/site_prism/
|
201
|
+
- lib/site_prism/dsl/builder.rb
|
202
|
+
- lib/site_prism/dsl/locators.rb
|
203
|
+
- lib/site_prism/dsl/methods.rb
|
204
|
+
- lib/site_prism/dsl/validator.rb
|
190
205
|
- lib/site_prism/element_checker.rb
|
191
206
|
- lib/site_prism/error.rb
|
192
207
|
- lib/site_prism/loadable.rb
|
@@ -212,14 +227,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
212
227
|
requirements:
|
213
228
|
- - ">="
|
214
229
|
- !ruby/object:Gem::Version
|
215
|
-
version: '2.
|
230
|
+
version: '2.7'
|
216
231
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
217
232
|
requirements:
|
218
233
|
- - ">="
|
219
234
|
- !ruby/object:Gem::Version
|
220
235
|
version: '0'
|
221
236
|
requirements: []
|
222
|
-
rubygems_version: 3.
|
237
|
+
rubygems_version: 3.2.3
|
223
238
|
signing_key:
|
224
239
|
specification_version: 4
|
225
240
|
summary: A Page Object Model DSL for Capybara
|
@@ -1,75 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SitePrism
|
4
|
-
# [SitePrism::DSLValidator]
|
5
|
-
#
|
6
|
-
# This is the new validator module which will check all DSL items against a whitelist
|
7
|
-
# for any entries which are prohibited
|
8
|
-
module DSLValidator
|
9
|
-
def invalid?(name)
|
10
|
-
prefix_invalid?(name) ||
|
11
|
-
suffix_invalid?(name) ||
|
12
|
-
characters_invalid?(name) ||
|
13
|
-
blacklisted?(name)
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def prefix_invalid?(name)
|
19
|
-
prefix_blacklist.any? { |prefix| name.start_with?(prefix) }.tap { |result| log_failure(name, 'prefix') unless result }
|
20
|
-
end
|
21
|
-
|
22
|
-
def suffix_invalid?(name)
|
23
|
-
suffix_blacklist.any? { |prefix| name.end_with?(prefix) }.tap { |result| log_failure(name, 'suffix') unless result }
|
24
|
-
end
|
25
|
-
|
26
|
-
def characters_invalid?(name)
|
27
|
-
!name.match?(regex_permission).tap { |result| log_failure(name, 'character(s)') unless result }
|
28
|
-
end
|
29
|
-
|
30
|
-
def blacklisted?(name)
|
31
|
-
blacklisted_names.include?(name).tap { |result| log_failure(name, 'name (blacklisted entry)') unless result }
|
32
|
-
end
|
33
|
-
|
34
|
-
def regex_permission
|
35
|
-
/^[a-z]\w+$/
|
36
|
-
end
|
37
|
-
|
38
|
-
def prefix_blacklist
|
39
|
-
%w[
|
40
|
-
no_
|
41
|
-
_
|
42
|
-
]
|
43
|
-
end
|
44
|
-
|
45
|
-
def suffix_blacklist
|
46
|
-
%w[
|
47
|
-
_
|
48
|
-
?
|
49
|
-
]
|
50
|
-
end
|
51
|
-
|
52
|
-
def blacklisted_names
|
53
|
-
%w[
|
54
|
-
attributes
|
55
|
-
html
|
56
|
-
no
|
57
|
-
title
|
58
|
-
]
|
59
|
-
end
|
60
|
-
|
61
|
-
def log_failure(name, type)
|
62
|
-
SitePrism.logger.error("DSL item: #{name} has an invalid #{type}")
|
63
|
-
SitePrism.logger.debug(debug_error(type))
|
64
|
-
end
|
65
|
-
|
66
|
-
def debug_error(type)
|
67
|
-
case type
|
68
|
-
when 'prefix'; then "Invalid Prefixes: #{prefix_blacklist.join(', ')}."
|
69
|
-
when 'suffix'; then "Invalid Suffixes: #{suffix_blacklist.join(', ')}"
|
70
|
-
when 'character(s)'; then "Invalid DSL Names: #{blacklisted_names.join(', ')}"
|
71
|
-
else "DSL Charset REGEX: #{regex_permission.inspect}"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|