ugly_face 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/ChangeLog +2 -0
  4. data/Gemfile +13 -0
  5. data/Guardfile +19 -0
  6. data/LICENSE +21 -0
  7. data/README.md +25 -0
  8. data/Rakefile +19 -0
  9. data/autotrader.png +0 -0
  10. data/cucumber.yml +4 -0
  11. data/features/feature_pages.feature +110 -0
  12. data/features/pretty_face_report.feature +81 -0
  13. data/features/step_definitions/report_steps.rb +36 -0
  14. data/features/support/_feature_header.erb +2 -0
  15. data/features/support/_suite_header.erb +2 -0
  16. data/features/support/env.rb +20 -0
  17. data/features/support/error_display.rb +16 -0
  18. data/features/support/hooks.rb +11 -0
  19. data/features/support/logo.png +0 -0
  20. data/fixtures/advanced.feature +57 -0
  21. data/fixtures/background.feature +10 -0
  22. data/fixtures/basic.feature +20 -0
  23. data/fixtures/failing_background.feature +7 -0
  24. data/fixtures/more/more.feature +8 -0
  25. data/fixtures/onemore/deep/more.feature +8 -0
  26. data/fixtures/onemore/more.feature +8 -0
  27. data/fixtures/step_definitions/advanced_steps.rb +34 -0
  28. data/fixtures/step_definitions/basic_steps.rb +25 -0
  29. data/fixtures/support/env.rb +3 -0
  30. data/lib/.DS_Store +0 -0
  31. data/lib/ugly_face/.DS_Store +0 -0
  32. data/lib/ugly_face/formatter/html.rb +289 -0
  33. data/lib/ugly_face/formatter/report.rb +285 -0
  34. data/lib/ugly_face/formatter/view_helper.rb +61 -0
  35. data/lib/ugly_face/templates/_main_header.erb +1 -0
  36. data/lib/ugly_face/templates/_page_header.erb +2 -0
  37. data/lib/ugly_face/templates/_step.erb +39 -0
  38. data/lib/ugly_face/templates/debug.png +0 -0
  39. data/lib/ugly_face/templates/failed.png +0 -0
  40. data/lib/ugly_face/templates/feature.erb +143 -0
  41. data/lib/ugly_face/templates/logo.png +0 -0
  42. data/lib/ugly_face/templates/main.erb +162 -0
  43. data/lib/ugly_face/templates/passed.png +0 -0
  44. data/lib/ugly_face/templates/pending.png +0 -0
  45. data/lib/ugly_face/templates/screenshot.png +0 -0
  46. data/lib/ugly_face/templates/skipped.png +0 -0
  47. data/lib/ugly_face/templates/style.css +346 -0
  48. data/lib/ugly_face/templates/table_failed.png +0 -0
  49. data/lib/ugly_face/templates/table_passed.png +0 -0
  50. data/lib/ugly_face/templates/table_pending.png +0 -0
  51. data/lib/ugly_face/templates/table_skipped.png +0 -0
  52. data/lib/ugly_face/templates/table_undefined.png +0 -0
  53. data/lib/ugly_face/templates/undefined.png +0 -0
  54. data/lib/ugly_face/version.rb +3 -0
  55. data/lib/ugly_face.rb +45 -0
  56. data/spec/lib/customization_spec.rb +23 -0
  57. data/spec/lib/html_formatter_spec.rb +140 -0
  58. data/spec/spec_helper.rb +5 -0
  59. data/ugly_face.gemspec +29 -0
  60. metadata +199 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5f8cf74da2e0daddffd8fdb0ee03a71b8357b974
