cuukie 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -9,11 +9,8 @@ namespace :test do
9
9
 
10
10
  desc "Run Cuukie on the test project (needs a cuukie_server on localhost, default port)"
11
11
  task :smoke do
12
- system "cucumber spec/test_project/features \
13
- --require spec/test_project/features/step_definitions/ \
14
- --require lib/cuukie/formatter \
15
- --format Cuukie \
16
- --guess"
12
+ system "cd spec/test_project && \
13
+ cucumber --format cuukie --guess"
17
14
  end
18
15
  end
19
16
 
@@ -23,7 +20,7 @@ Jeweler::Tasks.new do |gem|
23
20
  gem.homepage = "http://github.com/nusco/cuukie"
24
21
  gem.license = "MIT"
25
22
  gem.summary = %Q{A continuous view on Cucumber features}
26
- gem.description = %Q{Cuukie shows the result of running Cucumber feature on a remote server.}
23
+ gem.description = %Q{Shows Cucumber results on a web page as they run.}
27
24
  gem.email = "paolo.nusco.perrotta@gmail.com"
28
25
  gem.authors = ['Paolo "Nusco" Perrotta']
29
26
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.dirname(__FILE__) + '/../lib') unless $:.include?(File.dirname(__FILE__) + '/../lib')
2
+ lib = File.dirname(__FILE__) + '/../lib'
3
+ $:.unshift lib unless $:.include? lib
3
4
 
4
5
  require 'cuukie/server'
5
6
  Cuukie::Server.run!
@@ -5,16 +5,15 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "cuukie"
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Paolo \"Nusco\" Perrotta"]
12
- s.date = "2011-12-04"
13
- s.description = "Cuukie shows the result of running Cucumber feature on a remote server."
12
+ s.date = "2011-12-05"
13
+ s.description = "Shows Cucumber results on a web page as they run."
14
14
  s.email = "paolo.nusco.perrotta@gmail.com"
15
15
  s.executables = ["cuukie_server"]
16
16
  s.extra_rdoc_files = [
17
- "LICENSE.txt",
18
17
  "README.markdown"
19
18
  ]
20
19
  s.files = [
@@ -22,24 +21,29 @@ Gem::Specification.new do |s|
22
21
  ".rspec",
23
22
  ".travis.yml",
24
23
  "Gemfile",
25
- "LICENSE.txt",
26
24
  "README.markdown",
27
25
  "Rakefile",
28
26
  "VERSION",
29
27
  "bin/cuukie_server",
30
28
  "cuukie.gemspec",
31
- "lib/cuukie/formatter/cuukie.rb",
29
+ "doc/LICENSE.txt",
30
+ "doc/backlog.txt",
31
+ "doc/pomodoro.txt",
32
+ "lib/cuukie.rb",
33
+ "lib/cuukie/cucumber/formatter/cuukie.rb",
32
34
  "lib/cuukie/public/cucumber.css",
33
35
  "lib/cuukie/public/cuukie.js",
34
36
  "lib/cuukie/public/jquery-1.7.min.js",
35
37
  "lib/cuukie/server.rb",
36
38
  "lib/cuukie/views/index.erb",
37
- "pomodoro.txt",
39
+ "lib/test.rb",
38
40
  "spec/commands_spec.rb",
39
41
  "spec/cuukie_spec.rb",
40
- "spec/test_project/features/create_user.feature",
41
- "spec/test_project/features/delete_user.feature",
42
- "spec/test_project/features/step_definitions/example_steps.rb"
42
+ "spec/test_project/features/1_visualize_scenarios.feature",
43
+ "spec/test_project/features/2_multiple_features.feature",
44
+ "spec/test_project/features/3_failed_background.feature",
45
+ "spec/test_project/features/step_definitions/example_steps.rb",
46
+ "spec/test_project/features/support/formatters.rb"
43
47
  ]
44
48
  s.homepage = "http://github.com/nusco/cuukie"
45
49
  s.licenses = ["MIT"]
