require 'spec_helper'
describe 'Cuukie' do
before(:all) { start_server }
after(:all) { stop_server_on_port 4569 }
describe 'shows suite result at the top of the page' do
it "contains essential information" do
run_cucumber
html.should match '
Cucumber Features
'
html.should match 'Cuukie'
end
it "shows green if all scenarios passed" do
run_cucumber '1_show_scenarios.feature:9'
html.should match /passedColors\('cucumber-header'\)/
end
it "shows red if any scenario failed" do
run_cucumber '1_show_scenarios.feature'
html.should match /failedColors\('cucumber-header'\)/
end
it "shows yellow if no scenarios failed but some are pending" do
run_cucumber '1_show_scenarios.feature:19'
html.should match /pendingColors\('cucumber-header'\)/
end
end
describe 'in the content area' do
before(:all) { run_cucumber }
it "cleans up previous data at the beginning of a run" do
run_cucumber
html.scan('Feature: Visualize Scenarios').size.should == 1
end
it "shows the feature names" do
html.should match '>Feature: Visualize Scenarios<'
html.should match '>Feature: Multiple Features<'
end
it "shows the feature narratives" do
html.should match '>As a Cuker
I want to visualize Scenarios and Steps
So that I know which steps are not passing<'
end
it "shows the scenario names" do
html.should match '>Scenario: Passing Scenario<'
html.should match '>Scenario: Failing Scenario<'
end
it "shows the scenario source position" do
html.should match '>features/1_show_scenarios.feature:'
end
it "shows the passed scenarios in green" do
html.should match /passedColors\('scenario_1_1'\)/
end
it "shows the failed scenarios in red" do
html.should match /failedColors\('scenario_3_1'\)/
end
it "shows the skipped scenarios in yellow" do
# This can happen if there is an error in a Background step.
# In this case, all the scenarios past the first one are skipped.
html.should match /skippedColors\('scenario_3_2'\)/
end
it "assigns a sequential id to feature elements" do
html.should match 'id="scenario_1_2"'
end
it "shows the step names" do
html.should match '>And I do something'
html.should match '>When I do something else'
end
it "shows the step source position" do
html.should match '>features/step_definitions/example_steps.rb:'
end
it "shows the step status" do
html.should match 'class="step passed"'
html.should match 'class="step pending"'
end
it "escapes HTML output" do
html.should match 'I pass an "argument"'
end
it "shows tables in steps" do
html.should match 'x | '
html.should match '22 | '
end
it "shows multiline strings in steps" do
html.should match ' Cuukie is sweet!\n Let's try it out.
'
end
it "shows total duration" do
html.should match /Finished in \d+m\d+\.\d+s seconds<\/strong>/
end
it "shows end-of-features stats" do
run_cucumber '1_show_scenarios.feature'
html.should match /3 scenarios \(1 failed, 1 pending, 1 passed\)/
html.should match /11 steps \(1 failed, 2 skipped, 1 pending, 7 passed\)/
end
end
end