4
+ data.tar.gz: 54ce14b5b3c72814ac4b295865c19213b855a723
5
+ SHA512:
6
+ metadata.gz: d34d0ea7a0ba0978d70f4d2dd1fc54f5da2325977fc55dc586013110b2831a98e75563080710805ea8f9a3998a6a7ef9e7075f1db60400ea794aed626c9f1663
7
+ data.tar.gz: 940bed0678b652b5aeb25fa34c5a3a4f78473abd35080b35abc6b7ebffefc313dd1fd6c31ad026b8ab2e011da6e57e10c5827f52529f32bd606aa91bd4aa7590
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ .idea/*
2
+ *.gem
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/ChangeLog ADDED
@@ -0,0 +1,2 @@
1
+ === Release 0.1 / 2015-11-20
2
+ Initial release
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'rake'
4
+ gem 'fuubar'
5
+ gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
6
+ gem 'growl'
7
+ gem 'guard-rspec'
8
+ gem 'guard-cucumber'
9
+ gem 'page-object'
10
+ gem 'syntax'
11
+
12
+ # Specify your gem's dependencies in ugly_face.gemspec
13
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,19 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :cli => '--color --format Fuubar' do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { "spec" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
10
+ guard 'cucumber', :notification => true, :all_after_pass => false, :cli => '--profile focus' do
11
+ watch(%r{^features/.+\.feature$})
12
+ watch(%r{^features/support/.+$}) { 'features' }
13
+ watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
14
+ watch(%r{^lib/.+\.rb$}) { "features" }
15
+ watch(%r{^lib/.+\.erb$}) { "features" }
16
+ watch(%r{^lib/.+\.css$}) { "features" }
17
+
18
+ end
19
+
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2011-2012 Jeff Morgan
2
+ Copyright (c) 2015 Justin Commu
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # ugly_face
2
+
3
+ Customized HTML report for cucumber.
4
+
5
+
6
+ ## Getting Started
7
+
8
+ ### Download gem
9
+ Add the gem to your Gemfile
10
+
11
+ `gem 'ugly_face'`
12
+
13
+ Then do a `bundle update` to get the latest version
14
+
15
+ ### Add Formatter
16
+ Update your profile in cucumber.yml file with the following arguments
17
+
18
+ --format UglyFace::Formatter::Html --out index.html
19
+
20
+ You can also run cucumber from the command line with the same arguments.
21
+
22
+
23
+ ## Copyright
24
+
25
+ Copyright (c) 2015 Justin Commu & Jeffrey S. Morgan. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ require "bundler/gem_tasks"
2
+ require 'cucumber'
3
+ require 'cucumber/rake/task'
4
+ require 'rspec/core/rake_task'
5
+
6
+ Cucumber::Rake::Task.new(:features, "Run all features") do |t|
7
+ t.profile = 'default'
8
+ end
9
+
10
+ RSpec::Core::RakeTask.new(:spec) do |spec|
11
+ spec.ruby_opts = "-I lib:spec"
12
+ spec.pattern = 'spec/**/*_spec.rb'
13
+ end
14
+ task :spec
15
+
16
+ desc 'Run all specs and features'
17
+ task :test => %w[spec features]
18
+
19
+ task :default => :test
data/autotrader.png ADDED
Binary file
data/cucumber.yml ADDED
@@ -0,0 +1,4 @@
1
+ default: --color --no-source --format pretty
2
+ fixture: --color --no-source --require fixtures/step_definitions --format UglyFace::Formatter::Html --out results/fixture.html
3
+ focus: --color --no-source --format pretty --tags @focus
4
+
@@ -0,0 +1,110 @@
1
+ @no-clobber
2
+ Feature: pages that show details for features
3
+
4
+ Background:
5
+ When I run `cucumber fixtures --require fixtures/step_definitions --format UglyFace::Formatter::Html --out results/fixture.html`
6
+
7
+ @announce
8
+ @focus
9
+ Scenario: Generate the pages
10
+ Then the following files should exist:
11
+ | results/basic.html |
12
+ | results/advanced.html |
13
+
14
+ Scenario: Generating the basic html page from the erb
15
+ Then the file "results/basic.html" should contain "DOCTYPE html PUBLIC"
16
+ And the file "results/basic.html" should contain "<html xmlns='http://www.w3.org/1999/xhtml'>"
17
+ And the file "results/basic.html" should contain "<head>"
18
+ And the file "results/basic.html" should contain "<body"
19
+ And the file "results/basic.html" should contain "<title>Feature Results</title>"
20
+
21
+ Scenario: Including an image / logo
22
+ Then the file "results/basic.html" should contain "<img src="
23
+
24
+ Scenario: It should show start time and duration in the header
25
+ Then the file "results/basic.html" should contain "started:"
26
+ And the file "results/basic.html" should contain "duration:"
27
+
28
+ Scenario: Generating some basic stats from the erb
29
+ Then the file "results/basic.html" should contain "<th>Executed<"
30
+ And the file "results/basic.html" should contain "<th>Average Duration"
31
+ And the file "results/basic.html" should contain "Scenarios"
32
+ And the file "results/basic.html" should contain "Steps"
33
+
34
+ Scenario: It should capture scenario and step statuses
35
+ Then the file "results/basic.html" should contain "Passed"
36
+ And the file "results/basic.html" should contain "Failed"
37
+ And the file "results/basic.html" should contain "Pending"
38
+ And the file "results/basic.html" should contain "Undefined"
39
+ And the file "results/basic.html" should contain "Skipped"
40
+
41
+ Scenario: It should display scenario names
42
+ Then the file "results/basic.html" should contain "A passing scenario"
43
+ And the file "results/advanced.html" should contain "A scenario outline"
44
+ And the file "results/background.html" should contain "Another passing scenario"
45
+
46
+ Scenario: It should display scenario steps
47
+ Then the file "results/basic.html" should contain "it should say hello"
48
+ And the file "results/background.html" should contain "it should say hello"
49
+ And the file "results/advanced.html" should contain "I am using a scenario outline"
50
+
51
+ Scenario: It should display the step and data for scenario outline steps
52
+ Then the file "results/advanced.html" should contain "I use aaa"
53
+ And the file "results/advanced.html" should contain "I use bbb"
54
+
55
+ Scenario: It should display descriptions for features
56
+ Then the file "results/basic.html" should contain "As a stakeholder"
57
+ Then the file "results/basic.html" should contain "I want to see some details about this feature"
58
+ Then the file "results/basic.html" should contain "So that I have some idea why this test matters"
59
+
60
+ Scenario: It should display a nested table
61
+ Then the file "results/advanced.html" should contain "<th>key1</th>"
62
+ And the file "results/advanced.html" should contain "<th>key2</th>"
63
+ And the file "results/advanced.html" should contain "<th>key3</th>"
64
+ And the file "results/advanced.html" should contain "<td>value1</td>"
65
+ And the file "results/advanced.html" should contain "<td>value2</td>"
66
+ And the file "results/advanced.html" should contain "<td>value3</td>"
67
+
68
+ Scenario: It should display the multi-line argument
69
+ Then the file "results/advanced.html" should contain "Hello with"
70
+ And the file "results/advanced.html" should contain "more than one"
71
+ And the file "results/advanced.html" should contain "line in a string"
72
+
73
+ Scenario: It should display errors for features
74
+ Then the file "results/basic.html" should contain "RSpec::Expectations::ExpectationNotMetError"
75
+ And the file "results/advanced.html" should contain "RSpec::Expectations::ExpectationNotMetError"
76
+ And the file "results/failing_background.html" should contain "RSpec::Expectations::ExpectationNotMetError"
77
+
78
+ Scenario: It should display error message with a yellow background and red text
79
+ Then the file "results/basic.html" should contain "RSpec::Expectations::ExpectationNotMetError"
80
+ And the background of the error message row should be "rgba(249, 231, 8, 1)"
81
+ And the text of the of the error message row should be "rgba(0, 0, 0, 1)"
82
+
83
+ Scenario: Embedding an image into the page
84
+ Then the file "results/basic.html" should contain "<img id='img_0' style='display: none' src='images/autotrader.png'/>"
85
+ And the file "results/basic.html" should contain "<a href='' onclick="
86
+ And the file "results/basic.html" should contain "img=document.getElementById('img_0'); img.style.display = (img.style.display == 'none' ? 'block' : 'none');return false"
87
+ And the file "results/basic.html" should contain ">AutoTrader</a>"
88
+
89
+ Scenario: Displaying a background
90
+ Then the file "results/background.html" should contain "Background: A scenario can have a background"
91
+ And the file "results/background.html" should contain "When Cucumber puts"
92
+
93
+ Scenario: Feature pages should have a link back to the report summary
94
+ Then the file "results/advanced.html" should contain "<a href="
95
+
96
+ Scenario: Should create directories when directories exist in features directory
97
+ Then the following files should exist:
98
+ | results/more/more.html |
99
+
100
+ Scenario: Should create a directory for each directory under features
101
+ Then the following files should exist:
102
+ | results/onemore/more.html |
103
+ | results/onemore/deep/more.html |
104
+
105
+ Scenario: It should replace the header for the feature pages
106
+ When I have a feature header partial in the correct location
107
+ And I run `cucumber fixtures --profile fixture`
108
+ Then the file "results/basic.html" should contain "The Code Monkeys"
109
+ And the file "results/basic.html" should contain "Feature Results"
110
+ And I should remove the feature header partial file
@@ -0,0 +1,81 @@
1
+ @no-clobber
2
+ Feature: pretty face report
3
+
4
+ Background:
5
+ When I run `cucumber fixtures --profile fixture`
6
+
7
+ Scenario: Cucumber crefates an html report
8
+ Then the following files should exist:
9
+ | results/fixture.html |
10
+
11
+ Scenario: Generating the basic html page from the erb
12
+ Then the file "results/fixture.html" should contain "DOCTYPE html PUBLIC"
13
+ And the file "results/fixture.html" should contain "<html xmlns='http://www.w3.org/1999/xhtml'>"
14
+ And the file "results/fixture.html" should contain "<head>"
15
+ And the file "results/fixture.html" should contain "<body"
16
+ And the file "results/fixture.html" should contain "<title>Test Results</title>"
17
+
18
+ Scenario: Generating some basic stats from the erb
19
+ Then the file "results/fixture.html" should contain "<th>Executed<"
20
+ And the file "results/fixture.html" should contain "<th>Average Duration"
21
+ And the file "results/fixture.html" should contain "Scenarios"
22
+ And the file "results/fixture.html" should contain "Steps"
23
+
24
+ Scenario: Including the styles for the main page
25
+ Then the file "results/fixture.html" should contain "<link href='stylesheets/style.css' type='text/css' rel='stylesheet' />"
26
+ And the file "results/fixture.html" should not contain "</style>"
27
+
28
+ Scenario: Including an image / logo
29
+ Then the file "results/fixture.html" should contain "<img src="
30
+
31
+ Scenario: It should copy the style sheet to the stylesheets directory
32
+ Then the following files should exist:
33
+ | results/stylesheets/style.css |
34
+
35
+ Scenario: It should copy the logo image to the images directory
36
+ Then the following files should exist:
37
+ | results/images/face.png |
38
+
39
+ Scenario: It should show start time and duration in the header
40
+ Then the file "results/fixture.html" should contain "started:"
41
+ And the file "results/fixture.html" should contain "duration:"
42
+
43
+ Scenario: It should capture scenario and step statuses
44
+ Then the file "results/fixture.html" should contain "Passed"
45
+ And the file "results/fixture.html" should contain "Failed"
46
+ And the file "results/fixture.html" should contain "Pending"
47
+ And the file "results/fixture.html" should contain "Undefined"
48
+ And the file "results/fixture.html" should contain "Skipped"
49
+
50
+ Scenario: It should display all of the tests with failures
51
+ Then the file "results/fixture.html" should contain "Tests With Failures:"
52
+
53
+ Scenario: It should display a list of all features / scenarios
54
+ Then the file "results/fixture.html" should contain "Feature Overview:"
55
+
56
+ Scenario: It should display useful information about each scenario
57
+ Then the file "results/fixture.html" should contain "Feature"
58
+ And the file "results/fixture.html" should contain "File"
59
+ And the file "results/fixture.html" should contain "Passed"
60
+ And the file "results/fixture.html" should contain "Failed"
61
+ And the file "results/fixture.html" should contain "Pending"
62
+ And the file "results/fixture.html" should contain "Undefined"
63
+ And the file "results/fixture.html" should contain "Skipped"
64
+
65
+ Scenario: It should display the data from scenario outlines
66
+ Then the file "results/fixture.html" should contain "| aaa | bbb |"
67
+ And the file "results/fixture.html" should contain "| ccc | ddd |"
68
+
69
+ Scenario: It should replace the logo image on the top level page
70
+ When I have a logo file in the correct location
71
+ And I run `cucumber fixtures --profile fixture`
72
+ Then the file "results/fixture.html" should contain "img src='images/logo.png'"
73
+ And I should remove the logo file
74
+
75
+ Scenario: It should replace the header for the main page of the report
76
+ When I have a suite header partial in the correct location
77
+ And I run `cucumber fixtures --profile fixture`
78
+ Then the file "results/fixture.html" should contain "The Code Monkeys"
79
+ And the file "results/fixture.html" should contain "Test Results"
80
+ And I should remove the suite header partial file
81
+
@@ -0,0 +1,36 @@
1
+ require 'fileutils'
2
+
3
+ When /^I have a logo file in the correct location$/ do
4
+ FileUtils.cp "features/support/logo.png", "features/support/ugly_face/"
5
+ end
6
+
7
+ Then /^I should remove the logo file$/ do
8
+ FileUtils.rm "features/support/ugly_face/logo.png"
9
+ end
10
+
11
+ When /^I have a suite header partial in the correct location$/ do
12
+ FileUtils.cp "features/support/_suite_header.erb", "features/support/ugly_face/"
13
+ end
14
+
15
+ Then /^I should remove the suite header partial file$/ do
16
+ FileUtils.rm "features/support/ugly_face/_suite_header.erb"
17
+ end
18
+
19
+ When /^I have a feature header partial in the correct location$/ do
20
+ FileUtils.cp "features/support/_feature_header.erb", "features/support/ugly_face/"
21
+ end
22
+
23
+ Then /^I should remove the feature header partial file$/ do
24
+ FileUtils.rm "features/support/ugly_face/_feature_header.erb"
25
+ end
26
+
27
+ Then(/^the background of the error message row should be "(.*?)"$/) do |background|
28
+ @browser = Watir::Browser.new :firefox
29
+ visit ErrorDisplay do |page|
30
+ expect(page.error_background).to include background
31
+ end
32
+ end
33
+
34
+ Then(/^the text of the of the error message row should be "(.*?)"$/) do |color|
35
+ expect(on(ErrorDisplay).error_text_color).to include color
36
+ end
@@ -0,0 +1,2 @@
1
+ <h1>The Code Monkeys</h1>
2
+ <h2>Feature Results:</h2>
@@ -0,0 +1,2 @@
1
+ <h1>The Code Monkeys</h1>
2
+ <h2>Feature Results:</h2>
@@ -0,0 +1,20 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../../', 'lib'))
2
+
3
+ require 'aruba/cucumber'
4
+ require 'page-object'
5
+ require 'ugly_face'
6
+ require 'watir-webdriver'
7
+
8
+ World PageObject::PageFactory
9
+
10
+ Aruba.configure do |config|
11
+ config.working_directory = "."
12
+ end
13
+
14
+ Before do
15
+ @dirs = [File.join(File.dirname(__FILE__), '..', '..')]
16
+ end
17
+
18
+ After do
19
+ @browser.close if @browser
20
+ end
@@ -0,0 +1,16 @@
1
+ class ErrorDisplay
2
+ include PageObject
3
+
4
+ page_url "file://#{File.dirname(__FILE__)}/../../results/basic.html"
5
+
6
+ element(:error, :tr, :class => 'error')
7
+
8
+ def error_background
9
+ error_element.style('background-color')
10
+ end
11
+
12
+ def error_text_color
13
+ error_element.style('color')
14
+ end
15
+
16
+ end
@@ -0,0 +1,11 @@
1
+ require 'fileutils'
2
+
3
+ Before do
4
+ @aruba_timeout_seconds = 60
5
+ FileUtils.mkdir('results') unless File.exists? 'results'
6
+ end
7
+
8
+ After do
9
+ file = File.join(File.dirname(__FILE__), '..', '..', 'fixture.html')
10
+ # FileUtils.rm file
11
+ end
Binary file
@@ -0,0 +1,57 @@
1
+ Feature: Advanced scenarios
2
+
3
+ Scenario Outline: A scenario outline
4
+ Given I am using a scenario outline
5
+ When I use <first>
6
+ And I use <second>
7
+ Then the examples should work
8
+
9
+ Examples:
10
+ | first | second |
11
+ | aaa | bbb |
12
+ | ccc | ddd |
13
+ | eee | fff |
14
+
15
+ Scenario: Nested table in a step
16
+ When I have a nested table step like this:
17
+ | key1 | key2 | key3 |
18
+ | value1 | value2 | value3 |
19
+ Then the table should be displayed in the results
20
+
21
+ Scenario: A scenario with muti-line arguments
22
+ When Cucumber puts
23
+ """
24
+ Hello with
25
+ more than one
26
+ line in a string
27
+ """
28
+ Then it should say
29
+ """
30
+ Hello with
31
+ more than one
32
+ line in a string
33
+ """
34
+
35
+ Scenario Outline: Fails during examples
36
+ Given I am using a scenario outline
37
+ When I fail with <first>
38
+ Then I use <second>
39
+ Then the examples should not work
40
+
41
+ Examples:
42
+ | first | second |
43
+ | aaa | bbb |
44
+ | ccc | ddd |
45
+ | eee | fff |
46
+
47
+ Scenario Outline: Fails before examples
48
+ Given the first step fails
49
+ When I use <first>
50
+ And I use <second>
51
+ Then the examples should not work
52
+
53
+ Examples:
54
+ | first | second |
55
+ | aaa | bbb |
56
+ | ccc | ddd |
57
+ | eee | fff |
@@ -0,0 +1,10 @@
1
+ Feature: Background for scenarios
2
+
3
+ Background: A scenario can have a background
4
+ When Cucumber puts "hello" in a background
5
+
6
+ Scenario: A passing scenario
7
+ Then it should say hello
8
+
9
+ Scenario: Another passing scenario
10
+ Then it should say hello
@@ -0,0 +1,20 @@
1
+ Feature: Basic scenarios
2
+ As a stakeholder
3
+ I want to see some details about this feature
4
+ So that I have some idea why this test matters
5
+
6
+ Scenario: A passing scenario
7
+ When Cucumber puts "hello"
8
+ Then it should say hello
9
+
10
+ Scenario: A failing scenario
11
+ When the first step fails
12
+ Then the second step should not execute
13
+
14
+ Scenario: A pending scenario
15
+ When the first step is pending
16
+ Then the second step is undefined
17
+
18
+ Scenario: A undefined scenario
19
+ When all steps are undefined
20
+ Then the scenario is undefined
@@ -0,0 +1,7 @@
1
+ Feature: Failing Background for scenarios
2
+
3
+ Background: A scenario can have a failing background
4
+ Given the first step fails
5
+
6
+ Scenario: A scenario with failing background
7
+ Then the second step should not execute
@@ -0,0 +1,8 @@
1
+ Feature: More scenarios
2
+ As a stakeholder
3
+ I want to see some details about this feature
4
+ So that I have some idea why this test matters
5
+
6
+ Scenario: A passing scenario with more
7
+ When Cucumber puts "hello"
8
+ Then it should say hello
@@ -0,0 +1,8 @@
1
+ Feature: More scenarios
2
+ As a stakeholder
3
+ I want to see some details about this feature
4
+ So that I have some idea why this test matters
5
+
6
+ Scenario: A passing scenario with more
7
+ When Cucumber puts "hello"
8
+ Then it should say hello
@@ -0,0 +1,8 @@
1
+ Feature: More scenarios
2
+ As a stakeholder
3
+ I want to see some details about this feature
4
+ So that I have some idea why this test matters
5
+
6
+ Scenario: A passing scenario with more
7
+ When Cucumber puts "hello"
8
+ Then it should say hello
@@ -0,0 +1,34 @@
1
+ Given /^I am using a scenario outline$/ do
2
+
3
+ end
4
+
5
+ When /^I use (.*?)$/ do |value|
6
+
7
+ end
8
+
9
+ When /^I fail with (.*?)$/ do |value|
10
+ expect(true).to be false
11
+ end
12
+
13
+
14
+ Then /^the examples should(?: not)? work$/ do
15
+ sleep 1
16
+ end
17
+
18
+ When /^I have a nested table step like this:$/ do |table|
19
+
20
+ end
21
+
22
+ Then /^the table should be displayed in the results$/ do
23
+
24
+ end
25
+
26
+ When /^Cucumber puts$/ do |some_string|
27
+ puts some_string
28
+ @last_string = some_string
29
+ sleep 1
30
+ end
31
+
32
+ Then /^it should say$/ do |some_string|
33
+ expect(@last_string).to eql some_string
34
+ end
@@ -0,0 +1,25 @@
1
+ When /^Cucumber puts "(.*?)"$/ do |some_string|
2
+ puts some_string
3
+ embed('autotrader.png', 'image/png', 'AutoTrader')
4
+ sleep 1
5
+ end
6
+
7
+ When /^Cucumber puts "(.*?)" in a background$/ do |some_string|
8
+ puts some_string
9
+ end
10
+
11
+ Then /^it should say hello$/ do
12
+ puts "It said hello"
13
+ end
14
+
15
+ When /^the first step fails$/ do
16
+ expect(true).to be false
17
+ end
18
+
19
+ Then /^the second step should not execute$/ do
20
+ puts "Should not execute"
21
+ end
22
+
23
+ When /^the first step is pending$/ do
24
+ pending
25
+ end
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../../', 'lib'))
2
+
3
+ require 'ugly_face'
data/lib/.DS_Store ADDED
Binary file
Binary file