File without changes
@@ -0,0 +1,24 @@
1
+ MMF 0.2
2
+ - use formatter after installing gem
3
+ - updated README
4
+ - deal with Scenario Examples
5
+ - show tables in Scenarios
6
+ - show wrap-up for Scenarios
7
+ - show wrap-up for Steps
8
+ - show running time
9
+ - configure server and port
10
+ - work with Ruby 1.8.7
11
+ - fail gracefully when cuukie_server is down
12
+ MMF 0.3
13
+ - show exceptions
14
+ - show code snippets
15
+ MMF 0.4
16
+ - show incomplete results
17
+ - show undefined Scenarios/suite
18
+ - show undefined Steps
19
+ MMF 1.0
20
+ - nice graphics
21
+ - self-updating Steps
22
+ - self-updating Scenarios
23
+ - self-updating suite
24
+ - self-updating running time
@@ -1,6 +1,12 @@
1
1
  I use this file to track my own work on the project. Each line is a pomodoro (a 25' slot).
2
2
  Latest pomodoro comes first:
3
3
 
4
+ - working formatter out of gem
5
+ - working formatter out of gem
6
+ - show skipped scenarios
7
+ - show backgrounds
8
+ - show backgrounds
9
+ - show backgrounds
4
10
  - refactor build status
5
11
  - status for entire suite
6
12
  - better scenario status
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + '/cuukie/cucumber/formatter/cuukie'
@@ -0,0 +1,56 @@
1
+ require 'rest-client'
2
+ require 'json'
3
+
4
+ module Cucumber
5
+ module Formatter
6
+ class Cuukie
7
+ def initialize(step_mother, io, options)
8
+ end
9
+
10
+ def before_features(features)
11
+ post 'before_features'
12
+ end
13
+
14
+ def before_feature(feature)
15
+ post 'before_feature', { 'short_name' => feature.short_name,
16
+ 'description' => feature.description }
17
+ end
18
+
19
+ def scenario_name(keyword, name, file_colon_line, source_indent)
20
+ post 'scenario_name', { 'keyword' => keyword,
21
+ 'name' => name,
22
+ 'file_colon_line' => file_colon_line }
23
+ end
24
+
25
+ def before_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
26
+ post 'before_step_result', { 'keyword' => keyword,
27
+ 'name' => step_match.format_args,
28
+ 'file_colon_line' => step_match.file_colon_line }
29
+ end
30
+
31
+ def after_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
32
+ post 'after_step_result', { 'status' => status }
33
+ end
34
+
35
+ def after_steps(*)
36
+ post 'after_steps'
37
+ end
38
+
39
+ def after_features(*)
40
+ post 'after_features'
41
+ end
42
+
43
+ private
44
+
45
+ def post(url, params = {})
46
+ RestClient.post "http://localhost:4569/#{url}", params.to_json
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ require 'cucumber/cli/options'
53
+ Cucumber::Cli::Options::BUILTIN_FORMATS['cuukie'] = [
54
+ 'Cucumber::Formatter::Cuukie',
55
+ 'Shows Cucumber results on a web page as they run'
56
+ ]
@@ -1,4 +1,4 @@
1
- SCENARIOS = "h3[id^='scenario_']";
1
+ SCENARIOS = "h3[id^='fe_']";
2
2
 
3
3
  $(document).ready(function() {
4
4
  $(SCENARIOS).css('cursor', 'pointer');
@@ -20,6 +20,11 @@ $(document).ready(function() {
20
20
  function moveProgressBar(percentDone) {
21
21
  $("cucumber-header").css('width', percentDone +"%");
22
22
  }
23
+
24
+ function passedColors(element_id) {
25
+ $('#'+element_id).css('background', '#65c400');
26
+ $('#'+element_id).css('color', '#000000');
27
+ }
23
28
  function failedColors(element_id) {
24
29
  $('#'+element_id).css('background', '#C40D0D');
25
30
  $('#'+element_id).css('color', '#FFFFFF');
@@ -28,7 +33,7 @@ function pendingColors(element_id) {
28
33
  $('#'+element_id).css('background', '#FAF834');
29
34
  $('#'+element_id).css('color', '#000000');
30
35
  }
31
- function passedColors(element_id) {
32
- $('#'+element_id).css('background', '#65c400');
36
+ function skippedColors(element_id) {
37
+ $('#'+element_id).css('background', '#E0FFFF');
33
38
  $('#'+element_id).css('color', '#000000');
34
39
  }
@@ -30,8 +30,8 @@ module Cuukie
30
30
  post '/scenario_name' do
31
31
  scenario = read_from_request
32
32
  scenario['steps'] = []
33
- scenario['id'] = "scenario_#{current_feature['id']}_#{current_scenarios.size + 1}"
34
- current_scenarios << scenario
33
+ scenario['id'] = "scenario_#{current_feature['id']}_#{current_feature['scenarios'].size + 1}"
34
+ current_feature['scenarios'] << scenario
35
35
  'OK'
36
36
  end
37
37
 
@@ -52,6 +52,9 @@ module Cuukie
52
52
  end
53
53
 
54
54
  post '/after_steps' do
55
+ if current_scenario['steps'].all? {|step| step['status'] == 'skipped' }
56
+ current_scenario['status'] = 'skipped'
57
+ end
55
58
  current_scenario['status'] ||= 'passed'
56
59
  'OK'
57
60
  end
@@ -63,17 +66,18 @@ module Cuukie
63
66
 
64
67
  get('/ping') { 'pong!' }
65
68
  delete('/') { exit! }
66
-
69
+
67
70
  def current_feature
68
71
  settings.features.last
69
72
  end
70
73
 
71
- def current_scenarios
72
- current_feature['scenarios']
73
- end
74
-
75
74
  def current_scenario
76
- current_scenarios.last
75
+ # return a "nil scenario" (that includes a "nil step") if we
76
+ # don't have a scenario yet. this is useful to eliminate steps
77
+ # coming from backgrounds (which will be re-sent during the
78
+ # following scenarios anyway)
79
+ return { 'steps' => [{}] } if current_feature['scenarios'].empty?
80
+ current_feature['scenarios'].last
77
81
  end
78
82
 
79
83
  def current_step
@@ -83,7 +87,7 @@ module Cuukie
83
87
  include Rack::Utils
84
88
 
85
89
  def read_from_request
86
- result = JSON.parse(request.body.read)
90
+ result = JSON.parse request.body.read
87
91
  result.each {|k, v| result[k] = escape_html v }
88
92
  end
89
93
  end
@@ -25,7 +25,7 @@
25
25
  <div class="scenario">
26
26
  <span style="display: block;" class="scenario_file"><%= scenario['file_colon_line'] %></span>
27
27
  <h3 style="cursor: pointer;" id="<%= scenario['id'] %>">
28
- <span class="keyword">Scenario: </span><span class="val"><%= scenario['name'] %></span>
28
+ <span class="keyword"><%= scenario['keyword'] %>: </span><span class="val"><%= scenario['name'] %></span>
29
29
  </h3>
30
30
  <script><%= scenario['status'] %>Colors('<%= scenario['id'] %>');</script>
31
31
  <ol style="display: block;">
@@ -36,17 +36,12 @@
36
36
  </div>
37
37
  <div class="step_file"><span><%= step['file_colon_line'] %></span></div>
38
38
  </li>
39
- <!-- <script type="text/javascript">moveProgressBar('75.0');</script> -->
40
39
  <% end %>
41
40
  </ol>
42
41
  </div>
43
42
  <% end %>
44
43
  </div>
45
44
  <% end %>
46
- <!--
47
- <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>0m8.171s seconds</strong>";</script>
48
- <script type="text/javascript">document.getElementById('totals').innerHTML = "1 scenario (1 passed)<br />4 steps (4 passed)";</script>
49
- -->
50
45
  </div>
51
46
  </body>
52
47
  </html>
File without changes
@@ -1,99 +1,91 @@
1
- describe 'The Cuukie header' do
2
- before(:all) do
3
- start_server
4
- end
5
-
6
- after(:all) do
7
- stop_server
8
- end
1
+ describe 'Cuukie' do
2
+ before(:all) { start_server }
3
+ after(:all) { stop_server }
9
4
 
10
- it "contains essential information" do
11
- run_cucumber
12
- html.should match '<h1>Cucumber Features</h1>'
13
- html.should match '<title>Cuukie</title>'
14
- end
15
-
16
- it "is red if any steps failed" do
17
- run_cucumber 'spec/test_project/features/create_user.feature'
18
- html.should match /failedColors\('cucumber-header'\)/
19
- end
20
-
21
- it "is yellow if no steps failed but some are pending" do
22
- run_cucumber 'spec/test_project/features/create_user.feature:17'
23
- html.should match /pendingColors\('cucumber-header'\)/
24
- end
25
-
26
- it "is green if all steps passed" do
27
- run_cucumber 'spec/test_project/features/create_user.feature:6'
28
- html.should match /passedColors\('cucumber-header'\)/
29
- end
30
- end
31
-
32
- describe 'The Cuukie content panel' do
33
- before(:all) do
34
- start_server
35
- run_cucumber
36
- end
37
-
38
- after(:all) do
39
- stop_server
40
- end
41
-
42
- it "cleans up previous data at the beginning of a run" do
43
- run_cucumber
44
- html.scan('Feature: Create User').size.should == 1
45
- end
46
-
47
- it "shows the feature names" do
48
- html.should match '>Feature: Create User<'
49
- html.should match '>Feature: Delete User<'
50
- end
51
-
52
- it "shows the feature narratives" do
53
- html.should match '>As an Administrator<br/>I want to create a new User<br/>So that he will love me<bbr/r><'
54
- end
55
-
56
- it "shows the scenario names" do
57
- html.should match '>Scenario: </span><span class="val">New User<'
58
- html.should match '>Scenario: </span><span class="val">Existing User<'
59
- end
60
-
61
- it "shows the scenario source position" do
62
- html.should match '>spec&#x2F;test_project&#x2F;features&#x2F;create_user.feature:6<'
63
- end
5
+ describe 'on the page header' do
6
+ it "contains essential information" do
7
+ run_cucumber
8
+ html.should match '<h1>Cucumber Features</h1>'
9
+ html.should match '<title>Cuukie</title>'
10
+ end
11
+
12
+ it "is green if all scenarios passed" do
13
+ run_cucumber '1_visualize_scenarios.feature:9'
14
+ html.should match /passedColors\('cucumber-header'\)/
15
+ end
16
+
17
+ it "is red if any scenario failed" do
18
+ run_cucumber '1_visualize_scenarios.feature'
19
+ html.should match /failedColors\('cucumber-header'\)/
20
+ end
21
+
22
+ it "is yellow if no scenarios failed but some are pending" do
23
+ run_cucumber '1_visualize_scenarios.feature:19'
24
+ html.should match /pendingColors\('cucumber-header'\)/
25
+ end
26
+ end
27
+
28
+ describe 'in the content area' do
29
+ before(:all) { run_cucumber }
30
+
31
+ it "cleans up previous data at the beginning of a run" do
32
+ run_cucumber
33
+ html.scan('Feature: Visualize Scenarios').size.should == 1
34
+ end
35
+
36
+ it "shows the feature names" do
37
+ html.should match '>Feature: Visualize Scenarios<'
38
+ html.should match '>Feature: Multiple Features<'
39
+ end
40
+
41
+ it "shows the feature narratives" do
42
+ html.should match '>As a Cuker<br/>I want to visualize Scenarios and Steps<br/>So that I know which steps are not passing<bbr/r><'
43
+ end
44
+
45
+ it "shows the scenario names" do
46
+ html.should match '>Scenario: </span><span class="val">Passing Scenario<'
47
+ html.should match '>Scenario: </span><span class="val">Failing Scenario<'
48
+ end
49
+
50
+ it "shows the scenario source position" do
51
+ html.should match '>features&#x2F;1_visualize_scenarios.feature:9<'
52
+ end
64
53
 
65
- it "shows the passed scenarios in green" do
66
- html.should match /passedColors\('scenario_1_1'\)/
67
- end
54
+ it "shows the passed scenarios in green" do
55
+ html.should match /passedColors\('scenario_1_1'\)/
56
+ end
68
57
 
69
- it "shows the failed scenarios in red" do
70
- html.should match /failedColors\('scenario_1_2'\)/
71
- end
58
+ it "shows the failed scenarios in red" do
59
+ html.should match /failedColors\('scenario_3_1'\)/
60
+ end
72
61
 
73
- it "shows the pending scenarios in yellow" do
74
- html.should match /pendingColors\('scenario_1_3'\)/
75
- end
76
-
77
- it "assigns a sequential id to scenarios" do
78
- html.should match 'id="scenario_1_2"'
79
- end
80
-
81
- it "shows the step names" do
82
- html.should match '>Given </span><span class="step val">I am on the Admin page</span>'
83
- html.should match '>When </span><span class="step val">I create a new User</span>'
84
- end
62
+ it "shows the skipped scenarios in yellow" do
63
+ # This can happen if there is an error in a Background step.
64
+ # In this case, all the scenarios past the first one are skipped.
65
+ html.should match /skippedColors\('scenario_3_2'\)/
66
+ end
67
+
68
+ it "assigns a sequential id to feature elements" do
69
+ html.should match 'id="scenario_1_2"'
70
+ end
71
+
72
+ it "shows the step names" do
73
+ html.should match '>And </span><span class="step val">I do something</span>'
74
+ html.should match '>When </span><span class="step val">I do something else</span>'
75
+ end
85
76
 
86
- it "shows the step source position" do
87
- html.should match '>spec&#x2F;test_project&#x2F;features&#x2F;step_definitions&#x2F;example_steps.rb:4<'
88
- end
77
+ it "shows the step source position" do
78
+ html.should match '>features&#x2F;step_definitions&#x2F;example_steps.rb:4<'
79
+ end
89
80
 
90
- it "shows the step status" do
91
- html.should match 'class="step passed"'
92
- html.should match 'class="step pending"'
93
- end
81
+ it "shows the step status" do
82
+ html.should match 'class="step passed"'
83
+ html.should match 'class="step pending"'
84
+ end
94
85
 
95
- it "escapes step names" do
96
- html.should match 'I press &quot;Delete&quot;'
86
+ it "escapes step names" do
87
+ html.should match 'I pass an &quot;argument&quot;'
88
+ end
97
89
  end
98
90
  end
99
91
 
@@ -128,9 +120,9 @@ def html
128
120
  GET('/').body
129
121
  end
130
122
 
131
- def run_cucumber(features = 'spec/test_project/features')
132
- system "cucumber #{features} \
133
- --require spec/test_project/features/step_definitions/ \
134
- --require lib/cuukie/formatter --format Cuukie \
123
+ def run_cucumber(feature = '')
124
+ system "cd spec/test_project &&
125
+ cucumber features/#{feature} \
126
+ --format cuukie \
135
127
  --guess"
136
128
  end
@@ -0,0 +1,21 @@
1
+ Feature: Visualize Scenarios
2
+ As a Cuker
3
+ I want to visualize Scenarios and Steps
4
+ So that I know which steps are not passing
5
+
6
+ Background: Common Steps
7
+ Given I do something for every Scenario
8
+
9
+ Scenario: Passing Scenario
10
+ And I do something
11
+ When I do something else
12
+ And I pass an "argument"
13
+ Then the entire Scenario should pass
14
+
15
+ Scenario: Failing Scenario
16
+ When I do something that results in an error
17
+ Then the entire Scenario should fail
18
+
19
+ Scenario: Pending Scenario
20
+ When I call a pending Step
21
+ Then the entire Scenario should be pending
@@ -0,0 +1,8 @@
1
+ Feature: Multiple Features
2
+ As a Cuker
3
+ I want to see multiple Features
4
+ So that I can check my entire suite
5
+
6
+ Scenario: One Simple Step
7
+ Given I do something
8
+ Then I should see stuff
@@ -0,0 +1,15 @@
1
+ Feature: Show Failed Background
2
+ As a Cuker
3
+ I want to visualize Background failures
4
+ So that I know that everything else is skipped
5
+
6
+ Background: Failing Background
7
+ Given I do something that results in an error
8
+
9
+ Scenario: Skipped Scenario
10
+ When I do something
11
+ Then the entire Scenario should be skipped anyway
12
+
13
+ Scenario: Another Skipped Scenario
14
+ When I do something
15
+ Then the entire Scenario should be skipped anyway
@@ -1,11 +1,11 @@
1
- When /^I press "([^"]*)"$/ do |button|
1
+ When /^I pass an "([^"]*)"$/ do |argument|
2
2
  end
3
3
 
4
- When /I create a User with an existing id/ do
4
+ When /I do something that results in an error/ do
5
5
  raise "Crash!"
6
6
  end
7
7
 
8
- When /I create a User with an empty name/ do
8
+ When /I call a pending Step/ do
9
9
  pending
10
10
  end
11
11
 
@@ -0,0 +1 @@
1
+ require '../../lib/cuukie'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuukie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-04 00:00:00.000000000 Z
12
+ date: 2011-12-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70139875173140 !ruby/object:Gem::Requirement
16
+ requirement: &70232862922920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70139875173140
24
+ version_requirements: *70232862922920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &70139875172540 !ruby/object:Gem::Requirement
27
+ requirement: &70232862922360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70139875172540
35
+ version_requirements: *70232862922360
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: cucumber
38
- requirement: &70139875171960 !ruby/object:Gem::Requirement
38
+ requirement: &70232862921760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70139875171960
46
+ version_requirements: *70232862921760
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &70139875171300 !ruby/object:Gem::Requirement
49
+ requirement: &70232862921180 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70139875171300
57
+ version_requirements: *70232862921180
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &70139875170740 !ruby/object:Gem::Requirement
60
+ requirement: &70232862920680 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,38 +65,42 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70139875170740
69
- description: Cuukie shows the result of running Cucumber feature on a remote server.
68
+ version_requirements: *70232862920680
69
+ description: Shows Cucumber results on a web page as they run.
70
70
  email: paolo.nusco.perrotta@gmail.com
71
71
  executables:
72
72
  - cuukie_server
73
73
  extensions: []
74
74
  extra_rdoc_files:
75
- - LICENSE.txt
76
75
  - README.markdown
77
76
  files:
78
77
  - .autotest
79
78
  - .rspec
80
79
  - .travis.yml
81
80
  - Gemfile
82
- - LICENSE.txt
83
81
  - README.markdown
84
82
  - Rakefile
85
83
  - VERSION
86
84
  - bin/cuukie_server
87
85
  - cuukie.gemspec
88
- - lib/cuukie/formatter/cuukie.rb
86
+ - doc/LICENSE.txt
87
+ - doc/backlog.txt
88
+ - doc/pomodoro.txt
89
+ - lib/cuukie.rb
90
+ - lib/cuukie/cucumber/formatter/cuukie.rb
89
91
  - lib/cuukie/public/cucumber.css
90
92
  - lib/cuukie/public/cuukie.js
91
93
  - lib/cuukie/public/jquery-1.7.min.js
92
94
  - lib/cuukie/server.rb
93
95
  - lib/cuukie/views/index.erb
94
- - pomodoro.txt
96
+ - lib/test.rb
95
97
  - spec/commands_spec.rb
96
98
  - spec/cuukie_spec.rb
97
- - spec/test_project/features/create_user.feature
98
- - spec/test_project/features/delete_user.feature
99
+ - spec/test_project/features/1_visualize_scenarios.feature
100
+ - spec/test_project/features/2_multiple_features.feature
101
+ - spec/test_project/features/3_failed_background.feature
99
102
  - spec/test_project/features/step_definitions/example_steps.rb
103
+ - spec/test_project/features/support/formatters.rb
100
104
  homepage: http://github.com/nusco/cuukie
101
105
  licenses:
102
106
  - MIT
@@ -112,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
116
  version: '0'
113
117
  segments:
114
118
  - 0
115
- hash: -3260506594562917697
119
+ hash: 375837505569438947
116
120
  required_rubygems_version: !ruby/object:Gem::Requirement
117
121
  none: false
118
122
  requirements:
@@ -1,45 +0,0 @@
1
- require 'rest-client'
2
- require 'json'
3
-
4
- class Cuukie
5
- def initialize(step_mother, io, options)
6
- end
7
-
8
- def before_features(features)
9
- post 'before_features', {}
10
- end
11
-
12
- def before_feature(feature)
13
- post 'before_feature', { 'short_name' => feature.short_name,
14
- 'description' => feature.description }
15
- end
16
-
17
- def scenario_name(keyword, name, file_colon_line, source_indent)
18
- post 'scenario_name', { 'name' => name,
19
- 'file_colon_line' => file_colon_line }
20
- end
21
-
22
- def before_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
23
- post 'before_step_result', { 'keyword' => keyword,
24
- 'name' => step_match.format_args,
25
- 'file_colon_line' => step_match.file_colon_line }
26
- end
27
-
28
- def after_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
29
- post 'after_step_result', { 'status' => status }
30
- end
31
-
32
- def after_steps(*)
33
- post 'after_steps', {}
34
- end
35
-
36
- def after_features(*)
37
- post 'after_features', {}
38
- end
39
-
40
- private
41
-
42
- def post(url, params)
43
- RestClient.post "http://localhost:4569/#{url}", params.to_json
44
- end
45
- end
@@ -1,20 +0,0 @@
1
- Feature: Create User
2
- As an Administrator
3
- I want to create a new User
4
- So that he will love me
5
-
6
- Scenario: New User
7
- Given I am on the Admin page
8
- When I create a new User
9
- And I press "OK"
10
- Then I should see the new User's details
11
-
12
- Scenario: Existing User
13
- Given I am on the Admin page
14
- When I create a User with an existing id
15
- Then I should see an error message
16
-
17
- Scenario: Invalid User
18
- Given I am on the Admin page
19
- When I create a User with an empty name
20
- Then I should see an error message
@@ -1,9 +0,0 @@
1
- Feature: Delete User
2
- As an Administrator
3
- I want to delete a User
4
- So that I'll show them who's boss
5
-
6
- Scenario: Deleted User
7
- Given I am on a User page
8
- When I press "Delete"
9
- Then I should not see the User anymore