cucumber_timing_presenter 1.0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +49 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +36 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +2 -0
- data/cucumber_timing_presenter.gemspec +21 -0
- data/lib/cucumber_timing_presenter.rb +10 -0
- data/lib/cucumber_timing_presenter/all_usage_results_html_presenter.rb +16 -0
- data/lib/cucumber_timing_presenter/configuration.rb +19 -0
- data/lib/cucumber_timing_presenter/html_template.rb +32 -0
- data/lib/cucumber_timing_presenter/javascript/jquery.sparkline.min.js +94 -0
- data/lib/cucumber_timing_presenter/step_average_and_total_html_presenter.rb +18 -0
- data/lib/cucumber_timing_presenter/step_times_of_whole_html_presenter.rb +16 -0
- data/lib/cucumber_timing_presenter/templates/all_usage_results.html +15 -0
- data/lib/cucumber_timing_presenter/templates/step_average_and_total.html +24 -0
- data/lib/cucumber_timing_presenter/templates/step_times_of_whole.html +16 -0
- data/lib/cucumber_timing_presenter/templates/unused_steps.html +0 -0
- data/lib/cucumber_timing_presenter/timing_formatter.rb +44 -0
- data/lib/cucumber_timing_presenter/unused_steps.rb +18 -0
- data/lib/cucumber_timing_presenter/unused_steps_html_presenter.rb +13 -0
- data/lib/cucumber_timing_presenter/usage_record.rb +82 -0
- data/lib/cucumber_timing_presenter/usage_record_html_presenter.rb +41 -0
- data/lib/cucumber_timing_presenter/version.rb +5 -0
- data/nbproject/private/rake-d.txt +0 -0
- data/nbproject/project.properties +3 -0
- data/nbproject/project.xml +11 -0
- data/spec/html_template_spec.rb +65 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/unused_steps_spec.rb +41 -0
- data/spec/usage_record_spec.rb +193 -0
- metadata +111 -0
File without changes
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module CucumberTimingPresenter
|
2
|
+
class TimingFormatter
|
3
|
+
def initialize(step_mother, io, options)
|
4
|
+
@step_mother = step_mother
|
5
|
+
@io = io
|
6
|
+
@options = options
|
7
|
+
|
8
|
+
@usage_record = UsageRecord.new
|
9
|
+
@unused_steps = UnusedSteps.new
|
10
|
+
end
|
11
|
+
|
12
|
+
#call backs
|
13
|
+
def before_step(step)
|
14
|
+
@start_time = Time.now
|
15
|
+
end
|
16
|
+
|
17
|
+
def before_step_result(*args)
|
18
|
+
@duration = Time.now - @start_time
|
19
|
+
end
|
20
|
+
|
21
|
+
def after_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
|
22
|
+
@usage_record.record step_match.step_definition.regexp_source, @duration
|
23
|
+
end
|
24
|
+
|
25
|
+
def after_features(features)
|
26
|
+
get_unused_stepdefs
|
27
|
+
|
28
|
+
@usage_record.calculate
|
29
|
+
|
30
|
+
AllUsageResultsHtmlPresenter.new @usage_record
|
31
|
+
UnusedStepsHtmlPresenter.new @unused_steps
|
32
|
+
StepAverageAndTotalHtmlPresenter.new @usage_record
|
33
|
+
StepTimesOfWholeHtmlPresenter.new @usage_record
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
#helpers
|
38
|
+
def get_unused_stepdefs
|
39
|
+
@step_mother.unmatched_step_definitions.each do |step_definition|
|
40
|
+
@unused_steps.record step_definition.regexp_source, step_definition.file_colon_line
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module CucumberTimingPresenter
|
2
|
+
class UnusedSteps
|
3
|
+
def initialize
|
4
|
+
@record = Hash.new
|
5
|
+
end
|
6
|
+
|
7
|
+
def record step_name, where
|
8
|
+
result = @record[step_name]
|
9
|
+
result = where
|
10
|
+
|
11
|
+
@record[step_name] ||= result
|
12
|
+
end
|
13
|
+
|
14
|
+
def all
|
15
|
+
@record
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module CucumberTimingPresenter
|
2
|
+
class UnusedStepsHtmlPresenter < UsageRecordHtmlPresenter
|
3
|
+
def initialize unused_steps
|
4
|
+
generate_html unused_steps
|
5
|
+
end
|
6
|
+
|
7
|
+
def generate_html unused_steps
|
8
|
+
html = HtmlTemplate.new Configuration.unused_steps_template_path
|
9
|
+
html.replace "PP_UNUSED_STEPS", format_unused_steps(unused_steps.all)
|
10
|
+
html.output "unused_steps.html"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module CucumberTimingPresenter
|
2
|
+
class UsageRecord
|
3
|
+
def initialize
|
4
|
+
@record = Hash.new
|
5
|
+
end
|
6
|
+
|
7
|
+
def record step_name, duration
|
8
|
+
result = @record[step_name]
|
9
|
+
result ||= Hash.new
|
10
|
+
result[:instances] ||= []
|
11
|
+
result[:instances] << duration
|
12
|
+
|
13
|
+
@record[step_name] ||= result
|
14
|
+
end
|
15
|
+
|
16
|
+
def calculate
|
17
|
+
@record.each do |key, usage|
|
18
|
+
usage[:total] = usage[:instances].inject{|sum,x| sum + x }
|
19
|
+
usage[:occurances] = usage[:instances].count
|
20
|
+
usage[:average] = usage[:total].to_f / usage[:occurances].to_f
|
21
|
+
usage[:fastest] = usage[:instances].sort.first
|
22
|
+
usage[:slowest] = usage[:instances].sort.last
|
23
|
+
usage[:variation] = usage[:slowest] - usage[:fastest]
|
24
|
+
usage[:variance] = self.sample_variance usage[:instances]
|
25
|
+
usage[:standard_deviation] = self.standard_deviation usage[:variance]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def all
|
30
|
+
@record
|
31
|
+
end
|
32
|
+
|
33
|
+
def sort_by_property property
|
34
|
+
@record.sort {|a,b| a.last[property.to_sym] <=> b.last[property.to_sym]}
|
35
|
+
end
|
36
|
+
|
37
|
+
def highest_average
|
38
|
+
sort_by_property(:average).reverse.first
|
39
|
+
end
|
40
|
+
|
41
|
+
def highest_elapsed_time
|
42
|
+
sort_by_property(:total).reverse.first
|
43
|
+
end
|
44
|
+
|
45
|
+
def greatest_variation
|
46
|
+
sort_by_property(:variation).reverse.first
|
47
|
+
end
|
48
|
+
|
49
|
+
def average_times_plot_data
|
50
|
+
@record.map {|step_name, data| data[:average].to_f}.sort.reverse
|
51
|
+
end
|
52
|
+
|
53
|
+
def total_times_plot_data
|
54
|
+
sort_by_property(:average).reverse.map {|step_name, data| data[:total].to_f}
|
55
|
+
end
|
56
|
+
|
57
|
+
def step_part_of_total
|
58
|
+
@record.map {|step_name, data| data[:total]}.sort.reverse
|
59
|
+
end
|
60
|
+
|
61
|
+
def total_elapsed_time
|
62
|
+
@record.map {|step_name, data| data[:total]}.inject{|sum,x| sum + x }
|
63
|
+
end
|
64
|
+
|
65
|
+
def sample_variance data
|
66
|
+
occurances = data.count
|
67
|
+
average = data.inject{|sum,x| sum + x } / occurances.to_f
|
68
|
+
|
69
|
+
return nil if occurances <= 1
|
70
|
+
|
71
|
+
sum = data.inject(0){|acc,i|acc.to_f + (i.to_f - average)**2.0}
|
72
|
+
|
73
|
+
return 1 / (occurances.to_f - 1.0) * sum.to_f
|
74
|
+
end
|
75
|
+
|
76
|
+
def standard_deviation sample_variance
|
77
|
+
return nil if sample_variance.nil?
|
78
|
+
|
79
|
+
return Math.sqrt(sample_variance)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module CucumberTimingPresenter
|
2
|
+
class UsageRecordHtmlPresenter
|
3
|
+
def format_usage usage
|
4
|
+
step_name = usage.first
|
5
|
+
step_usage = usage.last
|
6
|
+
|
7
|
+
html = "<table><trbody>"
|
8
|
+
html = "#{html}<tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>#{step_name}</pre></td></tr>"
|
9
|
+
step_usage.each do |key, value|
|
10
|
+
next if key == :instances
|
11
|
+
|
12
|
+
html = "#{html}<tr><th style='text-align:right;'>#{key}</th><td style='padding-left:0.6em;'><pre>#{value}</pre></td></tr>"
|
13
|
+
end
|
14
|
+
html = "#{html}</trbody></table>"
|
15
|
+
|
16
|
+
html
|
17
|
+
end
|
18
|
+
|
19
|
+
def format_unused_steps all_unused
|
20
|
+
html = "<table><trbody>"
|
21
|
+
html = "#{html}<tr><th style='text-align:right;'>step</th><th style='text-align:left;'>where</th></tr>"
|
22
|
+
|
23
|
+
all_unused.each do |step_name, where|
|
24
|
+
html = "#{html}<tr><td style='text-align:right;'>#{step_name}</th><td style='text-align:left; padding-left:0.6em;'><pre>#{where}</pre></td></tr>"
|
25
|
+
end
|
26
|
+
|
27
|
+
html = "#{html}</trbody></table>"
|
28
|
+
html
|
29
|
+
end
|
30
|
+
|
31
|
+
def format_all all_usage
|
32
|
+
output = ""
|
33
|
+
|
34
|
+
all_usage.each do |result|
|
35
|
+
output = "#{output}#{format_usage(result)}<hr/>"
|
36
|
+
end
|
37
|
+
|
38
|
+
output
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project xmlns="http://www.netbeans.org/ns/project/1">
|
3
|
+
<type>org.netbeans.modules.ruby.rubyproject</type>
|
4
|
+
<configuration>
|
5
|
+
<data xmlns="http://www.netbeans.org/ns/ruby-project/1">
|
6
|
+
<name>cucumber_timing_presenter</name>
|
7
|
+
<source-roots/>
|
8
|
+
<test-roots/>
|
9
|
+
</data>
|
10
|
+
</configuration>
|
11
|
+
</project>
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module CucumberTimingPresenter
|
4
|
+
describe HtmlTemplate do
|
5
|
+
describe 'initialize' do
|
6
|
+
it 'should raise an exception if the template is not found' do
|
7
|
+
expect { HtmlTemplate.new 'path/does/not/exist' }.to raise_error
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should load all the templates' do
|
11
|
+
HtmlTemplate.new Configuration.usage_template_path
|
12
|
+
HtmlTemplate.new Configuration.unused_steps_template_path
|
13
|
+
HtmlTemplate.new Configuration.step_times_of_whole
|
14
|
+
HtmlTemplate.new Configuration.step_average_and_total
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'output' do
|
19
|
+
it 'should create a cucumber_timing_presenter folder in tmp if it does not exist' do
|
20
|
+
filename = "my_file.html"
|
21
|
+
path = "tmp/cucumber_timing_presenter"
|
22
|
+
|
23
|
+
html = HtmlTemplate.new Configuration.usage_template_path
|
24
|
+
html.output filename
|
25
|
+
|
26
|
+
File.directory?(path).should == true
|
27
|
+
|
28
|
+
File.delete "#{path}/#{filename}"
|
29
|
+
Dir.delete path
|
30
|
+
|
31
|
+
File.directory?(path).should == false
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should write the current content to the specified file in the tmp path' do
|
35
|
+
filename = "my_file.html"
|
36
|
+
path = "tmp/cucumber_timing_presenter/#{filename}"
|
37
|
+
|
38
|
+
html = HtmlTemplate.new Configuration.usage_template_path
|
39
|
+
html.output filename
|
40
|
+
|
41
|
+
File.exists?(path).should == true
|
42
|
+
|
43
|
+
file = File.open(path, "rb")
|
44
|
+
file_contents = file.read
|
45
|
+
html.content.should == file_contents
|
46
|
+
|
47
|
+
File.delete path
|
48
|
+
File.exists?(path).should == false
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'replace' do
|
53
|
+
it 'should replace small strings' do
|
54
|
+
html = HtmlTemplate.new Configuration.usage_template_path
|
55
|
+
html.replace "PP_STEP_HIGHEST_AVERAGE", %{<table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I create a new project called "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>1.221514</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.718889</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>1.00525</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>1.437778</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.216264</pre></td></tr></trbody></table>}
|
56
|
+
html.content.should == %{<html>\n <head>\n </head>\n <body>\n <h1>Highest average run time</h1>\n <table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I create a new project called "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>1.221514</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.718889</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>1.00525</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>1.437778</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.216264</pre></td></tr></trbody></table>\n <h1>Greatest total time spent in step</h1>\n PP_STEP_HIGHEST_ELAPSED_TIME\n <h1>Biggest variation between fastest and slowest step instance</h1>\n PP_STEP_GREATEST_VARIATION\n <hr/>\n <h1>All Steps</h1>\n PP_ALL_STEPS\n </body>\n</html>}
|
57
|
+
end
|
58
|
+
it 'should insert large strings' do
|
59
|
+
html = HtmlTemplate.new Configuration.usage_template_path
|
60
|
+
html.replace "PP_ALL_STEPS", %{<table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I change my email address to "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.268031</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.268031</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.268031</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.268031</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^(?:|I )click on "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.155292</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0862586666666667</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.106146</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.258776</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.049146</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I go to the "([^"]*)" page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.213795</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0836632</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.183576</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>5</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.418316</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.030219</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I complete the task$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.095895</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.095895</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.095895</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.095895</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will be on the "([^"]*)" project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.005081</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0041195</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.001923</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.008239</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003158</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" project will created$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.003475</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003475</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.003475</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003475</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can delete the project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.059107</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.059107</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.059107</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.059107</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can edit the "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.216079</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.216079</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.216079</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.216079</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I log in as "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.146968</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.146968</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.146968</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.146968</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should see the "([^"]*)" task in the history$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00451</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003211</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.002005</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.009633</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.002505</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should see the "([^"]*)" task in the backlog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.003367</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003367</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.003367</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003367</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I change my password to "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.215791</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.215791</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.215791</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.215791</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I create an account for "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.158814</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.158814</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.158814</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.158814</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I create a new project called "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>1.221514</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.718889</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>1.00525</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>1.437778</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.216264</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I view the "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.221571</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.138235</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.166672</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.27647</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.054899</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can see "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00497</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0043055</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.001329</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.008611</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003641</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should be on the "([^"]*)" page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.126848</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0253203333333333</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.123835</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>6</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.151922</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003013</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will see that projects must have a unique name$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.001412</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.001412</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.001412</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.001412</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can create a new project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.047412</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.047412</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.047412</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.047412</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can view the project backlog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.071688</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.071688</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.071688</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.071688</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I am a new, authenticated user$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.384872</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.3464892</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.139513</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>5</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>1.732446</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.245359</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the task will be done$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.002362</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.002362</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.002362</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.002362</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I edit the project "([^"]*)" to:$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.247047</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.2460855</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.00192299999999995</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.492171</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.245124</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^then I can go to the "([^"]*)" project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.122981</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0948935</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.056175</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.189787</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.066806</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can go to the projects page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.241623</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.200115666666667</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.068747</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.600347</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.172876</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I cancel my account$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.044494</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.044494</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.044494</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.044494</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should see the "([^"]*)" task on the project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.059446</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.059446</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.059446</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.059446</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I make the task active$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.079211</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.079211</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.079211</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.079211</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" task exists in the "([^"]*)" project blacklog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.434581</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.417437</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.031844</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>4</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>1.669748</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.402737</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I am a new, authenticated, admin user$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.271754</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.271754</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.271754</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.271754</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the task will be active$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00245</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00245</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00245</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.00245</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" task exists in the "([^"]*)" project and is done$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.026986</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.022574</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.008824</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.045148</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.018162</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I view all projects$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.030079</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.030079</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.030079</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.030079</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^there should be no pending accounts$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00155</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00155</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00155</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.00155</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^an unapproved account exists$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.088353</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.088353</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.088353</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.088353</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^my account should be deleted$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00188</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00188</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00188</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.00188</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should not see the "([^"]*)" task in the backlog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.001214</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00121</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>7.99999999999998e-06</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00242</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.001206</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" project will exist$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.014723</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.007595</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.011958</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>4</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.03038</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.002765</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will be told that projets require a unique name$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.001984</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.001984</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.001984</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.001984</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^there will be only one "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.002832</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.002832</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.002832</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.002832</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I am on the "([^"]*)" project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.003658</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003658</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.003658</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003658</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I approve the account$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.224123</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.224123</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.224123</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.224123</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I log in using a password of "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.171467</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.171467</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.171467</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.171467</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" task exists in the "([^"]*)" project and is active$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.460897</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.166580333333333</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.442096</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.499741</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.018801</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I delete the "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.09156</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.09156</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.09156</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.09156</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I view the "([^"]*)" project history$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.035948</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.035948</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.035948</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.035948</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I view the "([^"]*)" project backlog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.032592</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.032592</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.032592</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.032592</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the task will be created and associated with the project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.023357</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.023357</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.023357</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.023357</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I create a task in a project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.63809</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.63809</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.63809</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.63809</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will be on the edit project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00225</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00225</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00225</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.00225</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^there will be no project "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.006473</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.004116</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.004714</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.008232</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.001759</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will be on the new project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.003574</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003574</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.003574</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003574</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I am on the user home page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.048025</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0405643333333333</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.011906</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.121693</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.036119</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the following projects:$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>1.02984</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.447912666666667</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.697276</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>9</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>4.031214</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.332564</pre></td></tr></trbody></table>}
|
61
|
+
html.content.should == %{<html>\n <head>\n </head>\n <body>\n <h1>Highest average run time</h1>\n PP_STEP_HIGHEST_AVERAGE\n <h1>Greatest total time spent in step</h1>\n PP_STEP_HIGHEST_ELAPSED_TIME\n <h1>Biggest variation between fastest and slowest step instance</h1>\n PP_STEP_GREATEST_VARIATION\n <hr/>\n <h1>All Steps</h1>\n <table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I change my email address to "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.268031</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.268031</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.268031</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.268031</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^(?:|I )click on "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.155292</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0862586666666667</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.106146</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.258776</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.049146</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I go to the "([^"]*)" page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.213795</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0836632</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.183576</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>5</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.418316</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.030219</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I complete the task$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.095895</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.095895</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.095895</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.095895</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will be on the "([^"]*)" project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.005081</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0041195</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.001923</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.008239</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003158</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" project will created$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.003475</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003475</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.003475</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003475</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can delete the project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.059107</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.059107</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.059107</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.059107</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can edit the "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.216079</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.216079</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.216079</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.216079</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I log in as "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.146968</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.146968</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.146968</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.146968</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should see the "([^"]*)" task in the history$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00451</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003211</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.002005</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.009633</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.002505</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should see the "([^"]*)" task in the backlog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.003367</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003367</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.003367</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003367</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I change my password to "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.215791</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.215791</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.215791</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.215791</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I create an account for "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.158814</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.158814</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.158814</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.158814</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I create a new project called "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>1.221514</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.718889</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>1.00525</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>1.437778</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.216264</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I view the "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.221571</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.138235</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.166672</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.27647</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.054899</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can see "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00497</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0043055</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.001329</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.008611</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003641</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should be on the "([^"]*)" page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.126848</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0253203333333333</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.123835</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>6</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.151922</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003013</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will see that projects must have a unique name$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.001412</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.001412</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.001412</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.001412</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can create a new project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.047412</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.047412</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.047412</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.047412</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can view the project backlog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.071688</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.071688</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.071688</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.071688</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I am a new, authenticated user$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.384872</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.3464892</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.139513</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>5</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>1.732446</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.245359</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the task will be done$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.002362</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.002362</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.002362</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.002362</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I edit the project "([^"]*)" to:$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.247047</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.2460855</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.00192299999999995</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.492171</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.245124</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^then I can go to the "([^"]*)" project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.122981</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0948935</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.056175</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.189787</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.066806</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I can go to the projects page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.241623</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.200115666666667</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.068747</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.600347</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.172876</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I cancel my account$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.044494</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.044494</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.044494</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.044494</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should see the "([^"]*)" task on the project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.059446</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.059446</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.059446</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.059446</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I make the task active$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.079211</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.079211</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.079211</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.079211</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" task exists in the "([^"]*)" project blacklog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.434581</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.417437</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.031844</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>4</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>1.669748</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.402737</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I am a new, authenticated, admin user$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.271754</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.271754</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.271754</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.271754</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the task will be active$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00245</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00245</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00245</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.00245</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" task exists in the "([^"]*)" project and is done$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.026986</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.022574</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.008824</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.045148</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.018162</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I view all projects$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.030079</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.030079</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.030079</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.030079</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^there should be no pending accounts$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00155</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00155</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00155</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.00155</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^an unapproved account exists$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.088353</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.088353</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.088353</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.088353</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^my account should be deleted$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00188</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00188</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00188</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.00188</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I should not see the "([^"]*)" task in the backlog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.001214</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00121</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>7.99999999999998e-06</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00242</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.001206</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" project will exist$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.014723</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.007595</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.011958</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>4</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.03038</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.002765</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will be told that projets require a unique name$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.001984</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.001984</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.001984</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.001984</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^there will be only one "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.002832</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.002832</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.002832</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.002832</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I am on the "([^"]*)" project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.003658</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003658</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.003658</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003658</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I approve the account$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.224123</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.224123</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.224123</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.224123</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I log in using a password of "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.171467</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.171467</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.171467</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.171467</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the "([^"]*)" task exists in the "([^"]*)" project and is active$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.460897</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.166580333333333</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.442096</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.499741</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.018801</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I delete the "([^"]*)" project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.09156</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.09156</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.09156</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.09156</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I view the "([^"]*)" project history$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.035948</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.035948</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.035948</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.035948</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I view the "([^"]*)" project backlog$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.032592</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.032592</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.032592</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.032592</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the task will be created and associated with the project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.023357</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.023357</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.023357</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.023357</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I create a task in a project$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.63809</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.63809</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.63809</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.63809</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will be on the edit project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.00225</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.00225</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.00225</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.00225</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^there will be no project "([^"]*)"$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.006473</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.004116</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.004714</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>2</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.008232</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.001759</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I will be on the new project page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.003574</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.003574</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.0</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>1</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.003574</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.003574</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^I am on the user home page$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>0.048025</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.0405643333333333</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.011906</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>3</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>0.121693</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.036119</pre></td></tr></trbody></table><hr/><table><trbody><tr><th style='text-align:right;'>step</th><td style='padding-left:0.6em;'><pre>/^the following projects:$/</pre></td></tr><tr><th style='text-align:right;'>slowest</th><td style='padding-left:0.6em;'><pre>1.02984</pre></td></tr><tr><th style='text-align:right;'>average</th><td style='padding-left:0.6em;'><pre>0.447912666666667</pre></td></tr><tr><th style='text-align:right;'>variation</th><td style='padding-left:0.6em;'><pre>0.697276</pre></td></tr><tr><th style='text-align:right;'>occurances</th><td style='padding-left:0.6em;'><pre>9</pre></td></tr><tr><th style='text-align:right;'>total</th><td style='padding-left:0.6em;'><pre>4.031214</pre></td></tr><tr><th style='text-align:right;'>fastest</th><td style='padding-left:0.6em;'><pre>0.332564</pre></td></tr></trbody></table>\n </body>\n</html>}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
2
|
+
# in spec/support/ and its subdirectories.
|
3
|
+
Dir["support/**/*.rb"].each {|f| require f}
|
4
|
+
|
5
|
+
require 'cucumber_timing_presenter'
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.mock_with :rspec
|
9
|
+
|
10
|
+
config.color_enabled = true
|
11
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'ap'
|
3
|
+
|
4
|
+
module CucumberTimingPresenter
|
5
|
+
describe UnusedSteps do
|
6
|
+
subject do
|
7
|
+
UnusedSteps.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'record' do
|
11
|
+
it 'should create a record' do
|
12
|
+
subject.record "my_step", "some code somewhere"
|
13
|
+
|
14
|
+
subject.all['my_step'].should == "some code somewhere"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'all' do
|
19
|
+
it 'should return all records sorted alphabetically' do
|
20
|
+
subject.record "my_step 3", "some code somewhere 3"
|
21
|
+
subject.record "my_step 2", "some code somewhere 2"
|
22
|
+
subject.record "my_step 1", "some code somewhere 1"
|
23
|
+
|
24
|
+
subject.all.count.should == 3
|
25
|
+
subject.all.each_with_index do |step_name, where, index|
|
26
|
+
case index
|
27
|
+
when 1
|
28
|
+
step_name.should == "my_step 1"
|
29
|
+
where.should == "some code somewhere 1"
|
30
|
+
when 2
|
31
|
+
step_name.should == "my_step 2"
|
32
|
+
where.should == "some code somewhere 1"
|
33
|
+
when 3
|
34
|
+
step_name.should == "my_step 3"
|
35
|
+
where.should == "some code somewhere 1"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,193 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module CucumberTimingPresenter
|
4
|
+
describe UsageRecord do
|
5
|
+
subject do
|
6
|
+
UsageRecord.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe 'record' do
|
10
|
+
it 'should create a record' do
|
11
|
+
subject.record "my step", 50
|
12
|
+
|
13
|
+
subject.all.count.should == 1
|
14
|
+
subject.all['my step'][:instances].count.should == 1
|
15
|
+
subject.all['my step'][:instances].first.should == 50
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should support multiple instances of record' do
|
19
|
+
subject.record "my step", 50
|
20
|
+
subject.record "my step", 75
|
21
|
+
|
22
|
+
subject.all.count.should == 1
|
23
|
+
subject.all['my step'][:instances].count.should == 2
|
24
|
+
subject.all['my step'][:instances].first.should == 50
|
25
|
+
subject.all['my step'][:instances].last.should == 75
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'calculate' do
|
30
|
+
before(:each) do
|
31
|
+
subject.record "my step", 25
|
32
|
+
subject.record "my step", 50
|
33
|
+
subject.record "my step", 75
|
34
|
+
|
35
|
+
subject.calculate
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should calculate the total elapsed time' do
|
39
|
+
subject.all["my step"][:total].should == 150
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should calculate the number of occurances' do
|
43
|
+
subject.all["my step"][:occurances].should == 3
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should calculate the average time' do
|
47
|
+
subject.all["my step"][:average].should == 50
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should calculate the fastest step' do
|
51
|
+
subject.all["my step"][:fastest].should == 25
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should calculate the slowest step' do
|
55
|
+
subject.all["my step"][:slowest].should == 75
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should calculate the variation' do
|
59
|
+
subject.all["my step"][:variation].should == 50
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should calculate the standard deviation' do
|
63
|
+
subject.all["my step"][:standard_deviation].should == 25
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should calculate the variance' do
|
67
|
+
subject.all["my step"][:variance].should == 625
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe 'all' do
|
72
|
+
before(:each) do
|
73
|
+
subject.record "my step 1", 24
|
74
|
+
subject.record "my step 1", 50
|
75
|
+
subject.record "my step 2", 75
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should return all records' do
|
79
|
+
subject.all.count.should == 2
|
80
|
+
subject.all.each_with_index do |step_name, data, index|
|
81
|
+
case index
|
82
|
+
when 1
|
83
|
+
step_name.should == "my_step 2"
|
84
|
+
when 2
|
85
|
+
step_name.should == "my_step 1"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe 'set operations' do
|
92
|
+
before(:each) do
|
93
|
+
subject.record "my step 1", 25
|
94
|
+
subject.record "my step 1", 50
|
95
|
+
subject.record "my step 2", 49
|
96
|
+
subject.record "my step 2", 51
|
97
|
+
subject.record "my step 3", 75
|
98
|
+
subject.record "my step 3", 10
|
99
|
+
|
100
|
+
subject.calculate
|
101
|
+
end
|
102
|
+
|
103
|
+
describe 'sort_by_property' do
|
104
|
+
it 'should sort all records by any property' do
|
105
|
+
subject.sort_by_property(:total).first.first.should == "my step 1"
|
106
|
+
subject.sort_by_property(:total).last.first.should == "my step 2"
|
107
|
+
|
108
|
+
subject.sort_by_property(:fastest).first.first.should == "my step 3"
|
109
|
+
subject.sort_by_property(:fastest).last.first.should == "my step 2"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe 'highest_average' do
|
114
|
+
it 'should return the record with the highest average' do
|
115
|
+
subject.highest_average.first.should == "my step 2"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe 'highest_elapsed_time' do
|
120
|
+
it 'should return the record with the highest elapsed time' do
|
121
|
+
subject.highest_elapsed_time.first.should == "my step 2"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe 'greatest_variation' do
|
126
|
+
it 'should return the record with the greatest variation between slow and fast' do
|
127
|
+
subject.greatest_variation.first.should == "my step 3"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe 'step_part_of_total' do
|
132
|
+
it 'should return the total times of each step from largest to smallest' do
|
133
|
+
subject.step_part_of_total.should == [100.0, 85.0, 75.0]
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe 'total_elapsed_time' do
|
138
|
+
it 'should return the count of all steps' do
|
139
|
+
subject.total_elapsed_time.should == 260
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe 'average_times_plot_data' do
|
144
|
+
it 'should return all the averages sorted by average amount descending' do
|
145
|
+
subject.record "my step 1", 25
|
146
|
+
subject.record "my step 1", 50
|
147
|
+
subject.record "my step 2", 49
|
148
|
+
subject.record "my step 2", 51
|
149
|
+
subject.record "my step 3", 75
|
150
|
+
subject.record "my step 3", 10
|
151
|
+
|
152
|
+
subject.calculate
|
153
|
+
|
154
|
+
subject.average_times_plot_data.should == [50.0, 42.5, 37.5]
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe 'total_times_plot_data' do
|
159
|
+
it 'should return the total times of each step sorted by average amount descending' do
|
160
|
+
subject.record "my step 1", 25
|
161
|
+
subject.record "my step 1", 50
|
162
|
+
subject.record "my step 3", 75
|
163
|
+
subject.record "my step 3", 10
|
164
|
+
|
165
|
+
subject.calculate
|
166
|
+
|
167
|
+
subject.total_times_plot_data.should == [100.0, 170, 150.0]
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
describe 'sample_variance' do
|
173
|
+
it 'should calculate the variance' do
|
174
|
+
subject.sample_variance([1,2,3,4,5,6]).should be_within(0.1).of(3.5)
|
175
|
+
subject.sample_variance([2,4,4,4,5,5,7,9]).should be_within(0.1).of(4.57)
|
176
|
+
subject.sample_variance([25,50,75]).should be_within(0.1).of(625)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
describe 'standard_deviation' do
|
181
|
+
it 'should calculate the standard deviation' do
|
182
|
+
sample_variance = subject.sample_variance([1,2,3,4,5,6])
|
183
|
+
subject.standard_deviation(sample_variance).should be_within(0.1).of(1.87)
|
184
|
+
|
185
|
+
sample_variance = subject.sample_variance([2,4,4,4,5,5,7,9])
|
186
|
+
subject.standard_deviation(sample_variance).should be_within(0.1).of(2.13)
|
187
|
+
|
188
|
+
sample_variance = subject.sample_variance([25,50,75])
|
189
|
+
subject.standard_deviation(sample_variance).should be_within(0.1).of(25)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|