pretty_face 0.2 → 0.3
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.
- data/.rvmrc +1 -0
- data/ChangeLog +6 -1
- data/features/feature_pages.feature +8 -5
- data/features/pretty_face_report.feature +12 -1
- data/features/step_definitions/report_steps.rb +25 -0
- data/features/support/_feature_header.erb +2 -0
- data/features/support/_suite_header.erb +2 -0
- data/features/support/logo.png +0 -0
- data/features/support/pretty_face/blah.txt +0 -0
- data/lib/pretty_face/formatter/html.rb +49 -11
- data/lib/pretty_face/templates/_main_header.erb +1 -0
- data/lib/pretty_face/templates/_page_header.erb +2 -0
- data/lib/pretty_face/templates/feature.erb +6 -3
- data/lib/pretty_face/templates/main.erb +6 -2
- data/lib/pretty_face/version.rb +1 -1
- data/pretty_face.gemspec +2 -2
- data/spec/lib/html_formatter_spec.rb +2 -2
- metadata +21 -7
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.3-p392@testgen --create
|
data/ChangeLog
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
=== Release 0.
|
1
|
+
=== Release 0.3 / 2013-3-9
|
2
|
+
* Allow users to provide replacement logo for report
|
3
|
+
* Allow users to provide replacement header for top level page
|
4
|
+
* Allow users to provide replacement header for feature pages
|
5
|
+
|
6
|
+
=== Release 0.2 / 2013-2-23
|
2
7
|
* Creating a page for each feature file
|
3
8
|
* Displaying Background
|
4
9
|
* Displaying Errors on feature pages
|
@@ -17,7 +17,6 @@ Feature: pages that show details for features
|
|
17
17
|
|
18
18
|
Scenario: Including an image / logo
|
19
19
|
Then the file "results/basic.html" should contain "<img src="
|
20
|
-
And the file "results/basic.html" should contain "images/face.jpg"
|
21
20
|
|
22
21
|
Scenario: It should show start time and duration in the header
|
23
22
|
Then the file "results/basic.html" should contain "Feature started:"
|
@@ -47,9 +46,8 @@ Feature: pages that show details for features
|
|
47
46
|
And the file "results/advanced.html" should contain "I am using a scenario outline"
|
48
47
|
|
49
48
|
Scenario: It should display the step and data for scenario outline steps
|
50
|
-
|
51
|
-
|
52
|
-
And the file "results/advanced.html" should contain "I use 'bbb'"
|
49
|
+
Then the file "results/advanced.html" should contain "I use aaa"
|
50
|
+
And the file "results/advanced.html" should contain "I use bbb"
|
53
51
|
|
54
52
|
Scenario: It should display descriptions for features
|
55
53
|
Then the file "results/basic.html" should contain "As a stakeholder"
|
@@ -91,4 +89,9 @@ Feature: pages that show details for features
|
|
91
89
|
Then the following files should exist:
|
92
90
|
| results/more/more.html |
|
93
91
|
|
94
|
-
|
92
|
+
Scenario: It should replace the header for the feature pages
|
93
|
+
When I have a feature header partial in the correct location
|
94
|
+
And I run `cucumber fixtures --profile fixture`
|
95
|
+
Then the file "results/basic.html" should contain "The Code Monkeys"
|
96
|
+
And the file "results/basic.html" should contain "Test Results"
|
97
|
+
And I should remove the feature header partial file
|
@@ -26,7 +26,6 @@ Feature: pretty face report
|
|
26
26
|
|
27
27
|
Scenario: Including an image / logo
|
28
28
|
Then the file "results/fixture.html" should contain "<img src="
|
29
|
-
And the file "results/fixture.html" should contain "images/face.jpg"
|
30
29
|
|
31
30
|
Scenario: It should copy the style sheet to the stylesheets directory
|
32
31
|
Then the following files should exist:
|
@@ -66,4 +65,16 @@ Feature: pretty face report
|
|
66
65
|
Then the file "results/fixture.html" should contain "| aaa | bbb |"
|
67
66
|
And the file "results/fixture.html" should contain "| ccc | ddd |"
|
68
67
|
|
68
|
+
Scenario: It should replace the logo image on the top level page
|
69
|
+
When I have a logo file in the correct location
|
70
|
+
And I run `cucumber fixtures --profile fixture`
|
71
|
+
Then the file "results/fixture.html" should contain "img src='images/logo.png'"
|
72
|
+
And I should remove the logo file
|
73
|
+
|
74
|
+
Scenario: It should replace the header for the main page of the report
|
75
|
+
When I have a suite header partial in the correct location
|
76
|
+
And I run `cucumber fixtures --profile fixture`
|
77
|
+
Then the file "results/fixture.html" should contain "The Code Monkeys"
|
78
|
+
And the file "results/fixture.html" should contain "Test Results"
|
79
|
+
And I should remove the suite header partial file
|
69
80
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
When /^I have a logo file in the correct location$/ do
|
4
|
+
FileUtils.cp "features/support/logo.png", "features/support/pretty_face/"
|
5
|
+
end
|
6
|
+
|
7
|
+
Then /^I should remove the logo file$/ do
|
8
|
+
FileUtils.rm "features/support/pretty_face/logo.png"
|
9
|
+
end
|
10
|
+
|
11
|
+
When /^I have a suite header partial in the correct location$/ do
|
12
|
+
FileUtils.cp "features/support/_suite_header.erb", "features/support/pretty_face"
|
13
|
+
end
|
14
|
+
|
15
|
+
Then /^I should remove the suite header partial file$/ do
|
16
|
+
FileUtils.rm "features/support/pretty_face/_suite_header.erb"
|
17
|
+
end
|
18
|
+
|
19
|
+
When /^I have a feature header partial in the correct location$/ do
|
20
|
+
FileUtils.cp "features/support/_feature_header.erb", "features/support/pretty_face"
|
21
|
+
end
|
22
|
+
|
23
|
+
Then /^I should remove the feature header partial file$/ do
|
24
|
+
FileUtils.rm "features/support/pretty_face/_feature_header.erb"
|
25
|
+
end
|
Binary file
|
File without changes
|
@@ -16,7 +16,7 @@ module PrettyFace
|
|
16
16
|
include Cucumber::Formatter::Duration
|
17
17
|
include ViewHelper
|
18
18
|
|
19
|
-
attr_reader :report
|
19
|
+
attr_reader :report, :logo
|
20
20
|
|
21
21
|
def initialize(step_mother, path_or_io, options)
|
22
22
|
@path = path_or_io
|
@@ -26,6 +26,7 @@ module PrettyFace
|
|
26
26
|
@options = options
|
27
27
|
@report = Report.new
|
28
28
|
@img_id = 0
|
29
|
+
@logo = 'face.jpg'
|
29
30
|
end
|
30
31
|
|
31
32
|
def embed(src, mime_type, label)
|
@@ -109,35 +110,51 @@ module PrettyFace
|
|
109
110
|
def after_features(features)
|
110
111
|
@features = features
|
111
112
|
@duration = format_duration(Time.now - @tests_started)
|
113
|
+
copy_images
|
114
|
+
copy_stylesheets
|
112
115
|
generate_report
|
113
|
-
copy_images_directory
|
114
|
-
copy_stylesheets_directory
|
115
116
|
end
|
116
117
|
|
117
118
|
def features
|
118
119
|
@report.features
|
119
120
|
end
|
120
121
|
|
122
|
+
def custom_suite_header?
|
123
|
+
Dir.foreach(customization_directory) do |file|
|
124
|
+
return true if file == '_suite_header.erb'
|
125
|
+
end
|
126
|
+
false
|
127
|
+
end
|
128
|
+
|
129
|
+
def custom_feature_header?
|
130
|
+
Dir.foreach(customization_directory) do |file|
|
131
|
+
return true if file == '_feature_header.erb'
|
132
|
+
end
|
133
|
+
false
|
134
|
+
end
|
135
|
+
|
121
136
|
private
|
122
137
|
|
123
138
|
def generate_report
|
124
|
-
|
139
|
+
paths = [@path_to_erb, customization_directory.to_s]
|
140
|
+
renderer = ActionView::Base.new(paths)
|
125
141
|
filename = File.join(@path_to_erb, 'main')
|
126
|
-
@io.puts renderer.render(:file => filename, :locals => {:report => self})
|
142
|
+
@io.puts renderer.render(:file => filename, :locals => {:report => self, :logo => @logo})
|
127
143
|
features.each do |feature|
|
128
144
|
write_feature_file(feature)
|
129
145
|
end
|
130
146
|
end
|
131
147
|
|
132
148
|
def write_feature_file(feature)
|
133
|
-
|
149
|
+
paths = [@path_to_erb, customization_directory.to_s]
|
150
|
+
renderer = ActionView::Base.new(paths)
|
134
151
|
filename = File.join(@path_to_erb, 'feature')
|
135
152
|
output_file = "#{File.dirname(@path)}/#{feature.file}"
|
136
153
|
to_cut = output_file.split('/').last
|
137
154
|
directory = output_file.sub("/#{to_cut}", '')
|
138
155
|
FileUtils.mkdir directory unless File.directory? directory
|
139
156
|
file = File.new(output_file, Cucumber.file_mode('w'))
|
140
|
-
file.puts renderer.render(:file => filename, :locals => {:feature => feature})
|
157
|
+
file.puts renderer.render(:file => filename, :locals => {:feature => feature, :logo => @logo, :customize => custom_feature_header?})
|
141
158
|
file.flush
|
142
159
|
file.close
|
143
160
|
end
|
@@ -155,19 +172,40 @@ module PrettyFace
|
|
155
172
|
def copy_directory(dir, file_names, file_extension)
|
156
173
|
path = "#{File.dirname(@path)}/#{dir}"
|
157
174
|
file_names.each do |file|
|
158
|
-
|
175
|
+
copy_file File.join(File.dirname(__FILE__), '..', 'templates', "#{file}.#{file_extension}"), path
|
159
176
|
end
|
160
177
|
end
|
161
178
|
|
162
|
-
def
|
163
|
-
|
179
|
+
def copy_file(source, destination)
|
180
|
+
FileUtils.cp source, destination
|
181
|
+
end
|
182
|
+
|
183
|
+
def copy_images
|
164
184
|
copy_directory 'images', %w(failed passed pending undefined skipped), "png"
|
185
|
+
logo = logo_file
|
186
|
+
copy_file logo, "#{File.join(File.dirname(@path), 'images')}" if logo
|
187
|
+
copy_directory 'images', ['face'], 'jpg' unless logo
|
165
188
|
end
|
166
189
|
|
167
|
-
def
|
190
|
+
def copy_stylesheets
|
168
191
|
copy_directory 'stylesheets', ['style'], 'css'
|
169
192
|
end
|
170
193
|
|
194
|
+
def logo_file
|
195
|
+
dir = customization_directory
|
196
|
+
Dir.foreach(dir) do |file|
|
197
|
+
if file =~ /^logo\.(png|gif|jpg|jpeg)$/
|
198
|
+
@logo = file
|
199
|
+
return File.join(dir, file)
|
200
|
+
end
|
201
|
+
end if dir
|
202
|
+
end
|
203
|
+
|
204
|
+
def customization_directory
|
205
|
+
dir = File.join(File.expand_path('features'), 'support', 'pretty_face')
|
206
|
+
return dir if File.exists? dir
|
207
|
+
end
|
208
|
+
|
171
209
|
def process_scenario(scenario)
|
172
210
|
@report.current_scenario.populate(scenario)
|
173
211
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<h2 class="results">Test Results</h2>
|
@@ -9,12 +9,15 @@
|
|
9
9
|
<body>
|
10
10
|
|
11
11
|
<div style="float: left;">
|
12
|
-
<img src="<%= feature.directory_prefix_for(feature.file) %>images
|
12
|
+
<img src="<%= feature.directory_prefix_for(feature.file) %>images/<%= logo %>" width="200" />
|
13
13
|
</div>
|
14
14
|
<div style="float: left;">
|
15
15
|
<a href="<%= feature.parent_filename %>">Back</a>
|
16
|
-
|
17
|
-
|
16
|
+
<% if customize %>
|
17
|
+
<%= render "feature_header" %>
|
18
|
+
<% else %>
|
19
|
+
<%= render "page_header", :feature => feature %>
|
20
|
+
<% end %>
|
18
21
|
<span>Feature started: <%= feature.start_time.strftime("%a %B %-d, %Y at %H:%M:%S") %></span>
|
19
22
|
<br />
|
20
23
|
<span>Duration: <%= feature.formatted_duration(feature.duration) %></span>
|
@@ -8,10 +8,14 @@
|
|
8
8
|
|
9
9
|
<body>
|
10
10
|
<div style="float: left;">
|
11
|
-
<img src=
|
11
|
+
<img src='images/<%= logo %>' width="200" />
|
12
12
|
</div>
|
13
13
|
<div style="float: left;">
|
14
|
-
|
14
|
+
<% if report.custom_suite_header? %>
|
15
|
+
<%= render "suite_header" %>
|
16
|
+
<% else %>
|
17
|
+
<%= render "main_header" %>
|
18
|
+
<% end %>
|
15
19
|
<span>Tests started: <%= report.start_time %></span>
|
16
20
|
<br />
|
17
21
|
<span>Duration: <%= report.total_duration %></span>
|
data/lib/pretty_face/version.rb
CHANGED
data/pretty_face.gemspec
CHANGED
@@ -5,7 +5,7 @@ require "pretty_face/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "pretty_face"
|
7
7
|
s.version = PrettyFace::VERSION
|
8
|
-
s.authors = ["Jeffrey S. Morgan", "Joel Byler"]
|
8
|
+
s.authors = ["Jeffrey S. Morgan", "Joel Byler", "Steve Jackson"]
|
9
9
|
s.email = ["jeff.morgan@leandog.com", "joelbyler@gmail.com", "steve.jackson@leandogsoftware.com"]
|
10
10
|
s.homepage = "http://github.com/cheezy/pretty_face"
|
11
11
|
s.summary = %q{HTML Report/Formatter for Cucumber and RSpec}
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_dependency "actionpack"
|
21
|
+
s.add_dependency "actionpack"
|
22
22
|
|
23
23
|
s.add_development_dependency "cucumber"
|
24
24
|
s.add_development_dependency "rspec"
|
@@ -16,8 +16,8 @@ describe PrettyFace::Formatter::Html do
|
|
16
16
|
|
17
17
|
it "should know how long it takes" do
|
18
18
|
formatter.should_receive(:generate_report)
|
19
|
-
formatter.should_receive(:
|
20
|
-
formatter.should_receive(:
|
19
|
+
formatter.should_receive(:copy_images)
|
20
|
+
formatter.should_receive(:copy_stylesheets)
|
21
21
|
formatter.stub(:make_output_directories)
|
22
22
|
formatter.before_features(nil)
|
23
23
|
|
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pretty_face
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.3'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jeffrey S. Morgan
|
9
9
|
- Joel Byler
|
10
|
+
- Steve Jackson
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
|
-
date: 2013-
|
14
|
+
date: 2013-03-09 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: actionpack
|
@@ -19,7 +20,7 @@ dependencies:
|
|
19
20
|
requirements:
|
20
21
|
- - ! '>='
|
21
22
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
23
|
+
version: '0'
|
23
24
|
type: :runtime
|
24
25
|
prerelease: false
|
25
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,7 +28,7 @@ dependencies:
|
|
27
28
|
requirements:
|
28
29
|
- - ! '>='
|
29
30
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
31
|
+
version: '0'
|
31
32
|
- !ruby/object:Gem::Dependency
|
32
33
|
name: cucumber
|
33
34
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,6 +105,7 @@ extra_rdoc_files: []
|
|
104
105
|
files:
|
105
106
|
- .gitignore
|
106
107
|
- .rspec
|
108
|
+
- .rvmrc
|
107
109
|
- .travis.yml
|
108
110
|
- ChangeLog
|
109
111
|
- Gemfile
|
@@ -114,8 +116,13 @@ files:
|
|
114
116
|
- cucumber.yml
|
115
117
|
- features/feature_pages.feature
|
116
118
|
- features/pretty_face_report.feature
|
119
|
+
- features/step_definitions/report_steps.rb
|
120
|
+
- features/support/_feature_header.erb
|
121
|
+
- features/support/_suite_header.erb
|
117
122
|
- features/support/env.rb
|
118
123
|
- features/support/hooks.rb
|
124
|
+
- features/support/logo.png
|
125
|
+
- features/support/pretty_face/blah.txt
|
119
126
|
- fixtures/advanced.feature
|
120
127
|
- fixtures/background.feature
|
121
128
|
- fixtures/basic.feature
|
@@ -128,6 +135,8 @@ files:
|
|
128
135
|
- lib/pretty_face/formatter/html.rb
|
129
136
|
- lib/pretty_face/formatter/report.rb
|
130
137
|
- lib/pretty_face/formatter/view_helper.rb
|
138
|
+
- lib/pretty_face/templates/_main_header.erb
|
139
|
+
- lib/pretty_face/templates/_page_header.erb
|
131
140
|
- lib/pretty_face/templates/_step.erb
|
132
141
|
- lib/pretty_face/templates/face.jpg
|
133
142
|
- lib/pretty_face/templates/failed.jpg
|
@@ -174,7 +183,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
174
183
|
version: '0'
|
175
184
|
segments:
|
176
185
|
- 0
|
177
|
-
hash: -
|
186
|
+
hash: -2360201377690045592
|
178
187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
188
|
none: false
|
180
189
|
requirements:
|
@@ -183,17 +192,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
192
|
version: '0'
|
184
193
|
segments:
|
185
194
|
- 0
|
186
|
-
hash: -
|
195
|
+
hash: -2360201377690045592
|
187
196
|
requirements: []
|
188
197
|
rubyforge_project: pretty_face
|
189
|
-
rubygems_version: 1.8.
|
198
|
+
rubygems_version: 1.8.25
|
190
199
|
signing_key:
|
191
200
|
specification_version: 3
|
192
201
|
summary: HTML Report/Formatter for Cucumber and RSpec
|
193
202
|
test_files:
|
194
203
|
- features/feature_pages.feature
|
195
204
|
- features/pretty_face_report.feature
|
205
|
+
- features/step_definitions/report_steps.rb
|
206
|
+
- features/support/_feature_header.erb
|
207
|
+
- features/support/_suite_header.erb
|
196
208
|
- features/support/env.rb
|
197
209
|
- features/support/hooks.rb
|
210
|
+
- features/support/logo.png
|
211
|
+
- features/support/pretty_face/blah.txt
|
198
212
|
- spec/lib/html_formatter_spec.rb
|
199
213
|
- spec/spec_helper.rb
|