cucumber 3.0.0.pre.1 → 3.0.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cucumberproignore +6 -0
- data/.rubocop.yml +13 -0
- data/.rubocop_todo.yml +1075 -0
- data/.travis.yml +42 -8
- data/CONTRIBUTING.md +8 -1
- data/Gemfile +16 -10
- data/History.md +96 -36
- data/README.md +12 -3
- data/Rakefile +12 -2
- data/appveyor.yml +26 -0
- data/cucumber.gemspec +15 -10
- data/cucumber.yml +9 -10
- data/examples/i18n/Rakefile +1 -1
- data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +2 -2
- data/examples/i18n/ar/lib/calculator.rb +2 -2
- data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +6 -6
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/ca/lib/calculadora.rb +2 -2
- data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/cs/lib/calculator.rb +3 -3
- data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +4 -4
- data/examples/i18n/da/lib/lommeregner.rb +2 -2
- data/examples/i18n/de/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/de/lib/calculator.rb +2 -2
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/el/lib/calculator.rb +2 -2
- data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +4 -4
- data/examples/i18n/en-lol/lib/basket.rb +2 -2
- data/examples/i18n/en-lol/lib/belly.rb +2 -2
- data/examples/i18n/en/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/en/lib/calculator.rb +2 -2
- data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/eo/lib/calculator.rb +2 -2
- data/examples/i18n/es/features/step_definitions/calculador_steps.rb +5 -5
- data/examples/i18n/es/lib/calculador.rb +2 -2
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +4 -4
- data/examples/i18n/et/lib/kalkulaator.rb +3 -3
- data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +3 -3
- data/examples/i18n/fi/lib/laskin.rb +1 -1
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +8 -8
- data/examples/i18n/fr/features/support/env.rb +1 -1
- data/examples/i18n/fr/lib/calculatrice.rb +2 -2
- data/examples/i18n/he/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/he/lib/calculator.rb +1 -1
- data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +3 -3
- data/examples/i18n/hi/lib/calculator.rb +1 -1
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +4 -4
- data/examples/i18n/ht/lib/kalkilatris.rb +2 -2
- data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/hu/lib/calculator.rb +1 -1
- data/examples/i18n/id/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/id/lib/calculator.rb +2 -2
- data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +4 -4
- data/examples/i18n/it/lib/calcolatrice.rb +3 -3
- data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +3 -3
- data/examples/i18n/ja/features/support/env.rb +1 -1
- data/examples/i18n/ja/lib/calculator.rb +2 -2
- data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/ko/lib/calculator.rb +2 -2
- data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/lt/lib/calculator.rb +2 -2
- data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/lv/lib/calculator.rb +2 -2
- data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +3 -3
- data/examples/i18n/no/features/support/env.rb +1 -1
- data/examples/i18n/no/lib/kalkulator.rb +2 -2
- data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/pl/lib/calculator.rb +2 -2
- data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +3 -3
- data/examples/i18n/pt/features/support/env.rb +1 -1
- data/examples/i18n/pt/lib/calculadora.rb +1 -1
- data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/ro/lib/calculator.rb +1 -1
- data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/sk/lib/calculator.rb +2 -2
- data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +3 -3
- data/examples/i18n/sr-Cyrl/features/support/env.rb +1 -1
- data/examples/i18n/sr-Cyrl/lib/calculator.rb +2 -2
- data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/sr-Latn/lib/calculator.rb +2 -2
- data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +3 -3
- data/examples/i18n/sv/lib/kalkulator.rb +2 -2
- data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +4 -4
- data/examples/i18n/tr/lib/hesap_makinesi.rb +2 -2
- data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/zh-CN/lib/calculator.rb +2 -2
- data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/zh-TW/lib/calculator.rb +2 -2
- data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +3 -3
- data/examples/sinatra/features/step_definitions/add_steps.rb +4 -4
- data/examples/tcl/features/step_definitions/fib_steps.rb +2 -2
- data/examples/test_unit/features/step_definitions/test_unit_steps.rb +4 -4
- data/examples/watir/features/step_definitions/search_steps.rb +3 -3
- data/examples/watir/features/support/screenshots.rb +5 -5
- data/features/docs/api/list_step_defs_as_json.feature +21 -7
- data/features/docs/api/listen_for_events.feature +1 -1
- data/features/docs/api/run_cli_main_with_existing_runtime.feature +1 -0
- data/features/docs/cli/dry_run.feature +3 -0
- data/features/docs/cli/execute_with_tag_filter.feature +4 -4
- data/features/docs/cli/fail_fast.feature +2 -0
- data/features/docs/{gherkin/language_help.feature → cli/i18n.feature} +6 -6
- data/features/docs/cli/randomize.feature +2 -2
- data/features/docs/cli/retry_failing_tests.feature +28 -3
- data/features/docs/cli/run_scenarios_matching_name.feature +1 -0
- data/features/docs/cli/specifying_multiple_formatters.feature +3 -0
- data/features/docs/cli/strict_mode.feature +6 -0
- data/features/docs/defining_steps/nested_steps.feature +5 -1
- data/features/docs/defining_steps/nested_steps_i18n.feature +1 -0
- data/features/docs/defining_steps/nested_steps_with_second_arg.feature +2 -0
- data/features/docs/defining_steps/printing_messages.feature +1 -1
- data/features/docs/defining_steps/skip_scenario.feature +1 -0
- data/features/docs/defining_steps/snippets.feature +18 -18
- data/features/docs/events/gherkin_source_read_event.feature +43 -0
- data/features/docs/events/step_activated_event.feature +36 -0
- data/features/docs/events/step_definition_registered_event.feature +29 -0
- data/features/docs/events/test_case_finished_event.feature +35 -0
- data/features/docs/events/test_case_starting_event.feature +54 -0
- data/features/docs/events/test_run_finished_event.feature +40 -0
- data/features/docs/events/test_run_starting_event.feature +41 -0
- data/features/docs/events/test_step_finished_event.feature +47 -0
- data/features/docs/events/test_step_starting_event.feature +43 -0
- data/features/docs/exception_in_after_hook.feature +3 -2
- data/features/docs/exception_in_after_step_hook.feature +2 -0
- data/features/docs/exception_in_around_hook.feature +2 -0
- data/features/docs/exception_in_before_hook.feature +3 -1
- data/features/docs/extending_cucumber/custom_formatter.feature +21 -1
- data/features/docs/formatters/json_formatter.feature +4 -4
- data/features/docs/formatters/junit_formatter.feature +7 -6
- data/features/docs/formatters/pretty_formatter.feature +1 -0
- data/features/docs/formatters/progress_formatter.feature +1 -0
- data/features/docs/formatters/rerun_formatter.feature +2 -0
- data/features/docs/formatters/summary_formatter.feature +1 -0
- data/features/docs/formatters/usage_formatter.feature +3 -0
- data/features/docs/getting_started.feature +2 -1
- data/features/docs/gherkin/background.feature +5 -5
- data/features/docs/gherkin/doc_strings.feature +2 -0
- data/features/docs/gherkin/expand_option_for_outlines.feature +1 -0
- data/features/docs/gherkin/outlines.feature +4 -0
- data/features/docs/gherkin/unicode_table.feature +1 -0
- data/features/docs/gherkin/using_descriptions.feature +1 -0
- data/features/docs/gherkin/using_star_notation.feature +1 -1
- data/features/docs/post_configuration_hook.feature +1 -1
- data/features/docs/rake_task.feature +5 -0
- data/features/docs/raketask.feature +3 -1
- data/features/docs/work_in_progress.feature +5 -2
- data/features/docs/writing_support_code/after_step_hooks.feature +3 -1
- data/features/docs/writing_support_code/around_hooks.feature +6 -0
- data/features/docs/writing_support_code/before_hook.feature +1 -0
- data/features/docs/writing_support_code/hook_order.feature +3 -1
- data/features/docs/writing_support_code/parameter_types.feature +75 -0
- data/features/docs/writing_support_code/tagged_hooks.feature +1 -1
- data/features/lib/step_definitions/aruba_steps.rb +4 -10
- data/features/lib/step_definitions/cli_steps.rb +2 -2
- data/features/lib/step_definitions/cucumber_steps.rb +8 -12
- data/features/lib/step_definitions/iso-8859-1_steps.rb +2 -2
- data/features/lib/step_definitions/json_steps.rb +1 -1
- data/features/lib/step_definitions/junit_steps.rb +1 -1
- data/features/lib/step_definitions/language_steps.rb +2 -2
- data/features/lib/step_definitions/profile_steps.rb +6 -6
- data/features/lib/step_definitions/retry_steps.rb +3 -3
- data/features/lib/step_definitions/ruby_steps.rb +1 -1
- data/features/lib/support/env.rb +1 -1
- data/features/lib/support/fake_wire_server.rb +7 -2
- data/features/lib/support/feature_factory.rb +1 -1
- data/features/lib/support/normalise_output.rb +13 -12
- data/features/lib/support/parameter_types.rb +8 -0
- data/gem_tasks/contributors.rake +9 -6
- data/gem_tasks/environment.rake +1 -5
- data/gem_tasks/examples.rake +1 -1
- data/gem_tasks/fix_cr_lf.rake +1 -1
- data/gem_tasks/flog.rake +2 -2
- data/gem_tasks/rspec.rake +1 -1
- data/lib/autotest/cucumber_mixin.rb +15 -15
- data/lib/autotest/discover.rb +2 -2
- data/lib/cucumber/cli/configuration.rb +7 -13
- data/lib/cucumber/cli/main.rb +6 -6
- data/lib/cucumber/cli/options.rb +163 -126
- data/lib/cucumber/cli/profile_loader.rb +24 -20
- data/lib/cucumber/configuration.rb +12 -17
- data/lib/cucumber/constantize.rb +1 -1
- data/lib/cucumber/core_ext/string.rb +1 -1
- data/lib/cucumber/deprecate.rb +1 -1
- data/lib/cucumber/events.rb +11 -1
- data/lib/cucumber/events/gherkin_source_read.rb +17 -0
- data/lib/cucumber/events/{step_match.rb → step_activated.rb} +2 -2
- data/lib/cucumber/events/step_definition_registered.rb +1 -1
- data/lib/cucumber/events/test_case_finished.rb +18 -0
- data/lib/cucumber/events/test_case_starting.rb +15 -0
- data/lib/cucumber/events/test_run_starting.rb +16 -0
- data/lib/cucumber/events/test_step_finished.rb +20 -0
- data/lib/cucumber/events/test_step_starting.rb +17 -0
- data/lib/cucumber/filters.rb +1 -0
- data/lib/cucumber/filters/activate_steps.rb +1 -1
- data/lib/cucumber/filters/broadcast_test_run_starting_event.rb +27 -0
- data/lib/cucumber/filters/retry.rb +1 -1
- data/lib/cucumber/filters/tag_limits.rb +3 -3
- data/lib/cucumber/filters/tag_limits/verifier.rb +1 -1
- data/lib/cucumber/formatter/ansicolor.rb +8 -11
- data/lib/cucumber/formatter/backtrace_filter.rb +19 -7
- data/lib/cucumber/formatter/console.rb +16 -19
- data/lib/cucumber/formatter/console_counts.rb +8 -21
- data/lib/cucumber/formatter/console_issues.rb +30 -9
- data/lib/cucumber/formatter/duration.rb +1 -1
- data/lib/cucumber/formatter/fail_fast.rb +1 -1
- data/lib/cucumber/formatter/html.rb +168 -242
- data/lib/cucumber/formatter/html_builder.rb +110 -0
- data/lib/cucumber/formatter/inline-js.js +30 -0
- data/lib/cucumber/formatter/interceptor.rb +2 -2
- data/lib/cucumber/formatter/json.rb +12 -12
- data/lib/cucumber/formatter/junit.rb +11 -11
- data/lib/cucumber/formatter/legacy_api/adapter.rb +27 -27
- data/lib/cucumber/formatter/legacy_api/ast.rb +16 -20
- data/lib/cucumber/formatter/legacy_api/results.rb +6 -8
- data/lib/cucumber/formatter/pretty.rb +17 -17
- data/lib/cucumber/formatter/progress.rb +11 -12
- data/lib/cucumber/formatter/rerun.rb +1 -1
- data/lib/cucumber/formatter/steps.rb +1 -1
- data/lib/cucumber/formatter/unicode.rb +1 -1
- data/lib/cucumber/formatter/usage.rb +12 -12
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +1 -1
- data/lib/cucumber/gherkin/formatter/escaping.rb +1 -1
- data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +44 -17
- data/lib/cucumber/glue/hook.rb +43 -0
- data/lib/cucumber/glue/invoke_in_world.rb +70 -0
- data/lib/cucumber/glue/proto_world.rb +225 -0
- data/lib/cucumber/{rb_support/rb_language.rb → glue/registry_and_more.rb} +45 -86
- data/lib/cucumber/{rb_support → glue}/snippet.rb +62 -25
- data/lib/cucumber/glue/step_definition.rb +143 -0
- data/lib/cucumber/glue/world_factory.rb +23 -0
- data/lib/cucumber/hooks.rb +4 -4
- data/lib/cucumber/multiline_argument.rb +2 -2
- data/lib/cucumber/multiline_argument/data_table.rb +40 -178
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +158 -0
- data/lib/cucumber/platform.rb +3 -5
- data/lib/cucumber/rake/task.rb +11 -11
- data/lib/cucumber/rspec/disable_option_parser.rb +1 -1
- data/lib/cucumber/rspec/doubles.rb +1 -1
- data/lib/cucumber/running_test_case.rb +2 -2
- data/lib/cucumber/runtime.rb +46 -34
- data/lib/cucumber/runtime/after_hooks.rb +1 -1
- data/lib/cucumber/runtime/for_programming_languages.rb +1 -36
- data/lib/cucumber/runtime/support_code.rb +19 -15
- data/lib/cucumber/runtime/user_interface.rb +4 -11
- data/lib/cucumber/step_argument.rb +0 -2
- data/lib/cucumber/step_definition_light.rb +1 -0
- data/lib/cucumber/step_match.rb +16 -15
- data/lib/cucumber/step_match_search.rb +2 -3
- data/lib/cucumber/term/ansicolor.rb +1 -1
- data/lib/cucumber/version +1 -1
- data/lib/simplecov_setup.rb +1 -1
- data/scripts/invite-collaborator +40 -0
- data/scripts/update-history +83 -0
- data/spec/cucumber/cli/configuration_spec.rb +95 -97
- data/spec/cucumber/cli/main_spec.rb +7 -7
- data/spec/cucumber/cli/options_spec.rb +112 -78
- data/spec/cucumber/cli/profile_loader_spec.rb +24 -5
- data/spec/cucumber/cli/rerun_spec.rb +20 -20
- data/spec/cucumber/configuration_spec.rb +47 -47
- data/spec/cucumber/constantize_spec.rb +2 -2
- data/spec/cucumber/events_spec.rb +9 -0
- data/spec/cucumber/file_specs_spec.rb +25 -25
- data/spec/cucumber/filters/activate_steps_spec.rb +16 -16
- data/spec/cucumber/filters/gated_receiver_spec.rb +6 -6
- data/spec/cucumber/filters/retry_spec.rb +22 -9
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +11 -11
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +14 -14
- data/spec/cucumber/filters/tag_limits_spec.rb +8 -8
- data/spec/cucumber/formatter/ansicolor_spec.rb +9 -9
- data/spec/cucumber/formatter/backtrace_filter_spec.rb +32 -0
- data/spec/cucumber/formatter/console_counts_spec.rb +1 -1
- data/spec/cucumber/formatter/duration_spec.rb +3 -3
- data/spec/cucumber/formatter/fail_fast_spec.rb +21 -21
- data/spec/cucumber/formatter/html_spec.rb +58 -58
- data/spec/cucumber/formatter/json_spec.rb +44 -46
- data/spec/cucumber/formatter/junit_spec.rb +43 -45
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +43 -43
- data/spec/cucumber/formatter/pretty_spec.rb +107 -107
- data/spec/cucumber/formatter/progress_spec.rb +20 -20
- data/spec/cucumber/formatter/rerun_spec.rb +1 -1
- data/spec/cucumber/formatter/spec_helper.rb +6 -5
- data/spec/cucumber/{rb_support/rb_world_spec.rb → glue/proto_world_spec.rb} +20 -5
- data/spec/cucumber/glue/registry_and_more_spec.rb +213 -0
- data/spec/cucumber/{rb_support → glue}/snippet_spec.rb +61 -25
- data/spec/cucumber/glue/step_definition_spec.rb +207 -0
- data/spec/cucumber/hooks_spec.rb +3 -3
- data/spec/cucumber/multiline_argument/data_table_spec.rb +177 -133
- data/spec/cucumber/project_initializer_spec.rb +10 -10
- data/spec/cucumber/rake/forked_spec.rb +10 -10
- data/spec/cucumber/rake/task_spec.rb +20 -20
- data/spec/cucumber/running_test_case_spec.rb +35 -35
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +1 -30
- data/spec/cucumber/runtime_spec.rb +2 -2
- data/spec/cucumber/step_argument_spec.rb +5 -5
- data/spec/cucumber/step_match_search_spec.rb +31 -41
- data/spec/cucumber/step_match_spec.rb +33 -33
- data/spec/cucumber/world/pending_spec.rb +10 -10
- metadata +117 -47
- data/features/docs/formatters/debug_formatter.feature +0 -47
- data/features/docs/writing_support_code/transforms.feature +0 -98
- data/features/lib/step_definitions/wire_steps.rb +0 -59
- data/gem_tasks/cucumber.rake +0 -26
- data/lib/cucumber/core_ext/instance_exec.rb +0 -71
- data/lib/cucumber/formatter/debug.rb +0 -36
- data/lib/cucumber/rb_support/rb_hook.rb +0 -20
- data/lib/cucumber/rb_support/rb_step_definition.rb +0 -132
- data/lib/cucumber/rb_support/rb_transform.rb +0 -60
- data/lib/cucumber/rb_support/rb_world.rb +0 -171
- data/spec/cucumber/core_ext/instance_exec_spec.rb +0 -5
- data/spec/cucumber/formatter/debug_spec.rb +0 -65
- data/spec/cucumber/rb_support/rb_language_spec.rb +0 -321
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -200
- data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -47
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
require 'cucumber/formatter/spec_helper'
|
4
4
|
require 'cucumber/formatter/html'
|
5
5
|
require 'nokogiri'
|
6
|
-
require 'cucumber/
|
6
|
+
require 'cucumber/glue/registry_and_more'
|
7
7
|
require 'rspec/mocks'
|
8
8
|
|
9
9
|
module Cucumber
|
@@ -24,13 +24,13 @@ module Cucumber
|
|
24
24
|
@formatter = Html.new(runtime, @out, {})
|
25
25
|
end
|
26
26
|
|
27
|
-
it
|
27
|
+
it 'does not raise an error when visiting a blank feature name' do
|
28
28
|
expect(-> {
|
29
|
-
@formatter.feature_name(
|
29
|
+
@formatter.feature_name('Feature', '')
|
30
30
|
}).not_to raise_error
|
31
31
|
end
|
32
32
|
|
33
|
-
describe
|
33
|
+
describe 'when writing the report to a file' do
|
34
34
|
before(:each) do
|
35
35
|
allow(@out).to receive(:respond_to?).with(:path).and_return(true)
|
36
36
|
expect(@out).to receive(:path).and_return('out/file.html')
|
@@ -38,7 +38,7 @@ module Cucumber
|
|
38
38
|
@doc = Nokogiri.HTML(@out.string)
|
39
39
|
end
|
40
40
|
|
41
|
-
describe
|
41
|
+
describe 'with a step that embeds a snapshot' do
|
42
42
|
define_steps do
|
43
43
|
Given(/snap/) {
|
44
44
|
RSpec::Mocks.allow_message(File, :file?) { true }
|
@@ -52,19 +52,19 @@ module Cucumber
|
|
52
52
|
Given snap
|
53
53
|
FEATURE
|
54
54
|
|
55
|
-
it
|
56
|
-
expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq
|
55
|
+
it 'converts the snapshot path to a relative path' do
|
56
|
+
expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'snapshot.jpeg'
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
describe
|
61
|
+
describe 'given a single feature' do
|
62
62
|
before(:each) do
|
63
63
|
run_defined_feature
|
64
64
|
@doc = Nokogiri.HTML(@out.string)
|
65
65
|
end
|
66
66
|
|
67
|
-
describe
|
67
|
+
describe 'basic feature' do
|
68
68
|
define_feature <<-FEATURE
|
69
69
|
Feature: Bananas
|
70
70
|
In order to find my inner monkey
|
@@ -72,12 +72,12 @@ module Cucumber
|
|
72
72
|
I must eat bananas
|
73
73
|
FEATURE
|
74
74
|
|
75
|
-
it
|
75
|
+
it 'should output a main container div' do
|
76
76
|
expect(@out.string).to match(/\<div class="cucumber"\>/)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
describe
|
80
|
+
describe 'with a comment' do
|
81
81
|
define_feature <<-FEATURE
|
82
82
|
# Healthy
|
83
83
|
Feature: Foo
|
@@ -88,16 +88,16 @@ module Cucumber
|
|
88
88
|
it { expect(@out.string).to match(/^\<!DOCTYPE/) }
|
89
89
|
it { expect(@out.string).to match(/\<\/html\>$/) }
|
90
90
|
|
91
|
-
it
|
91
|
+
it 'nests the comment within the feature' do
|
92
92
|
expect(@doc).to have_css_node('.feature .comment', /Healthy/)
|
93
93
|
end
|
94
94
|
|
95
|
-
it
|
95
|
+
it 'properly closes the comment' do
|
96
96
|
expect(@out.string).to match(%r{<pre class="comment"># Healthy<br/></pre>})
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
100
|
-
describe
|
100
|
+
describe 'with a comment at scenario level' do
|
101
101
|
define_feature <<-FEATURE
|
102
102
|
Feature: Foo
|
103
103
|
# Healthy Scenario
|
@@ -108,7 +108,7 @@ module Cucumber
|
|
108
108
|
it { expect(@doc).to have_css_node('.scenario .comment', /Healthy Scenario/) }
|
109
109
|
end
|
110
110
|
|
111
|
-
describe
|
111
|
+
describe 'with a tag' do
|
112
112
|
define_feature <<-FEATURE
|
113
113
|
@foo
|
114
114
|
Feature: can't have standalone tag :)
|
@@ -119,7 +119,7 @@ module Cucumber
|
|
119
119
|
it { expect(@doc).to have_css_node('.feature .tag', /foo/) }
|
120
120
|
end
|
121
121
|
|
122
|
-
describe
|
122
|
+
describe 'with a narrative' do
|
123
123
|
define_feature <<-FEATURE
|
124
124
|
Feature: Bananas
|
125
125
|
In order to find my inner monkey
|
@@ -134,7 +134,7 @@ module Cucumber
|
|
134
134
|
it { expect(@doc).to have_css_node('.feature .narrative', /must eat bananas/) }
|
135
135
|
end
|
136
136
|
|
137
|
-
describe
|
137
|
+
describe 'with a background' do
|
138
138
|
define_feature <<-FEATURE
|
139
139
|
Feature: Bananas
|
140
140
|
|
@@ -148,7 +148,7 @@ module Cucumber
|
|
148
148
|
it { expect(@doc).to have_css_node('.feature .background', /there are bananas/) }
|
149
149
|
end
|
150
150
|
|
151
|
-
describe
|
151
|
+
describe 'with a scenario' do
|
152
152
|
define_feature <<-FEATURE
|
153
153
|
Feature: Banana party
|
154
154
|
|
@@ -160,7 +160,7 @@ module Cucumber
|
|
160
160
|
it { expect(@doc).to have_css_node('.feature .scenario .step', /there are bananas/) }
|
161
161
|
end
|
162
162
|
|
163
|
-
describe
|
163
|
+
describe 'with a scenario outline' do
|
164
164
|
define_feature <<-FEATURE
|
165
165
|
Feature: Fud Pyramid
|
166
166
|
|
@@ -184,7 +184,7 @@ module Cucumber
|
|
184
184
|
it { expect(@doc).to have_css_node('.feature .scenario.outline table td', /carrots/) }
|
185
185
|
end
|
186
186
|
|
187
|
-
describe
|
187
|
+
describe 'with a step with a py string' do
|
188
188
|
define_feature <<-FEATURE
|
189
189
|
Feature: Traveling circus
|
190
190
|
|
@@ -198,7 +198,7 @@ module Cucumber
|
|
198
198
|
it { expect(@doc).to have_css_node('.feature .scenario .val', /foo/) }
|
199
199
|
end
|
200
200
|
|
201
|
-
describe
|
201
|
+
describe 'with a multiline step arg' do
|
202
202
|
define_steps do
|
203
203
|
Given(/there are monkeys:/) { |table| }
|
204
204
|
end
|
@@ -216,7 +216,7 @@ module Cucumber
|
|
216
216
|
it { expect(@out.string.include?('makeYellow(\'scenario_1\')')).to be false }
|
217
217
|
end
|
218
218
|
|
219
|
-
describe
|
219
|
+
describe 'with a table in the background and the scenario' do
|
220
220
|
define_feature <<-FEATURE
|
221
221
|
Feature: accountant monkey
|
222
222
|
|
@@ -233,7 +233,7 @@ module Cucumber
|
|
233
233
|
it { expect(@doc.css('td').length).to eq 8 }
|
234
234
|
end
|
235
235
|
|
236
|
-
describe
|
236
|
+
describe 'with a py string in the background and the scenario' do
|
237
237
|
define_feature <<-FEATURE
|
238
238
|
Feature: py strings
|
239
239
|
|
@@ -253,7 +253,7 @@ module Cucumber
|
|
253
253
|
it { expect(@doc.css('.feature .scenario pre.val').length).to eq 1 }
|
254
254
|
end
|
255
255
|
|
256
|
-
describe
|
256
|
+
describe 'with a step that fails in the scenario' do
|
257
257
|
define_steps do
|
258
258
|
Given(/boo/) { raise StandardError, 'eek'.freeze }
|
259
259
|
end
|
@@ -274,7 +274,7 @@ module Cucumber
|
|
274
274
|
end
|
275
275
|
end
|
276
276
|
|
277
|
-
describe
|
277
|
+
describe 'with a step that fails in the background' do
|
278
278
|
define_steps do
|
279
279
|
Given(/boo/) { raise 'eek' }
|
280
280
|
end
|
@@ -296,8 +296,8 @@ module Cucumber
|
|
296
296
|
it { expect(@doc).not_to have_css_node('.feature .scenario .backtrace', //) }
|
297
297
|
end
|
298
298
|
|
299
|
-
context
|
300
|
-
describe
|
299
|
+
context 'with a before hook that fails' do
|
300
|
+
describe 'in a scenario' do
|
301
301
|
define_steps do
|
302
302
|
Before { raise 'eek' }
|
303
303
|
Given(/yay/) {}
|
@@ -314,7 +314,7 @@ module Cucumber
|
|
314
314
|
it { expect(@doc).to have_css_node('.feature .scenario .step.skipped', /yay/) }
|
315
315
|
end
|
316
316
|
|
317
|
-
describe
|
317
|
+
describe 'in a scenario outline' do
|
318
318
|
define_steps do
|
319
319
|
Before { raise 'eek' }
|
320
320
|
Given(/yay/) {}
|
@@ -336,7 +336,7 @@ module Cucumber
|
|
336
336
|
|
337
337
|
end
|
338
338
|
|
339
|
-
describe
|
339
|
+
describe 'with a step that embeds a snapshot' do
|
340
340
|
define_steps do
|
341
341
|
Given(/snap/) {
|
342
342
|
RSpec::Mocks.allow_message(File, :file?) { true }
|
@@ -350,10 +350,10 @@ module Cucumber
|
|
350
350
|
Given snap
|
351
351
|
FEATURE
|
352
352
|
|
353
|
-
it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq
|
353
|
+
it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'snapshot.jpeg' }
|
354
354
|
end
|
355
355
|
|
356
|
-
describe
|
356
|
+
describe 'with a step that embeds a text' do
|
357
357
|
define_steps do
|
358
358
|
Given(/log/) { embed('log.txt', 'text/plain') }
|
359
359
|
end
|
@@ -364,10 +364,10 @@ module Cucumber
|
|
364
364
|
Given log
|
365
365
|
FEATURE
|
366
366
|
|
367
|
-
it { expect(@doc.at('a#text_0')['href'].to_s).to eq
|
367
|
+
it { expect(@doc.at('a#text_0')['href'].to_s).to eq 'log.txt' }
|
368
368
|
end
|
369
369
|
|
370
|
-
describe
|
370
|
+
describe 'with a step that embeds a snapshot content manually' do
|
371
371
|
define_steps do
|
372
372
|
Given(/snap/) { embed('data:image/png;base64,YWJj', 'image/png') }
|
373
373
|
end
|
@@ -378,10 +378,10 @@ module Cucumber
|
|
378
378
|
Given snap
|
379
379
|
FEATURE
|
380
380
|
|
381
|
-
it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq
|
381
|
+
it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'data:image/png;base64,YWJj' }
|
382
382
|
end
|
383
383
|
|
384
|
-
describe
|
384
|
+
describe 'with a step that embeds a snapshot content' do
|
385
385
|
define_steps do
|
386
386
|
Given(/snap/) { embed('YWJj', 'image/png;base64') }
|
387
387
|
end
|
@@ -392,10 +392,10 @@ module Cucumber
|
|
392
392
|
Given snap
|
393
393
|
FEATURE
|
394
394
|
|
395
|
-
it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq
|
395
|
+
it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'data:image/png;base64,YWJj' }
|
396
396
|
end
|
397
397
|
|
398
|
-
describe
|
398
|
+
describe 'with an undefined Given step then an undefined And step' do
|
399
399
|
define_feature(<<-FEATURE)
|
400
400
|
Feature:
|
401
401
|
Scenario:
|
@@ -403,10 +403,10 @@ module Cucumber
|
|
403
403
|
And another undefined step
|
404
404
|
FEATURE
|
405
405
|
|
406
|
-
it { expect(@doc.css('pre').map { |pre| /^(Given|And)/.match(pre.text)[1] }).to eq
|
406
|
+
it { expect(@doc.css('pre').map { |pre| /^(Given|And)/.match(pre.text)[1] }).to eq %w(Given Given) }
|
407
407
|
end
|
408
408
|
|
409
|
-
describe
|
409
|
+
describe 'with an undefined When step then an undefined And step' do
|
410
410
|
define_feature(<<-FEATURE)
|
411
411
|
Feature:
|
412
412
|
Scenario:
|
@@ -415,10 +415,10 @@ module Cucumber
|
|
415
415
|
And another undefined step
|
416
416
|
FEATURE
|
417
417
|
|
418
|
-
it { expect(@doc.css('pre').map { |pre| /^(Given|When|And)/.match(pre.text)[1] }).to eq
|
418
|
+
it { expect(@doc.css('pre').map { |pre| /^(Given|When|And)/.match(pre.text)[1] }).to eq %w(Given When When) }
|
419
419
|
end
|
420
420
|
|
421
|
-
describe
|
421
|
+
describe 'with an passing Then step and an undefined And step' do
|
422
422
|
define_feature <<-FEATURE
|
423
423
|
Feature:
|
424
424
|
Scenario:
|
@@ -431,11 +431,11 @@ module Cucumber
|
|
431
431
|
Given(/^this step passes$/) {}
|
432
432
|
end
|
433
433
|
|
434
|
-
it { expect(@doc.css('pre').map { |pre| /^(Given|Then)/.match(pre.text)[1] }).to eq [
|
434
|
+
it { expect(@doc.css('pre').map { |pre| /^(Given|Then)/.match(pre.text)[1] }).to eq ['Then'] }
|
435
435
|
end
|
436
436
|
|
437
|
-
describe
|
438
|
-
describe
|
437
|
+
describe 'with a output from hooks' do
|
438
|
+
describe 'in a scenario' do
|
439
439
|
define_feature <<-FEATURE
|
440
440
|
Feature:
|
441
441
|
Scenario:
|
@@ -444,26 +444,26 @@ module Cucumber
|
|
444
444
|
|
445
445
|
define_steps do
|
446
446
|
Before do
|
447
|
-
puts
|
447
|
+
puts 'Before hook'
|
448
448
|
end
|
449
449
|
AfterStep do
|
450
|
-
puts
|
450
|
+
puts 'AfterStep hook'
|
451
451
|
end
|
452
452
|
After do
|
453
|
-
puts
|
453
|
+
puts 'After hook'
|
454
454
|
end
|
455
455
|
Given(/^this step passes$/) {}
|
456
456
|
end
|
457
457
|
|
458
458
|
it 'should have ccs nodes ".step.message" for all the hooks' do
|
459
459
|
expect(@doc.css('.step.message').length).to eq 3
|
460
|
-
expect(@doc.css('.step.message')[0].text).to eq
|
461
|
-
expect(@doc.css('.step.message')[1].text).to eq
|
462
|
-
expect(@doc.css('.step.message')[2].text).to eq
|
460
|
+
expect(@doc.css('.step.message')[0].text).to eq 'Before hook'
|
461
|
+
expect(@doc.css('.step.message')[1].text).to eq 'AfterStep hook'
|
462
|
+
expect(@doc.css('.step.message')[2].text).to eq 'After hook'
|
463
463
|
end
|
464
464
|
end
|
465
465
|
|
466
|
-
describe
|
466
|
+
describe 'in a scenario outline' do
|
467
467
|
define_feature <<-FEATURE
|
468
468
|
Feature:
|
469
469
|
Scenario Outline:
|
@@ -475,13 +475,13 @@ module Cucumber
|
|
475
475
|
|
476
476
|
define_steps do
|
477
477
|
Before do
|
478
|
-
puts
|
478
|
+
puts 'Before hook'
|
479
479
|
end
|
480
480
|
AfterStep do
|
481
|
-
puts
|
481
|
+
puts 'AfterStep hook'
|
482
482
|
end
|
483
483
|
After do
|
484
|
-
puts
|
484
|
+
puts 'After hook'
|
485
485
|
end
|
486
486
|
Given(/^this step passes$/) {}
|
487
487
|
end
|
@@ -490,7 +490,7 @@ module Cucumber
|
|
490
490
|
end
|
491
491
|
end
|
492
492
|
end
|
493
|
-
context
|
493
|
+
context 'in --expand mode' do
|
494
494
|
let(:options) { { expand: true } }
|
495
495
|
before(:each) do
|
496
496
|
@out = StringIO.new
|
@@ -498,7 +498,7 @@ module Cucumber
|
|
498
498
|
run_defined_feature
|
499
499
|
@doc = Nokogiri.HTML(@out.string)
|
500
500
|
end
|
501
|
-
describe
|
501
|
+
describe 'with undefined * steps in a Scenario Outline' do
|
502
502
|
define_feature <<-FEATURE
|
503
503
|
Feature:
|
504
504
|
Scenario Outline:
|
@@ -514,10 +514,10 @@ module Cucumber
|
|
514
514
|
Given(/^this step passes$/) {}
|
515
515
|
end
|
516
516
|
|
517
|
-
it { expect(@doc.css('pre').map { |pre| /^(Given|Then|When)/.match(pre.text)[1] }).to eq
|
517
|
+
it { expect(@doc.css('pre').map { |pre| /^(Given|Then|When)/.match(pre.text)[1] }).to eq %w(Given Given) }
|
518
518
|
end
|
519
519
|
|
520
|
-
describe
|
520
|
+
describe 'with a scenario outline and a before hook that fails' do
|
521
521
|
define_steps do
|
522
522
|
Before { raise 'eek' }
|
523
523
|
Given(/yay/) {}
|
@@ -11,21 +11,21 @@ module Cucumber
|
|
11
11
|
extend SpecHelperDsl
|
12
12
|
include SpecHelper
|
13
13
|
|
14
|
-
context
|
14
|
+
context 'Given a single feature' do
|
15
15
|
before(:each) do
|
16
16
|
@out = StringIO.new
|
17
17
|
@formatter = Json.new(actual_runtime.configuration.with_options(out_stream: @out))
|
18
18
|
run_defined_feature
|
19
19
|
end
|
20
20
|
|
21
|
-
describe
|
21
|
+
describe 'with a scenario with no steps' do
|
22
22
|
define_feature <<-FEATURE
|
23
23
|
Feature: Banana party
|
24
24
|
|
25
25
|
Scenario: Monkey eats bananas
|
26
26
|
FEATURE
|
27
27
|
|
28
|
-
it
|
28
|
+
it 'outputs the json data' do
|
29
29
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
30
30
|
[{"id": "banana-party",
|
31
31
|
"uri": "spec.feature",
|
@@ -43,7 +43,7 @@ module Cucumber
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
describe
|
46
|
+
describe 'with a scenario with an undefined step' do
|
47
47
|
define_feature <<-FEATURE
|
48
48
|
Feature: Banana party
|
49
49
|
|
@@ -51,7 +51,7 @@ module Cucumber
|
|
51
51
|
Given there are bananas
|
52
52
|
FEATURE
|
53
53
|
|
54
|
-
it
|
54
|
+
it 'outputs the json data' do
|
55
55
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
56
56
|
[{"id": "banana-party",
|
57
57
|
"uri": "spec.feature",
|
@@ -75,7 +75,7 @@ module Cucumber
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
describe
|
78
|
+
describe 'with a scenario with a passed step' do
|
79
79
|
define_feature <<-FEATURE
|
80
80
|
Feature: Banana party
|
81
81
|
|
@@ -87,7 +87,7 @@ module Cucumber
|
|
87
87
|
Given(/^there are bananas$/) {}
|
88
88
|
end
|
89
89
|
|
90
|
-
it
|
90
|
+
it 'outputs the json data' do
|
91
91
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
92
92
|
[{"id": "banana-party",
|
93
93
|
"uri": "spec.feature",
|
@@ -112,7 +112,7 @@ module Cucumber
|
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
-
describe
|
115
|
+
describe 'with a scenario with a failed step' do
|
116
116
|
define_feature <<-FEATURE
|
117
117
|
Feature: Banana party
|
118
118
|
|
@@ -121,10 +121,10 @@ module Cucumber
|
|
121
121
|
FEATURE
|
122
122
|
|
123
123
|
define_steps do
|
124
|
-
Given(/^there are bananas$/) { raise
|
124
|
+
Given(/^there are bananas$/) { raise 'no bananas' }
|
125
125
|
end
|
126
126
|
|
127
|
-
it
|
127
|
+
it 'outputs the json data' do
|
128
128
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
129
129
|
[{"id": "banana-party",
|
130
130
|
"uri": "spec.feature",
|
@@ -150,7 +150,7 @@ module Cucumber
|
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
|
-
describe
|
153
|
+
describe 'with a scenario with a pending step' do
|
154
154
|
define_feature <<-FEATURE
|
155
155
|
Feature: Banana party
|
156
156
|
|
@@ -162,7 +162,7 @@ module Cucumber
|
|
162
162
|
Given(/^there are bananas$/) { pending }
|
163
163
|
end
|
164
164
|
|
165
|
-
it
|
165
|
+
it 'outputs the json data' do
|
166
166
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
167
167
|
[{"id": "banana-party",
|
168
168
|
"uri": "spec.feature",
|
@@ -188,7 +188,7 @@ module Cucumber
|
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
191
|
-
describe
|
191
|
+
describe 'with a scenario outline with one example' do
|
192
192
|
define_feature <<-FEATURE
|
193
193
|
Feature: Banana party
|
194
194
|
|
@@ -204,7 +204,7 @@ module Cucumber
|
|
204
204
|
Given(/^there are bananas$/) {}
|
205
205
|
end
|
206
206
|
|
207
|
-
it
|
207
|
+
it 'outputs the json data' do
|
208
208
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
209
209
|
[{"id": "banana-party",
|
210
210
|
"uri": "spec.feature",
|
@@ -229,7 +229,7 @@ module Cucumber
|
|
229
229
|
end
|
230
230
|
end
|
231
231
|
|
232
|
-
describe
|
232
|
+
describe 'with tags in the feature file' do
|
233
233
|
define_feature <<-FEATURE
|
234
234
|
@f
|
235
235
|
Feature: Banana party
|
@@ -252,7 +252,7 @@ module Cucumber
|
|
252
252
|
Given(/^there are bananas$/) {}
|
253
253
|
end
|
254
254
|
|
255
|
-
it
|
255
|
+
it 'the tags are included in the json data' do
|
256
256
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
257
257
|
[{"id": "banana-party",
|
258
258
|
"uri": "spec.feature",
|
@@ -302,7 +302,7 @@ module Cucumber
|
|
302
302
|
end
|
303
303
|
end
|
304
304
|
|
305
|
-
describe
|
305
|
+
describe 'with comments in the feature file' do
|
306
306
|
define_feature <<-FEATURE
|
307
307
|
#feature comment
|
308
308
|
Feature: Banana party
|
@@ -333,7 +333,7 @@ module Cucumber
|
|
333
333
|
Then(/^the monkey eats bananas$/) {}
|
334
334
|
end
|
335
335
|
|
336
|
-
it
|
336
|
+
it 'the comments are included in the json data' do
|
337
337
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
338
338
|
[{"id": "banana-party",
|
339
339
|
"uri": "spec.feature",
|
@@ -413,7 +413,7 @@ module Cucumber
|
|
413
413
|
end
|
414
414
|
end
|
415
415
|
|
416
|
-
describe
|
416
|
+
describe 'with a scenario with a step with a doc string' do
|
417
417
|
define_feature <<-FEATURE
|
418
418
|
Feature: Banana party
|
419
419
|
|
@@ -428,7 +428,7 @@ module Cucumber
|
|
428
428
|
Given(/^there are bananas$/) { |s| s }
|
429
429
|
end
|
430
430
|
|
431
|
-
it
|
431
|
+
it 'includes the doc string in the json data' do
|
432
432
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
433
433
|
[{"id": "banana-party",
|
434
434
|
"uri": "spec.feature",
|
@@ -456,7 +456,7 @@ module Cucumber
|
|
456
456
|
end
|
457
457
|
end
|
458
458
|
|
459
|
-
describe
|
459
|
+
describe 'with a scenario with a step that use puts' do
|
460
460
|
define_feature <<-FEATURE
|
461
461
|
Feature: Banana party
|
462
462
|
|
@@ -465,10 +465,10 @@ module Cucumber
|
|
465
465
|
FEATURE
|
466
466
|
|
467
467
|
define_steps do
|
468
|
-
Given(/^there are bananas$/) { puts
|
468
|
+
Given(/^there are bananas$/) { puts 'from step' }
|
469
469
|
end
|
470
470
|
|
471
|
-
it
|
471
|
+
it 'includes the output from the step in the json data' do
|
472
472
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
473
473
|
[{"id": "banana-party",
|
474
474
|
"uri": "spec.feature",
|
@@ -494,7 +494,7 @@ module Cucumber
|
|
494
494
|
end
|
495
495
|
end
|
496
496
|
|
497
|
-
describe
|
497
|
+
describe 'with a background' do
|
498
498
|
define_feature <<-FEATURE
|
499
499
|
Feature: Banana party
|
500
500
|
|
@@ -508,7 +508,7 @@ module Cucumber
|
|
508
508
|
Then the monkey eats more bananas
|
509
509
|
FEATURE
|
510
510
|
|
511
|
-
it
|
511
|
+
it 'includes the background in the json data each time it is executed' do
|
512
512
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
513
513
|
[{"id": "banana-party",
|
514
514
|
"uri": "spec.feature",
|
@@ -566,7 +566,7 @@ module Cucumber
|
|
566
566
|
end
|
567
567
|
end
|
568
568
|
|
569
|
-
describe
|
569
|
+
describe 'with a scenario with a step that embeds data directly' do
|
570
570
|
define_feature <<-FEATURE
|
571
571
|
Feature: Banana party
|
572
572
|
|
@@ -575,11 +575,11 @@ module Cucumber
|
|
575
575
|
FEATURE
|
576
576
|
|
577
577
|
define_steps do
|
578
|
-
Given(/^there are bananas$/) { data =
|
579
|
-
embed data,
|
578
|
+
Given(/^there are bananas$/) { data = 'YWJj'
|
579
|
+
embed data, 'mime-type;base64' }
|
580
580
|
end
|
581
581
|
|
582
|
-
it
|
582
|
+
it 'includes the data from the step in the json data' do
|
583
583
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
584
584
|
[{"id": "banana-party",
|
585
585
|
"uri": "spec.feature",
|
@@ -606,7 +606,7 @@ module Cucumber
|
|
606
606
|
end
|
607
607
|
end
|
608
608
|
|
609
|
-
describe
|
609
|
+
describe 'with a scenario with a step that embeds a file' do
|
610
610
|
define_feature <<-FEATURE
|
611
611
|
Feature: Banana party
|
612
612
|
|
@@ -619,12 +619,12 @@ module Cucumber
|
|
619
619
|
RSpec::Mocks.allow_message(File, :file?) { true }
|
620
620
|
f1 = RSpec::Mocks::Double.new
|
621
621
|
RSpec::Mocks.allow_message(File, :open) { |&block| block.call(f1) }
|
622
|
-
RSpec::Mocks.allow_message(f1, :read) {
|
622
|
+
RSpec::Mocks.allow_message(f1, :read) { 'foo' }
|
623
623
|
embed('out/snapshot.jpeg', 'image/png')
|
624
624
|
}
|
625
625
|
end
|
626
626
|
|
627
|
-
it
|
627
|
+
it 'includes the file content in the json data' do
|
628
628
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
629
629
|
[{"id": "banana-party",
|
630
630
|
"uri": "spec.feature",
|
@@ -651,7 +651,7 @@ module Cucumber
|
|
651
651
|
end
|
652
652
|
end
|
653
653
|
|
654
|
-
describe
|
654
|
+
describe 'with a scenario with hooks' do
|
655
655
|
define_feature <<-FEATURE
|
656
656
|
Feature: Banana party
|
657
657
|
|
@@ -670,7 +670,7 @@ module Cucumber
|
|
670
670
|
Given(/^there are bananas$/) {}
|
671
671
|
end
|
672
672
|
|
673
|
-
it
|
673
|
+
it 'includes all hooks except the around hook in the json data' do
|
674
674
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
675
675
|
[{"id": "banana-party",
|
676
676
|
"uri": "spec.feature",
|
@@ -716,7 +716,7 @@ module Cucumber
|
|
716
716
|
end
|
717
717
|
end
|
718
718
|
|
719
|
-
describe
|
719
|
+
describe 'with a scenario when only an around hook is failing' do
|
720
720
|
define_feature <<-FEATURE
|
721
721
|
Feature: Banana party
|
722
722
|
|
@@ -725,11 +725,11 @@ module Cucumber
|
|
725
725
|
FEATURE
|
726
726
|
|
727
727
|
define_steps do
|
728
|
-
Around() { |scenario, block| block.call; raise RuntimeError,
|
728
|
+
Around() { |scenario, block| block.call; raise RuntimeError, 'error' }
|
729
729
|
Given(/^there are bananas$/) {}
|
730
730
|
end
|
731
731
|
|
732
|
-
it
|
732
|
+
it 'includes the around hook result in the json data' do
|
733
733
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
734
734
|
[{"id": "banana-party",
|
735
735
|
"uri": "spec.feature",
|
@@ -759,7 +759,7 @@ module Cucumber
|
|
759
759
|
end
|
760
760
|
end
|
761
761
|
|
762
|
-
describe
|
762
|
+
describe 'with a scenario with a step with a data table' do
|
763
763
|
define_feature <<-FEATURE
|
764
764
|
Feature: Banana party
|
765
765
|
|
@@ -773,7 +773,7 @@ module Cucumber
|
|
773
773
|
Given(/^there are bananas$/) { |s| s }
|
774
774
|
end
|
775
775
|
|
776
|
-
it
|
776
|
+
it 'includes the doc string in the json data' do
|
777
777
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
778
778
|
[{"id": "banana-party",
|
779
779
|
"uri": "spec.feature",
|
@@ -812,7 +812,7 @@ module Cucumber
|
|
812
812
|
json.each do |feature|
|
813
813
|
elements = feature.fetch('elements') { [] }
|
814
814
|
elements.each do |scenario|
|
815
|
-
|
815
|
+
%w(steps before after around).each do |type|
|
816
816
|
if scenario[type]
|
817
817
|
scenario[type].each do |step_or_hook|
|
818
818
|
normalise_json_step_or_hook(step_or_hook)
|
@@ -829,12 +829,10 @@ module Cucumber
|
|
829
829
|
end
|
830
830
|
|
831
831
|
def normalise_json_step_or_hook(step_or_hook)
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
end
|
837
|
-
end
|
832
|
+
return unless step_or_hook['result'] && step_or_hook['result']['duration']
|
833
|
+
|
834
|
+
expect(step_or_hook['result']['duration']).to be >= 0
|
835
|
+
step_or_hook['result']['duration'] = 1
|
838
836
|
end
|
839
837
|
|
840
838
|
end
|