screengem 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -1
- data/README.md +18 -6
- data/Rakefile +3 -1
- data/lib/screengem.rb +1 -0
- data/lib/screengem/actor.rb +1 -1
- data/lib/screengem/actor_memory.rb +27 -0
- data/lib/screengem/screen_elements.rb +1 -1
- data/lib/screengem/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: accc4cf6330e69e04fb0c2ccf8aded873f0cdd6ca7f548f4d15a0acb3d4f1f7d
|
4
|
+
data.tar.gz: 68c1c36c5b7763557719751f4e58f5890054e79c09d8fc9fe9cc6dc01fd3a45e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca06a1fb1c48d88a12b93f56da624dc082535af69608be82b2547fe9da6f4799724cc2294a7fde8db9ef242ccc7374698c05e5f1c97aeeaf921d89ad2a03e245
|
7
|
+
data.tar.gz: 6f9ac792ef8b6538a2e1d4829a6ff9d7ad43c33f8bfc45a70ec325f1a03cc1ec0a13ebbdca1820193e82f5512cb2d4fdaf41968756d5cfd926e4165828c28827
|
data/CHANGELOG.md
CHANGED
@@ -2,7 +2,11 @@
|
|
2
2
|
|
3
3
|
## master (unreleased)
|
4
4
|
|
5
|
-
## 0.
|
5
|
+
## 0.9.0 (2019-09-25)
|
6
|
+
|
7
|
+
* Support for actor memory outside actor instances (support ParameterType actors)
|
8
|
+
|
9
|
+
## 0.8.1 (2019-08-20)
|
6
10
|
|
7
11
|
* Support for Rails 6 (only ActiveSupport)
|
8
12
|
* Latest development dependencies
|
data/README.md
CHANGED
@@ -8,11 +8,11 @@ and the questions that the actor asks.
|
|
8
8
|
## Example Step Definitions
|
9
9
|
|
10
10
|
```ruby
|
11
|
-
Given(
|
11
|
+
Given("that they are signed in and viewing the {section_name}") do |section_name|
|
12
12
|
actor.performs(task.sign_in, task.remember_signature_counter(section_name))
|
13
13
|
end
|
14
14
|
|
15
|
-
Then(
|
15
|
+
Then("their signature is captured") do
|
16
16
|
actor.asks(question.signature_captured)
|
17
17
|
end
|
18
18
|
```
|
@@ -28,12 +28,16 @@ A Task responds to perform and may execute one or more actions.
|
|
28
28
|
|
29
29
|
![Core Domain Model](/images/ScreengemCore.png)
|
30
30
|
|
31
|
-
##
|
31
|
+
## Actor Memory
|
32
32
|
|
33
|
-
|
33
|
+
Actors are able to remember and recall facts. This is the recommended way to
|
34
|
+
pass state between steps. To clear all actor's memory before each scenario
|
35
|
+
add a hook:
|
34
36
|
|
35
|
-
```
|
36
|
-
|
37
|
+
```
|
38
|
+
Before do
|
39
|
+
Screengem::ActorMemory.instance.clear
|
40
|
+
end
|
37
41
|
```
|
38
42
|
|
39
43
|
## Dampening
|
@@ -49,6 +53,14 @@ To enable and configure dampening perform the following steps:
|
|
49
53
|
|
50
54
|
To stop dampening, run `unset APPLY_DAMPENING`
|
51
55
|
|
56
|
+
## Installation
|
57
|
+
|
58
|
+
Add this line to your application's Gemfile:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
gem 'screengem'
|
62
|
+
```
|
63
|
+
|
52
64
|
## Development
|
53
65
|
|
54
66
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/Rakefile
CHANGED
data/lib/screengem.rb
CHANGED
data/lib/screengem/actor.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
module Screengem
|
2
|
+
#
|
3
|
+
# Ensures that the memory/recollections that an actor uses are effectively global (using the actor name).
|
4
|
+
#
|
5
|
+
# This is required to use Cucumber ParameterTypes because the block arguments are cloned before they are
|
6
|
+
# provided to the step definitions. This is intentional by the cucumber team to prevent leaking state
|
7
|
+
# between step definitions. See https://github.com/cucumber/cucumber-ruby/issues/1275.
|
8
|
+
#
|
9
|
+
# The cloning of the actor means that is is effectively treated like a value object, and there will be
|
10
|
+
# many instances of the same actor instantiated in the execution of a single test.
|
11
|
+
#
|
12
|
+
class ActorMemory
|
13
|
+
include ::Singleton
|
14
|
+
|
15
|
+
def recollections(actor)
|
16
|
+
@recollections ||= ActiveSupport::HashWithIndifferentAccess.new
|
17
|
+
@recollections[actor.name] ||= ActiveSupport::HashWithIndifferentAccess.new
|
18
|
+
end
|
19
|
+
|
20
|
+
#
|
21
|
+
# Use this method to clear actor memory to avoid actor memory persisting across scenarios.
|
22
|
+
#
|
23
|
+
def clear
|
24
|
+
@recollections = ActiveSupport::HashWithIndifferentAccess.new
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -29,7 +29,7 @@ module Screengem
|
|
29
29
|
|
30
30
|
method_name = class_name.demodulize.underscore
|
31
31
|
|
32
|
-
# Create some safety by detecting and failing fast for duplicate creation method names
|
32
|
+
# Create some safety by detecting and failing fast for duplicate creation method names.
|
33
33
|
if generated_method_names.include?(method_name)
|
34
34
|
raise "Name collision: two screen elements resolve to '#{method_name}'."
|
35
35
|
end
|
data/lib/screengem/version.rb
CHANGED
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.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alistair McKinnell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -189,6 +189,7 @@ files:
|
|
189
189
|
- lib/screengem.rb
|
190
190
|
- lib/screengem/action.rb
|
191
191
|
- lib/screengem/actor.rb
|
192
|
+
- lib/screengem/actor_memory.rb
|
192
193
|
- lib/screengem/automatic_visit.rb
|
193
194
|
- lib/screengem/browser_action.rb
|
194
195
|
- lib/screengem/cli.rb
|
@@ -239,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
240
|
- !ruby/object:Gem::Version
|
240
241
|
version: '0'
|
241
242
|
requirements: []
|
242
|
-
rubygems_version: 3.0.
|
243
|
+
rubygems_version: 3.0.6
|
243
244
|
signing_key:
|
244
245
|
specification_version: 4
|
245
246
|
summary: Ruby implementation of the Screengem Pattern.
|