screengem 0.10.1 → 0.14.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/.rubocop.yml +45 -3
- data/.ruby-version +1 -1
- data/CHANGELOG.md +25 -0
- data/README.md +16 -3
- data/lib/screengem/actor.rb +2 -12
- data/lib/screengem/factories/question_factory.rb +1 -1
- data/lib/screengem/factories/task_factory.rb +1 -1
- data/lib/screengem/screen_elements.rb +2 -3
- data/lib/screengem/version.rb +1 -1
- data/lib/screengem.rb +0 -1
- data/screengem.gemspec +10 -9
- metadata +43 -37
- data/.travis.yml +0 -5
- data/lib/screengem/incorrect_answer.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2bb54d35b1502539350c3381b79da394fd82e2eb2857f034d2434491f2c4e61b
|
4
|
+
data.tar.gz: 4afaca0e2dd7978acb5b8eae44fb94e8d9e875a7fb543d4a6cead41ddf65330b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66ba5384906e5346b9bf60a60499a0f0813adc4a686c3033dbb88cea7ac5ca0c385b77fac58e25451ef1ff53df0c89701b9e50ed74f62947e7ca5e883603418d
|
7
|
+
data.tar.gz: 3042e522c6dd5474e3802cbdba1a3fadde37478b52ce2251640848ed4b5c2d5e65b41d7a8b67cd7f901b12ed7ffccc5ef70c549a8c946016f6242141d4327a99
|
data/.rubocop.yml
CHANGED
@@ -1,20 +1,44 @@
|
|
1
1
|
require: rubocop-rspec
|
2
2
|
|
3
|
+
AllCops:
|
4
|
+
NewCops: enable
|
5
|
+
TargetRubyVersion: 2.7
|
6
|
+
|
7
|
+
Gemspec/RequireMFA:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
Lint/ConstantDefinitionInBlock:
|
11
|
+
Exclude:
|
12
|
+
- spec/**/*_spec.rb
|
13
|
+
|
14
|
+
Layout/LineLength:
|
15
|
+
Max: 120
|
16
|
+
|
17
|
+
Layout/SpaceAroundMethodCallOperator:
|
18
|
+
Enabled: false
|
19
|
+
|
20
|
+
Lint/RaiseException:
|
21
|
+
Enabled: false
|
22
|
+
|
23
|
+
Lint/StructNewOverride:
|
24
|
+
Enabled: false
|
25
|
+
|
3
26
|
Metrics/AbcSize:
|
4
27
|
Enabled: false
|
5
28
|
|
6
29
|
Metrics/BlockLength:
|
7
30
|
Enabled: false
|
8
31
|
|
9
|
-
Metrics/LineLength:
|
10
|
-
Max: 120
|
11
|
-
|
12
32
|
Metrics/MethodLength:
|
13
33
|
Enabled: false
|
14
34
|
|
15
35
|
Metrics/ModuleLength:
|
16
36
|
Enabled: false
|
17
37
|
|
38
|
+
Naming/VariableNumber:
|
39
|
+
Enabled: true
|
40
|
+
EnforcedStyle: snake_case
|
41
|
+
|
18
42
|
RSpec/AnyInstance:
|
19
43
|
Enabled: false
|
20
44
|
|
@@ -24,6 +48,9 @@ RSpec/DescribedClass:
|
|
24
48
|
RSpec/ExampleLength:
|
25
49
|
Max: 20
|
26
50
|
|
51
|
+
RSpec/MultipleMemoizedHelpers:
|
52
|
+
Max: 8
|
53
|
+
|
27
54
|
RSpec/MultipleExpectations:
|
28
55
|
Max: 5
|
29
56
|
|
@@ -36,9 +63,24 @@ RSpec/MessageSpies:
|
|
36
63
|
RSpec/NotToNot:
|
37
64
|
EnforcedStyle: to_not
|
38
65
|
|
66
|
+
Style/ExponentialNotation:
|
67
|
+
Enabled: false
|
68
|
+
|
69
|
+
Style/HashEachMethods:
|
70
|
+
Enabled: false
|
71
|
+
|
72
|
+
Style/HashTransformKeys:
|
73
|
+
Enabled: false
|
74
|
+
|
75
|
+
Style/HashTransformValues:
|
76
|
+
Enabled: false
|
77
|
+
|
39
78
|
Style/Documentation:
|
40
79
|
Enabled: false
|
41
80
|
|
81
|
+
Style/DocumentDynamicEvalDefinition:
|
82
|
+
Enabled: false
|
83
|
+
|
42
84
|
Style/EmptyMethod:
|
43
85
|
Enabled: false
|
44
86
|
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.4
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,31 @@
|
|
2
2
|
|
3
3
|
## master (unreleased)
|
4
4
|
|
5
|
+
## 0.14.0 (2022-01-06)
|
6
|
+
|
7
|
+
* Update the thor dependency
|
8
|
+
* Latest development dependencies
|
9
|
+
|
10
|
+
## 0.13.0 (2021-06-13)
|
11
|
+
|
12
|
+
* Relax the ActiveSupport dependency
|
13
|
+
* Latest development dependencies
|
14
|
+
|
15
|
+
## 0.12.0 (2021-01-27)
|
16
|
+
|
17
|
+
* Relax the thor dependency
|
18
|
+
* Latest development dependencies
|
19
|
+
|
20
|
+
## 0.11.0 (2020-04-26)
|
21
|
+
|
22
|
+
### Breaking Changes
|
23
|
+
|
24
|
+
* Questions answer negatively by throwing an exception rather than returning false
|
25
|
+
|
26
|
+
## 0.10.1 (2020-01-11)
|
27
|
+
|
28
|
+
* Relax the thor dependency
|
29
|
+
|
5
30
|
## 0.10.0 (2020-01-11)
|
6
31
|
|
7
32
|
* Remove action abstraction
|
data/README.md
CHANGED
@@ -30,9 +30,8 @@ A Task responds to perform.
|
|
30
30
|
|
31
31
|
## Actor Memory
|
32
32
|
|
33
|
-
Actors are able to remember and recall facts. This is the recommended way to
|
34
|
-
|
35
|
-
add a hook:
|
33
|
+
Actors are able to remember and recall facts. This is the recommended way to pass state
|
34
|
+
between steps. To clear every actor's memory before each scenario add a hook:
|
36
35
|
|
37
36
|
```
|
38
37
|
Before do
|
@@ -40,6 +39,20 @@ Before do
|
|
40
39
|
end
|
41
40
|
```
|
42
41
|
|
42
|
+
## Performing Tasks
|
43
|
+
|
44
|
+
Actors are able to perform tasks. A task may be implemented by interacting with domain services,
|
45
|
+
domain models, application databases, and the application via screen elements.
|
46
|
+
|
47
|
+
Capybara is available to all screen elements and is the recommended way to interact with a browser.
|
48
|
+
|
49
|
+
## Answering Questions
|
50
|
+
|
51
|
+
Actors are able to answer questions. A question is considered to be answered affirmatively
|
52
|
+
when no exception is thrown and negatively when an exception is thrown.
|
53
|
+
|
54
|
+
[RSpec expectations](https://github.com/rspec/rspec-expectations) are available in all questions and are the recommended way to implement a question.
|
55
|
+
|
43
56
|
## Dampening
|
44
57
|
|
45
58
|
It sometimes makes sense to slow down the automation. This is known as dampening.
|
data/lib/screengem/actor.rb
CHANGED
@@ -18,11 +18,7 @@ module Screengem
|
|
18
18
|
#
|
19
19
|
def asks(*questions)
|
20
20
|
questions.each do |question|
|
21
|
-
question.configure(self, screen)
|
22
|
-
|
23
|
-
next if question.answer
|
24
|
-
|
25
|
-
raise incorrect_answer(question)
|
21
|
+
question.configure(self, screen).answer
|
26
22
|
end
|
27
23
|
|
28
24
|
self
|
@@ -33,9 +29,7 @@ module Screengem
|
|
33
29
|
#
|
34
30
|
def performs(*tasks)
|
35
31
|
tasks.each do |task|
|
36
|
-
task.configure(self, screen)
|
37
|
-
|
38
|
-
task.perform
|
32
|
+
task.configure(self, screen).perform
|
39
33
|
end
|
40
34
|
|
41
35
|
self
|
@@ -68,10 +62,6 @@ module Screengem
|
|
68
62
|
|
69
63
|
private
|
70
64
|
|
71
|
-
def incorrect_answer(question)
|
72
|
-
Screengem::IncorrectAnswer.new(question)
|
73
|
-
end
|
74
|
-
|
75
65
|
def recollections
|
76
66
|
ActorMemory.instance.recollections(self)
|
77
67
|
end
|
@@ -6,7 +6,7 @@ module Screengem
|
|
6
6
|
class QuestionFactory < BasicObject
|
7
7
|
include ::Singleton
|
8
8
|
|
9
|
-
def method_missing(question_name, *args)
|
9
|
+
def method_missing(question_name, *args)
|
10
10
|
question_class_name = "#{question_name}_question".camelize
|
11
11
|
question_class = "#{question_scope}::#{question_class_name}".constantize
|
12
12
|
|
@@ -6,7 +6,7 @@ module Screengem
|
|
6
6
|
class TaskFactory < BasicObject
|
7
7
|
include ::Singleton
|
8
8
|
|
9
|
-
def method_missing(task_name, *args)
|
9
|
+
def method_missing(task_name, *args)
|
10
10
|
task_class_name = "#{task_name}_task".camelize
|
11
11
|
task_class = "#{task_scope}::#{task_class_name}".constantize
|
12
12
|
|
@@ -22,11 +22,10 @@ module Screengem
|
|
22
22
|
generated_method_names = []
|
23
23
|
|
24
24
|
Screengem::ScreenElement.descendants.each do |screen_element_class|
|
25
|
-
class_name = screen_element_class.name
|
26
|
-
|
27
25
|
# Skip any anonymous classes. We can't do anything with them. Probably they're from testing.
|
28
|
-
next if
|
26
|
+
next if screen_element_class.anonymous?
|
29
27
|
|
28
|
+
class_name = screen_element_class.name
|
30
29
|
method_name = class_name.demodulize.underscore
|
31
30
|
|
32
31
|
# Create some safety by detecting and failing fast for duplicate creation method names.
|
data/lib/screengem/version.rb
CHANGED
data/lib/screengem.rb
CHANGED
data/screengem.gemspec
CHANGED
@@ -27,18 +27,19 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.bindir = "exe"
|
28
28
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
29
29
|
spec.require_paths = ["lib"]
|
30
|
-
spec.required_ruby_version = "
|
30
|
+
spec.required_ruby_version = ">= 2.7"
|
31
31
|
|
32
|
-
spec.add_runtime_dependency "activesupport", ">=
|
32
|
+
spec.add_runtime_dependency "activesupport", ">= 5.2", "< 6.2"
|
33
33
|
spec.add_runtime_dependency "capybara", ">= 2.18", "< 4.0"
|
34
|
-
spec.add_runtime_dependency "require_all", ">=
|
35
|
-
spec.add_runtime_dependency "rspec-expectations", "~> 3.
|
36
|
-
spec.add_runtime_dependency "thor", "
|
34
|
+
spec.add_runtime_dependency "require_all", ">= 3.0", "< 4.0"
|
35
|
+
spec.add_runtime_dependency "rspec-expectations", "~> 3.10"
|
36
|
+
spec.add_runtime_dependency "thor", "~> 1.2"
|
37
37
|
|
38
38
|
spec.add_development_dependency "rake", "~> 13.0"
|
39
39
|
spec.add_development_dependency "rspec", "~> 3.9"
|
40
|
-
spec.add_development_dependency "rubocop", "~>
|
41
|
-
spec.add_development_dependency "rubocop-performance", "~> 1.
|
42
|
-
spec.add_development_dependency "rubocop-
|
43
|
-
spec.add_development_dependency "
|
40
|
+
spec.add_development_dependency "rubocop", "~> 1.24"
|
41
|
+
spec.add_development_dependency "rubocop-performance", "~> 1.13"
|
42
|
+
spec.add_development_dependency "rubocop-rake", "~> 0.6"
|
43
|
+
spec.add_development_dependency "rubocop-rspec", "~> 2.7"
|
44
|
+
spec.add_development_dependency "simplecov", "~> 0.21"
|
44
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: screengem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alistair McKinnell
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5.2'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '6.
|
22
|
+
version: '6.2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '5.2'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '6.
|
32
|
+
version: '6.2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: capybara
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,7 +56,7 @@ dependencies:
|
|
56
56
|
requirements:
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '
|
59
|
+
version: '3.0'
|
60
60
|
- - "<"
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '4.0'
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '3.0'
|
70
70
|
- - "<"
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '4.0'
|
@@ -76,34 +76,28 @@ dependencies:
|
|
76
76
|
requirements:
|
77
77
|
- - "~>"
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: '3.
|
79
|
+
version: '3.10'
|
80
80
|
type: :runtime
|
81
81
|
prerelease: false
|
82
82
|
version_requirements: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
84
|
- - "~>"
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: '3.
|
86
|
+
version: '3.10'
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
88
|
name: thor
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
90
90
|
requirements:
|
91
|
-
- - "
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0.20'
|
94
|
-
- - "<"
|
91
|
+
- - "~>"
|
95
92
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
93
|
+
version: '1.2'
|
97
94
|
type: :runtime
|
98
95
|
prerelease: false
|
99
96
|
version_requirements: !ruby/object:Gem::Requirement
|
100
97
|
requirements:
|
101
|
-
- - "
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0.20'
|
104
|
-
- - "<"
|
98
|
+
- - "~>"
|
105
99
|
- !ruby/object:Gem::Version
|
106
|
-
version: '1.
|
100
|
+
version: '1.2'
|
107
101
|
- !ruby/object:Gem::Dependency
|
108
102
|
name: rake
|
109
103
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,57 +132,71 @@ dependencies:
|
|
138
132
|
requirements:
|
139
133
|
- - "~>"
|
140
134
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
135
|
+
version: '1.24'
|
142
136
|
type: :development
|
143
137
|
prerelease: false
|
144
138
|
version_requirements: !ruby/object:Gem::Requirement
|
145
139
|
requirements:
|
146
140
|
- - "~>"
|
147
141
|
- !ruby/object:Gem::Version
|
148
|
-
version: '
|
142
|
+
version: '1.24'
|
149
143
|
- !ruby/object:Gem::Dependency
|
150
144
|
name: rubocop-performance
|
151
145
|
requirement: !ruby/object:Gem::Requirement
|
152
146
|
requirements:
|
153
147
|
- - "~>"
|
154
148
|
- !ruby/object:Gem::Version
|
155
|
-
version: '1.
|
149
|
+
version: '1.13'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - "~>"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '1.13'
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: rubocop-rake
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - "~>"
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0.6'
|
156
164
|
type: :development
|
157
165
|
prerelease: false
|
158
166
|
version_requirements: !ruby/object:Gem::Requirement
|
159
167
|
requirements:
|
160
168
|
- - "~>"
|
161
169
|
- !ruby/object:Gem::Version
|
162
|
-
version: '
|
170
|
+
version: '0.6'
|
163
171
|
- !ruby/object:Gem::Dependency
|
164
172
|
name: rubocop-rspec
|
165
173
|
requirement: !ruby/object:Gem::Requirement
|
166
174
|
requirements:
|
167
175
|
- - "~>"
|
168
176
|
- !ruby/object:Gem::Version
|
169
|
-
version: '
|
177
|
+
version: '2.7'
|
170
178
|
type: :development
|
171
179
|
prerelease: false
|
172
180
|
version_requirements: !ruby/object:Gem::Requirement
|
173
181
|
requirements:
|
174
182
|
- - "~>"
|
175
183
|
- !ruby/object:Gem::Version
|
176
|
-
version: '
|
184
|
+
version: '2.7'
|
177
185
|
- !ruby/object:Gem::Dependency
|
178
186
|
name: simplecov
|
179
187
|
requirement: !ruby/object:Gem::Requirement
|
180
188
|
requirements:
|
181
189
|
- - "~>"
|
182
190
|
- !ruby/object:Gem::Version
|
183
|
-
version: '0.
|
191
|
+
version: '0.21'
|
184
192
|
type: :development
|
185
193
|
prerelease: false
|
186
194
|
version_requirements: !ruby/object:Gem::Requirement
|
187
195
|
requirements:
|
188
196
|
- - "~>"
|
189
197
|
- !ruby/object:Gem::Version
|
190
|
-
version: '0.
|
191
|
-
description:
|
198
|
+
version: '0.21'
|
199
|
+
description:
|
192
200
|
email:
|
193
201
|
- alistairm@nulogy.com
|
194
202
|
executables:
|
@@ -201,7 +209,6 @@ files:
|
|
201
209
|
- ".rubocop"
|
202
210
|
- ".rubocop.yml"
|
203
211
|
- ".ruby-version"
|
204
|
-
- ".travis.yml"
|
205
212
|
- CHANGELOG.md
|
206
213
|
- CODE_OF_CONDUCT.md
|
207
214
|
- Gemfile
|
@@ -227,7 +234,6 @@ files:
|
|
227
234
|
- lib/screengem/factories/factory_creation_error.rb
|
228
235
|
- lib/screengem/factories/question_factory.rb
|
229
236
|
- lib/screengem/factories/task_factory.rb
|
230
|
-
- lib/screengem/incorrect_answer.rb
|
231
237
|
- lib/screengem/primitive_key.rb
|
232
238
|
- lib/screengem/question.rb
|
233
239
|
- lib/screengem/rails_routes.rb
|
@@ -245,23 +251,23 @@ metadata:
|
|
245
251
|
changelog_uri: https://github.com/nulogy/screengem/blob/master/CHANGELOG.md
|
246
252
|
source_code_uri: https://github.com/nulogy/screengem
|
247
253
|
bug_tracker_uri: https://github.com/nulogy/screengem/issues
|
248
|
-
post_install_message:
|
254
|
+
post_install_message:
|
249
255
|
rdoc_options: []
|
250
256
|
require_paths:
|
251
257
|
- lib
|
252
258
|
required_ruby_version: !ruby/object:Gem::Requirement
|
253
259
|
requirements:
|
254
|
-
- - "
|
260
|
+
- - ">="
|
255
261
|
- !ruby/object:Gem::Version
|
256
|
-
version: '2.
|
262
|
+
version: '2.7'
|
257
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
258
264
|
requirements:
|
259
265
|
- - ">="
|
260
266
|
- !ruby/object:Gem::Version
|
261
267
|
version: '0'
|
262
268
|
requirements: []
|
263
|
-
rubygems_version: 3.1.
|
264
|
-
signing_key:
|
269
|
+
rubygems_version: 3.1.6
|
270
|
+
signing_key:
|
265
271
|
specification_version: 4
|
266
272
|
summary: Ruby implementation of the Screengem Pattern.
|
267
273
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Screengem
|
2
|
-
#
|
3
|
-
# Common error to signal a question that was answered incorrectly.
|
4
|
-
#
|
5
|
-
class IncorrectAnswer < RuntimeError
|
6
|
-
def initialize(question)
|
7
|
-
super(extract_question_text(question))
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
#
|
13
|
-
# Transforms question class name into a text message.
|
14
|
-
#
|
15
|
-
# Example:
|
16
|
-
#
|
17
|
-
# Questions::SignatureCapturedQuestion is transformed to 'Signature captured?'.
|
18
|
-
#
|
19
|
-
def extract_question_text(question)
|
20
|
-
question.class.name.demodulize.underscore.humanize.gsub(" question", "?")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|