diddy 0.10.3 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +48 -17
- data/diddy.gemspec +3 -1
- data/lib/diddy/run_result_printer.rb +4 -4
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MWUwMzQ0ZmM4MGE2MWRhYTAzMjk0M2UwNWJjMWUxZGVmZTk5Y2U3Mw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ODllZWZjYjEyN2UzODgzNGU5OTE5OTk2ODY1MmQwMDA4ZWU3MTkzMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZGNjNDNmZWE4ZGY0NzE0NWY0MTlmNDM2YTYwZjhjZTg1ODNkNzgyMjQ0NTNi
|
10
|
+
NzFlOGQxOTg2ZTk2ODk5Njg5YTk1OWY2ZThmMzU1MzE2ZTQ0ZDhkYjJhNmJj
|
11
|
+
NmNmNzNlZDUxMjRjZjYwOWQxZDcxYmUwNDQ5Mjc3Yjk4MTY0OGM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzQ2MzU2YmUxYzM5ZjRlMzBhM2E2MWE0MzQ0MGE5YzIxMjhmYjJkZjQ4NTQ3
|
14
|
+
NWVjZTFmOWI4NWNkN2QwM2MzZDgxZjNlMWQ1Y2U5MjJkNWMyMDNkODY3YWM2
|
15
|
+
YjcyOGQ0NmIzMjRjNmNjZTkxMDkyMGMyN2Q4OGQwNTY0OWYzOTA=
|
data/README.md
CHANGED
@@ -7,21 +7,23 @@ with the awesome Mechanize gem.
|
|
7
7
|
|
8
8
|
## How it works
|
9
9
|
|
10
|
-
First define a script:
|
10
|
+
First define a script and some scenario's:
|
11
11
|
|
12
12
|
|
13
|
-
Diddy::Script.define('Test
|
14
|
-
uses AdminSteps
|
15
|
-
uses FrontendSteps
|
16
|
-
uses ApiSteps
|
13
|
+
Diddy::Script.define('Test product X') do
|
17
14
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
step "Check if API works"
|
23
|
-
end
|
15
|
+
scenario "Checking if app works" do
|
16
|
+
uses AdminSteps
|
17
|
+
uses FrontendSteps
|
18
|
+
uses ApiSteps
|
24
19
|
|
20
|
+
step "Login to backend"
|
21
|
+
step "Create fake user"
|
22
|
+
step "Login to frontend with fake user"
|
23
|
+
step "Do some stuff"
|
24
|
+
step "Check if API works"
|
25
|
+
end
|
26
|
+
end
|
25
27
|
|
26
28
|
Then, define your steps:
|
27
29
|
|
@@ -37,6 +39,20 @@ Then, define your steps:
|
|
37
39
|
|
38
40
|
Note: every step, needs to return true. If not: the step fails. Make sure you define your steps so that they always return a true or false depending on it's action.
|
39
41
|
|
42
|
+
## Dynamic/sub steps
|
43
|
+
|
44
|
+
class AdminSteps < Diddy::Steps
|
45
|
+
step "Test if site works" do
|
46
|
+
sub_step "Visit root page" do
|
47
|
+
end
|
48
|
+
|
49
|
+
sub_step "Download assets" do
|
50
|
+
end
|
51
|
+
|
52
|
+
sub_step "Check if texts are correct" do
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
40
56
|
## Scoping
|
41
57
|
|
42
58
|
Every step definition class, has it own scope. To share variables between step definitions, use the shared object:
|
@@ -44,13 +60,13 @@ Every step definition class, has it own scope. To share variables between step d
|
|
44
60
|
|
45
61
|
class AdminSteps < Diddy::Steps
|
46
62
|
step "Create fake user" do
|
47
|
-
shared
|
63
|
+
shared[:user_id] = HttpParty.post("http://admin.example.com/users", { name: 'Har' }).body.to_i
|
48
64
|
end
|
49
65
|
end
|
50
66
|
|
51
67
|
class FrontendSteps < Diddy::Steps
|
52
68
|
step "Do some stuff" do
|
53
|
-
HttpParty.get("http://www.example.com/api/#{shared
|
69
|
+
HttpParty.get("http://www.example.com/api/#{shared[:user_id]}")
|
54
70
|
end
|
55
71
|
end
|
56
72
|
|
@@ -58,12 +74,27 @@ This "shared" state (the state of the steps class and the shared vars), lives un
|
|
58
74
|
|
59
75
|
## Run the whole thing
|
60
76
|
|
61
|
-
After defining your scripts,
|
77
|
+
After defining your scripts, instantiate a result logger and let the monkey do it's work:
|
78
|
+
|
79
|
+
run_log = Diddy::RunResult.new
|
80
|
+
Diddy::Script.run(run_log, 'Script name')
|
62
81
|
|
82
|
+
Or, only one scenario:
|
63
83
|
|
64
|
-
|
84
|
+
...
|
85
|
+
some_script = Diddy::Script.scripts.first
|
86
|
+
Diddy::Script.run(run_log, some_script)
|
65
87
|
|
66
|
-
|
88
|
+
## Context
|
67
89
|
|
90
|
+
It could be usefull to run the same script in another context. In that case you can pass variables around that you can use in your script/scenario:
|
68
91
|
|
69
|
-
Diddy::Script.
|
92
|
+
Diddy::Script.run(run_log, 'Product X', { country: 'us' })
|
93
|
+
Diddy::Script.run(run_log, 'Product X', { country: 'uk' })
|
94
|
+
|
95
|
+
...
|
96
|
+
|
97
|
+
step "Fetch current configuration" do
|
98
|
+
grab_config "http://api.example.com/#{context[:country]}"
|
99
|
+
...
|
100
|
+
end
|
data/diddy.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "diddy"
|
7
|
-
gem.version = '0.
|
7
|
+
gem.version = '0.11.0'
|
8
8
|
gem.authors = ["Diederick Lawson", "Marcel de Graaf"]
|
9
9
|
gem.email = ["diederick@altovista.nl", "mail@marceldegraaf.net"]
|
10
10
|
gem.description = %q{Diddy script runner}
|
@@ -16,5 +16,7 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
17
17
|
gem.require_paths = ["lib"]
|
18
18
|
|
19
|
+
gem.license = 'MIT'
|
20
|
+
|
19
21
|
gem.add_development_dependency "term/ansicolor"
|
20
22
|
end
|
@@ -65,10 +65,10 @@ module Diddy
|
|
65
65
|
script.scenarios.each do |scenario|
|
66
66
|
# result was ok? than only log the scenario itself
|
67
67
|
if scenario.result
|
68
|
-
html << "<h3 class='ok'>#{scenario.description}</h3>"
|
68
|
+
html << "<h3 class='ok' style='color: green;'>#{scenario.description}</h3>"
|
69
69
|
else
|
70
70
|
# log the error and it's steps
|
71
|
-
html << "<h3 class='error'>#{scenario.description}</h3>"
|
71
|
+
html << "<h3 class='error' style='color: red;'>#{scenario.description}</h3>"
|
72
72
|
html << "<ul>"
|
73
73
|
|
74
74
|
# walk over the steps
|
@@ -77,7 +77,7 @@ module Diddy
|
|
77
77
|
if step.result
|
78
78
|
html << "<li>#{step.description}"
|
79
79
|
else
|
80
|
-
html << "<li class='error'>#{step.description}"
|
80
|
+
html << "<li class='error' style='color: red;'>#{step.description}"
|
81
81
|
end
|
82
82
|
|
83
83
|
|
@@ -95,7 +95,7 @@ module Diddy
|
|
95
95
|
if sub_step.result
|
96
96
|
html << "<li>#{sub_step.description}</li>"
|
97
97
|
else
|
98
|
-
html << "<li class='error'>#{sub_step.description}</li>"
|
98
|
+
html << "<li class='error' style='color: red;'>#{sub_step.description}</li>"
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: diddy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Diederick Lawson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: term/ansicolor
|
@@ -51,7 +51,8 @@ files:
|
|
51
51
|
- lib/diddy/step.rb
|
52
52
|
- lib/diddy/steps.rb
|
53
53
|
homepage: http://github.com/wakoopa/diddy
|
54
|
-
licenses:
|
54
|
+
licenses:
|
55
|
+
- MIT
|
55
56
|
metadata: {}
|
56
57
|
post_install_message:
|
57
58
|
rdoc_options: []
|
@@ -69,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
70
|
version: '0'
|
70
71
|
requirements: []
|
71
72
|
rubyforge_project:
|
72
|
-
rubygems_version: 2.1.
|
73
|
+
rubygems_version: 2.1.11
|
73
74
|
signing_key:
|
74
75
|
specification_version: 4
|
75
76
|
summary: ''
|