cucumber 2.99.0 → 3.0.0
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.
- checksums.yaml +4 -4
- data/.cucumberproignore +6 -0
- data/.gitattributes +32 -0
- data/.github/ISSUE_TEMPLATE.md +1 -1
- data/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- data/.rubocop.yml +13 -0
- data/.rubocop_todo.yml +991 -0
- data/.travis.yml +56 -10
- data/{History.md → CHANGELOG.md} +166 -32
- data/CONTRIBUTING.md +21 -1
- data/Gemfile +18 -5
- data/README.md +13 -4
- data/Rakefile +12 -2
- data/appveyor.yml +27 -0
- data/bin/cucumber +2 -1
- data/cucumber.gemspec +15 -10
- data/cucumber.yml +10 -11
- data/examples/i18n/Rakefile +1 -1
- data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +8 -3
- data/examples/i18n/ar/lib/calculator.rb +2 -2
- data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +6 -6
- data/examples/i18n/bg/features/support/env.rb +6 -1
- data/examples/i18n/bg/lib/calculator.rb +2 -1
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/ca/lib/calculadora.rb +2 -2
- data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/cs/lib/calculator.rb +3 -3
- data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +10 -5
- data/examples/i18n/da/lib/lommeregner.rb +2 -2
- data/examples/i18n/de/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/de/lib/calculator.rb +2 -2
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/el/lib/calculator.rb +2 -2
- data/examples/i18n/en/features/step_definitions/calculator_steps.rb +9 -4
- data/examples/i18n/en/lib/calculator.rb +2 -2
- data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +4 -4
- data/examples/i18n/en-lol/features/support/env.rb +6 -2
- data/examples/i18n/en-lol/lib/basket.rb +2 -2
- data/examples/i18n/en-lol/lib/belly.rb +2 -2
- data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +9 -4
- data/examples/i18n/eo/lib/calculator.rb +2 -2
- data/examples/i18n/es/features/step_definitions/calculador_steps.rb +10 -5
- data/examples/i18n/es/lib/calculador.rb +2 -2
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +10 -5
- data/examples/i18n/et/lib/kalkulaator.rb +3 -3
- data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +9 -4
- 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 +7 -2
- data/examples/i18n/fr/lib/calculatrice.rb +2 -2
- data/examples/i18n/he/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/he/lib/calculator.rb +1 -1
- data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +9 -4
- data/examples/i18n/hi/lib/calculator.rb +1 -1
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +9 -5
- data/examples/i18n/ht/lib/kalkilatris.rb +2 -2
- data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/hu/lib/calculator.rb +1 -1
- data/examples/i18n/id/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/id/lib/calculator.rb +2 -2
- data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +10 -5
- 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 +7 -2
- data/examples/i18n/ja/lib/calculator.rb +2 -2
- data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/ko/lib/calculator.rb +2 -2
- data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/lt/lib/calculator.rb +2 -2
- data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +10 -5
- 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 +7 -2
- data/examples/i18n/no/lib/kalkulator.rb +2 -2
- data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/pl/features/support/env.rb +6 -1
- 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 +7 -2
- data/examples/i18n/pt/lib/calculadora.rb +1 -1
- data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +11 -6
- data/examples/i18n/ro/lib/calculator.rb +1 -1
- data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/ru/features/support/env.rb +6 -1
- data/examples/i18n/ru/lib/calculator.rb +2 -1
- data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +10 -5
- 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 +7 -2
- data/examples/i18n/sr-Cyrl/lib/calculator.rb +2 -2
- data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/sr-Latn/lib/calculator.rb +2 -2
- data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +9 -4
- data/examples/i18n/sv/lib/kalkulator.rb +2 -2
- data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +10 -5
- 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/uk/features/support/env.rb +6 -1
- data/examples/i18n/uk/lib/calculator.rb +2 -1
- data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/uz/features/support/env.rb +6 -1
- data/examples/i18n/uz/lib/calculator.rb +2 -1
- data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +11 -6
- data/examples/i18n/zh-CN/lib/calculator.rb +2 -2
- data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +10 -5
- 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/sinatra/features/support/env.rb +6 -1
- data/examples/tcl/features/step_definitions/fib_steps.rb +2 -2
- data/examples/tcl/features/support/env.rb +2 -1
- data/examples/test_unit/features/step_definitions/test_unit_steps.rb +4 -4
- data/examples/watir/features/step_definitions/search_steps.rb +6 -5
- data/examples/watir/features/support/env.rb +5 -1
- 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 +9 -8
- 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 +8 -6
- data/features/docs/cli/fail_fast.feature +2 -0
- data/features/docs/cli/help.feature +8 -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 +75 -15
- 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/ambiguous_steps.feature +89 -0
- data/features/docs/defining_steps/nested_steps.feature +5 -1
- data/features/docs/defining_steps/nested_steps_i18n.feature +3 -0
- data/features/docs/defining_steps/nested_steps_with_second_arg.feature +2 -0
- data/features/docs/defining_steps/printing_messages.feature +1 -2
- data/features/docs/defining_steps/skip_scenario.feature +1 -34
- 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_started_event.feature +54 -0
- data/features/docs/events/test_run_finished_event.feature +40 -0
- data/features/docs/events/test_run_started_event.feature +41 -0
- data/features/docs/events/test_step_finished_event.feature +47 -0
- data/features/docs/events/test_step_started_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 +12 -48
- 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 +35 -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 +6 -4
- data/features/docs/gherkin/unicode_table.feature +2 -1
- 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 -17
- 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 +53 -0
- data/features/docs/writing_support_code/tagged_hooks.feature +1 -1
- data/features/docs/writing_support_code/world.feature +129 -0
- data/features/lib/step_definitions/aruba_steps.rb +5 -10
- data/features/lib/step_definitions/cli_steps.rb +4 -0
- data/features/lib/step_definitions/cucumber_steps.rb +9 -12
- data/features/lib/step_definitions/iso-8859-1_steps.rb +9 -5
- data/features/lib/step_definitions/json_steps.rb +2 -1
- data/features/lib/step_definitions/junit_steps.rb +2 -1
- data/features/lib/step_definitions/language_steps.rb +3 -2
- data/features/lib/step_definitions/profile_steps.rb +7 -6
- data/features/lib/step_definitions/retry_steps.rb +33 -13
- data/features/lib/step_definitions/ruby_steps.rb +2 -1
- data/features/lib/support/env.rb +3 -2
- data/features/lib/support/fake_wire_server.rb +17 -3
- data/features/lib/support/feature_factory.rb +2 -1
- data/features/lib/support/normalise_output.rb +14 -12
- data/features/lib/support/parameter_types.rb +5 -0
- data/gem_tasks/contributors.rake +10 -6
- data/gem_tasks/cov.rake +1 -0
- data/gem_tasks/downloads.rb +1 -0
- data/gem_tasks/environment.rake +2 -5
- data/gem_tasks/examples.rake +3 -2
- data/gem_tasks/fix_cr_lf.rake +19 -7
- data/gem_tasks/flog.rake +4 -3
- data/gem_tasks/rspec.rake +2 -1
- data/gem_tasks/sass.rake +2 -1
- data/lib/autotest/cucumber.rb +1 -0
- data/lib/autotest/cucumber_mixin.rb +17 -16
- data/lib/autotest/cucumber_rails.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
- data/lib/autotest/cucumber_rspec.rb +1 -0
- data/lib/autotest/cucumber_rspec2.rb +1 -0
- data/lib/autotest/discover.rb +3 -2
- data/lib/cucumber/cli/configuration.rb +12 -21
- data/lib/cucumber/cli/main.rb +8 -7
- data/lib/cucumber/cli/options.rb +341 -217
- data/lib/cucumber/cli/profile_loader.rb +26 -21
- data/lib/cucumber/cli/rerun_file.rb +1 -0
- data/lib/cucumber/configuration.rb +54 -37
- data/lib/cucumber/constantize.rb +2 -1
- data/lib/cucumber/core_ext/string.rb +2 -1
- data/lib/cucumber/deprecate.rb +4 -3
- data/lib/cucumber/encoding.rb +1 -0
- data/lib/cucumber/errors.rb +3 -1
- data/lib/cucumber/events/gherkin_source_read.rb +17 -0
- data/lib/cucumber/events/{step_match.rb → step_activated.rb} +5 -2
- data/lib/cucumber/events/step_definition_registered.rb +24 -0
- data/lib/cucumber/events/test_case_finished.rb +18 -0
- data/lib/cucumber/events/test_case_started.rb +15 -0
- data/lib/cucumber/events/test_run_finished.rb +12 -0
- data/lib/cucumber/events/test_run_started.rb +16 -0
- data/lib/cucumber/events/test_step_finished.rb +20 -0
- data/lib/cucumber/events/test_step_started.rb +17 -0
- data/lib/cucumber/events.rb +23 -3
- data/lib/cucumber/file_specs.rb +1 -0
- data/lib/cucumber/filters/activate_steps.rb +8 -3
- data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
- data/lib/cucumber/filters/broadcast_test_run_started_event.rb +27 -0
- data/lib/cucumber/filters/gated_receiver.rb +1 -0
- data/lib/cucumber/filters/prepare_world.rb +1 -0
- data/lib/cucumber/filters/quit.rb +1 -0
- data/lib/cucumber/filters/randomizer.rb +1 -0
- data/lib/cucumber/filters/retry.rb +4 -4
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -0
- data/lib/cucumber/filters/tag_limits/verifier.rb +2 -1
- data/lib/cucumber/filters/tag_limits.rb +4 -3
- data/lib/cucumber/filters.rb +3 -0
- data/lib/cucumber/formatter/ansicolor.rb +9 -11
- data/lib/cucumber/formatter/backtrace_filter.rb +21 -8
- data/lib/cucumber/formatter/console.rb +72 -66
- data/lib/cucumber/formatter/console_counts.rb +44 -0
- data/lib/cucumber/formatter/console_issues.rb +58 -0
- data/lib/cucumber/formatter/duration.rb +2 -1
- data/lib/cucumber/formatter/duration_extractor.rb +1 -0
- data/lib/cucumber/formatter/fail_fast.rb +4 -2
- data/lib/cucumber/formatter/fanout.rb +1 -0
- data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
- data/lib/cucumber/formatter/html.rb +175 -249
- data/lib/cucumber/formatter/html_builder.rb +120 -0
- data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -0
- data/lib/cucumber/formatter/inline-js.js +30 -0
- data/lib/cucumber/formatter/interceptor.rb +3 -2
- data/lib/cucumber/formatter/io.rb +2 -1
- data/lib/cucumber/formatter/json.rb +33 -30
- data/lib/cucumber/formatter/json_pretty.rb +1 -0
- data/lib/cucumber/formatter/junit.rb +26 -24
- data/lib/cucumber/formatter/legacy_api/adapter.rb +81 -69
- data/lib/cucumber/formatter/legacy_api/ast.rb +27 -22
- data/lib/cucumber/formatter/legacy_api/results.rb +7 -8
- data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +1 -0
- data/lib/cucumber/formatter/pretty.rb +24 -18
- data/lib/cucumber/formatter/progress.rb +55 -13
- data/lib/cucumber/formatter/rerun.rb +15 -18
- data/lib/cucumber/formatter/stepdefs.rb +1 -0
- data/lib/cucumber/formatter/steps.rb +2 -1
- data/lib/cucumber/formatter/summary.rb +43 -20
- data/lib/cucumber/formatter/unicode.rb +2 -1
- data/lib/cucumber/formatter/usage.rb +33 -28
- data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +2 -1
- data/lib/cucumber/gherkin/formatter/escaping.rb +2 -1
- data/lib/cucumber/gherkin/i18n.rb +1 -0
- data/lib/cucumber/gherkin/steps_parser.rb +1 -0
- data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +41 -30
- 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 +220 -0
- data/lib/cucumber/{rb_support/rb_language.rb → glue/registry_and_more.rb} +60 -90
- data/lib/cucumber/{rb_support → glue}/snippet.rb +64 -26
- data/lib/cucumber/glue/step_definition.rb +143 -0
- data/lib/cucumber/glue/world_factory.rb +23 -0
- data/lib/cucumber/hooks.rb +9 -8
- data/lib/cucumber/load_path.rb +1 -0
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +158 -0
- data/lib/cucumber/multiline_argument/data_table.rb +47 -181
- data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
- data/lib/cucumber/multiline_argument.rb +6 -15
- data/lib/cucumber/platform.rb +4 -5
- data/lib/cucumber/project_initializer.rb +3 -2
- data/lib/cucumber/rake/task.rb +19 -14
- data/lib/cucumber/rspec/disable_option_parser.rb +2 -1
- data/lib/cucumber/rspec/doubles.rb +2 -1
- data/lib/cucumber/running_test_case.rb +3 -27
- data/lib/cucumber/runtime/after_hooks.rb +2 -1
- data/lib/cucumber/runtime/before_hooks.rb +1 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +2 -36
- data/lib/cucumber/runtime/step_hooks.rb +1 -0
- data/lib/cucumber/runtime/support_code.rb +21 -16
- data/lib/cucumber/runtime/user_interface.rb +10 -16
- data/lib/cucumber/runtime.rb +49 -32
- data/lib/cucumber/step_argument.rb +1 -2
- data/lib/cucumber/step_definition_light.rb +2 -0
- data/lib/cucumber/step_definitions.rb +1 -0
- data/lib/cucumber/step_match.rb +30 -15
- data/lib/cucumber/step_match_search.rb +3 -3
- data/lib/cucumber/term/ansicolor.rb +2 -1
- data/lib/cucumber/unit.rb +1 -0
- data/lib/cucumber/version +1 -1
- data/lib/cucumber.rb +1 -13
- data/lib/simplecov_setup.rb +2 -1
- data/scripts/invite-collaborator +40 -0
- data/scripts/update-changelog +86 -0
- data/spec/cucumber/cli/configuration_spec.rb +109 -98
- data/spec/cucumber/cli/main_spec.rb +8 -7
- data/spec/cucumber/cli/options_spec.rb +114 -79
- data/spec/cucumber/cli/profile_loader_spec.rb +25 -5
- data/spec/cucumber/cli/rerun_spec.rb +21 -20
- data/spec/cucumber/configuration_spec.rb +48 -47
- data/spec/cucumber/constantize_spec.rb +3 -2
- data/spec/cucumber/events_spec.rb +9 -0
- data/spec/cucumber/file_specs_spec.rb +26 -25
- data/spec/cucumber/filters/activate_steps_spec.rb +25 -22
- data/spec/cucumber/filters/gated_receiver_spec.rb +7 -6
- data/spec/cucumber/filters/retry_spec.rb +42 -23
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +12 -11
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +15 -14
- data/spec/cucumber/filters/tag_limits_spec.rb +9 -8
- data/spec/cucumber/formatter/ansicolor_spec.rb +10 -9
- data/spec/cucumber/formatter/backtrace_filter_spec.rb +32 -0
- data/spec/cucumber/formatter/console_counts_spec.rb +14 -0
- data/spec/cucumber/formatter/duration_spec.rb +4 -3
- data/spec/cucumber/formatter/fail_fast_spec.rb +27 -27
- data/spec/cucumber/formatter/html_spec.rb +65 -60
- data/spec/cucumber/formatter/interceptor_spec.rb +1 -0
- data/spec/cucumber/formatter/json_spec.rb +71 -97
- data/spec/cucumber/formatter/junit_spec.rb +46 -47
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +134 -141
- data/spec/cucumber/formatter/pretty_spec.rb +105 -117
- data/spec/cucumber/formatter/progress_spec.rb +22 -21
- data/spec/cucumber/formatter/rerun_spec.rb +70 -64
- data/spec/cucumber/formatter/spec_helper.rb +14 -12
- data/spec/cucumber/{rb_support/rb_world_spec.rb → glue/proto_world_spec.rb} +22 -6
- data/spec/cucumber/glue/registry_and_more_spec.rb +213 -0
- data/spec/cucumber/{rb_support → glue}/snippet_spec.rb +62 -25
- data/spec/cucumber/glue/step_definition_spec.rb +207 -0
- data/spec/cucumber/hooks_spec.rb +5 -4
- data/spec/cucumber/multiline_argument/data_table_spec.rb +179 -129
- data/spec/cucumber/project_initializer_spec.rb +12 -11
- data/spec/cucumber/rake/forked_spec.rb +22 -17
- data/spec/cucumber/rake/task_spec.rb +21 -20
- data/spec/cucumber/running_test_case_spec.rb +36 -35
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +2 -30
- data/spec/cucumber/runtime/support_code_spec.rb +1 -0
- data/spec/cucumber/runtime_spec.rb +3 -2
- data/spec/cucumber/step_argument_spec.rb +6 -5
- data/spec/cucumber/step_match_search_spec.rb +32 -41
- data/spec/cucumber/step_match_spec.rb +34 -33
- data/spec/cucumber/world/pending_spec.rb +12 -11
- data/spec/spec_helper.rb +1 -0
- data/spec/support/standard_step_actions.rb +2 -1
- metadata +132 -61
- data/features/docs/formatters/debug_formatter.feature +0 -47
- data/features/docs/formatters/formatter_step_file_colon_line.feature +0 -44
- data/features/docs/writing_support_code/transforms.feature +0 -98
- data/features/lib/step_definitions/wire_steps.rb +0 -58
- data/gem_tasks/cucumber.rake +0 -25
- data/lib/cucumber/ast.rb +0 -13
- data/lib/cucumber/core_ext/instance_exec.rb +0 -70
- data/lib/cucumber/events/after_test_case.rb +0 -25
- data/lib/cucumber/events/after_test_step.rb +0 -30
- data/lib/cucumber/events/before_test_case.rb +0 -18
- data/lib/cucumber/events/before_test_step.rb +0 -23
- data/lib/cucumber/events/bus.rb +0 -86
- data/lib/cucumber/events/finished_testing.rb +0 -9
- data/lib/cucumber/formatter/debug.rb +0 -35
- data/lib/cucumber/formatter/event_bus_report.rb +0 -38
- data/lib/cucumber/rb_support/rb_hook.rb +0 -19
- data/lib/cucumber/rb_support/rb_step_definition.rb +0 -131
- data/lib/cucumber/rb_support/rb_transform.rb +0 -59
- data/lib/cucumber/rb_support/rb_world.rb +0 -149
- data/spec/cucumber/core_ext/instance_exec_spec.rb +0 -4
- data/spec/cucumber/events/bus_spec.rb +0 -94
- data/spec/cucumber/formatter/debug_spec.rb +0 -64
- data/spec/cucumber/formatter/event_bus_report_spec.rb +0 -88
- data/spec/cucumber/rb_support/rb_language_spec.rb +0 -243
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -199
- data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -46
- data/spec/cucumber_spec.rb +0 -39
|
@@ -6,6 +6,7 @@ Feature: Nested Steps with either table or doc string
|
|
|
6
6
|
Given two turtles
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
+
@todo-windows
|
|
9
10
|
Scenario: Use #step with table
|
|
10
11
|
Given a step definition that looks like this:
|
|
11
12
|
"""ruby
|
|
@@ -34,6 +35,7 @@ Feature: Nested Steps with either table or doc string
|
|
|
34
35
|
|
|
35
36
|
"""
|
|
36
37
|
|
|
38
|
+
@todo-windows
|
|
37
39
|
Scenario: Use #step with Doc String
|
|
38
40
|
Given a step definition that looks like this:
|
|
39
41
|
"""ruby
|
|
@@ -76,7 +76,7 @@ Feature: Pretty formatter - Printing messages
|
|
|
76
76
|
"""
|
|
77
77
|
|
|
78
78
|
# Don't know why, but we need to spawn this for JRuby otherwise it gives wierd errors
|
|
79
|
-
@spawn
|
|
79
|
+
@spawn @todo-windows
|
|
80
80
|
Scenario: Delayed messages feature
|
|
81
81
|
When I run `cucumber --quiet --format pretty features/f.feature`
|
|
82
82
|
Then the stderr should not contain anything
|
|
@@ -135,7 +135,6 @@ Feature: Pretty formatter - Printing messages
|
|
|
135
135
|
Multiple
|
|
136
136
|
|
|
137
137
|
Announce
|
|
138
|
-
|
|
139
138
|
Me
|
|
140
139
|
..UUU
|
|
141
140
|
Announce with fail
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
Feature: Skip Scenario
|
|
2
2
|
|
|
3
|
+
@todo-windows
|
|
3
4
|
Scenario: With a passing step
|
|
4
5
|
Given a file named "features/test.feature" with:
|
|
5
6
|
"""
|
|
@@ -28,37 +29,3 @@ Feature: Skip Scenario
|
|
|
28
29
|
2 steps (2 skipped)
|
|
29
30
|
|
|
30
31
|
"""
|
|
31
|
-
|
|
32
|
-
@spawn
|
|
33
|
-
Scenario: Use (deprecated) legacy API
|
|
34
|
-
Given a file named "features/test.feature" with:
|
|
35
|
-
"""
|
|
36
|
-
Feature: test
|
|
37
|
-
Scenario: test
|
|
38
|
-
Given this step passes
|
|
39
|
-
And this step passes
|
|
40
|
-
"""
|
|
41
|
-
And the standard step definitions
|
|
42
|
-
And a file named "features/support/hook.rb" with:
|
|
43
|
-
"""
|
|
44
|
-
Before do |scenario|
|
|
45
|
-
scenario.skip_invoke!
|
|
46
|
-
end
|
|
47
|
-
"""
|
|
48
|
-
When I run `cucumber -q`
|
|
49
|
-
Then it should pass with:
|
|
50
|
-
"""
|
|
51
|
-
Feature: test
|
|
52
|
-
|
|
53
|
-
Scenario: test
|
|
54
|
-
Given this step passes
|
|
55
|
-
And this step passes
|
|
56
|
-
|
|
57
|
-
1 scenario (1 skipped)
|
|
58
|
-
2 steps (2 skipped)
|
|
59
|
-
|
|
60
|
-
"""
|
|
61
|
-
And the stderr should contain:
|
|
62
|
-
"""
|
|
63
|
-
deprecated
|
|
64
|
-
"""
|
|
@@ -4,35 +4,35 @@ Feature: Snippets
|
|
|
4
4
|
snippet suggestion, which you can then paste into a step definitions
|
|
5
5
|
file of your choosing.
|
|
6
6
|
|
|
7
|
-
Scenario: Snippet for undefined step with a
|
|
7
|
+
Scenario: Snippet for undefined step with a Doc String
|
|
8
8
|
Given a file named "features/undefined_steps.feature" with:
|
|
9
9
|
"""
|
|
10
10
|
Feature:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
Scenario: Doc String
|
|
12
|
+
Given a Doc String
|
|
13
|
+
\"\"\"
|
|
14
|
+
example with <html> entities
|
|
15
|
+
\"\"\"
|
|
16
|
+
When 1 simple when step
|
|
17
|
+
And another "when" step
|
|
18
|
+
Then a simple then step
|
|
19
19
|
"""
|
|
20
20
|
When I run `cucumber features/undefined_steps.feature -s`
|
|
21
21
|
Then the output should contain:
|
|
22
22
|
"""
|
|
23
|
-
Given(
|
|
23
|
+
Given("a Doc String") do |string|
|
|
24
24
|
pending # Write code here that turns the phrase above into concrete actions
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
When(
|
|
27
|
+
When("{int} simple when step") do |int|
|
|
28
28
|
pending # Write code here that turns the phrase above into concrete actions
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
When(
|
|
31
|
+
When("another {string} step") do |string|
|
|
32
32
|
pending # Write code here that turns the phrase above into concrete actions
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
Then(
|
|
35
|
+
Then("a simple then step") do
|
|
36
36
|
pending # Write code here that turns the phrase above into concrete actions
|
|
37
37
|
end
|
|
38
38
|
"""
|
|
@@ -41,15 +41,15 @@ Feature: Snippets
|
|
|
41
41
|
Given a file named "features/undefined_steps.feature" with:
|
|
42
42
|
"""
|
|
43
43
|
Feature:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
Scenario: table
|
|
45
|
+
Given a table
|
|
46
|
+
| table |
|
|
47
|
+
|example|
|
|
48
48
|
"""
|
|
49
49
|
When I run `cucumber features/undefined_steps.feature -s`
|
|
50
50
|
Then the output should contain:
|
|
51
51
|
"""
|
|
52
|
-
Given(
|
|
52
|
+
Given("a table") do |table|
|
|
53
53
|
# table is a Cucumber::MultilineArgument::DataTable
|
|
54
54
|
pending # Write code here that turns the phrase above into concrete actions
|
|
55
55
|
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Feature: Gherkin Source Read Event
|
|
2
|
+
|
|
3
|
+
This event is fired when Cucumber reads a Gherkin document.
|
|
4
|
+
|
|
5
|
+
See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/GherkinSourceRead)
|
|
6
|
+
for more information about the data available on this event.
|
|
7
|
+
|
|
8
|
+
@todo-windows
|
|
9
|
+
Scenario: Read two documents
|
|
10
|
+
Given a file named "features/one.feature" with:
|
|
11
|
+
"""
|
|
12
|
+
Feature: One
|
|
13
|
+
This is the first feature
|
|
14
|
+
|
|
15
|
+
"""
|
|
16
|
+
And a file named "features/two.feature" with:
|
|
17
|
+
"""
|
|
18
|
+
Feature: Two
|
|
19
|
+
This is the other feature
|
|
20
|
+
|
|
21
|
+
"""
|
|
22
|
+
And a file named "features/support/events.rb" with:
|
|
23
|
+
"""
|
|
24
|
+
AfterConfiguration do |config|
|
|
25
|
+
config.on_event :gherkin_source_read do |event|
|
|
26
|
+
config.out_stream.puts "path: #{event.path}"
|
|
27
|
+
config.out_stream.puts "body:\n#{event.body}"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
"""
|
|
31
|
+
When I run `cucumber --dry-run`
|
|
32
|
+
Then it should pass with:
|
|
33
|
+
"""
|
|
34
|
+
path: features/one.feature
|
|
35
|
+
body:
|
|
36
|
+
Feature: One
|
|
37
|
+
This is the first feature
|
|
38
|
+
path: features/two.feature
|
|
39
|
+
body:
|
|
40
|
+
Feature: Two
|
|
41
|
+
This is the other feature
|
|
42
|
+
"""
|
|
43
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Step Activated Event
|
|
2
|
+
|
|
3
|
+
This event is fired when Cucumber finds a matching definition for a Gherkin step.
|
|
4
|
+
|
|
5
|
+
See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/StepActivated)
|
|
6
|
+
for more information about the data available on this event.
|
|
7
|
+
|
|
8
|
+
Scenario: Activate a step
|
|
9
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
10
|
+
"""
|
|
11
|
+
Given /a step/ do
|
|
12
|
+
# automation goes here
|
|
13
|
+
end
|
|
14
|
+
"""
|
|
15
|
+
And a file named "features/test.feature" with:
|
|
16
|
+
"""
|
|
17
|
+
Feature:
|
|
18
|
+
Scenario:
|
|
19
|
+
Given a step
|
|
20
|
+
"""
|
|
21
|
+
And a file named "features/support/events.rb" with:
|
|
22
|
+
"""
|
|
23
|
+
AfterConfiguration do |config|
|
|
24
|
+
config.on_event :step_activated do |event|
|
|
25
|
+
config.out_stream.puts "The step: #{event.test_step.location}"
|
|
26
|
+
config.out_stream.puts "The step definition: #{event.step_match.location}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
"""
|
|
30
|
+
When I run `cucumber`
|
|
31
|
+
Then it should pass with:
|
|
32
|
+
"""
|
|
33
|
+
The step: features/test.feature:3
|
|
34
|
+
The step definition: features/step_definitions/steps.rb:1
|
|
35
|
+
"""
|
|
36
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Feature: Step definition registered
|
|
2
|
+
|
|
3
|
+
This event is fired when Cucumber loads the user's step definitions. Typically, this is
|
|
4
|
+
when the `Given /^my step$/ do` methods are called.
|
|
5
|
+
|
|
6
|
+
See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/StepDefinitionRegistered) for more information about the data available on this event.
|
|
7
|
+
|
|
8
|
+
Scenario: Register a new step definition
|
|
9
|
+
Given the standard step definitions
|
|
10
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
11
|
+
"""
|
|
12
|
+
Given /a step/ do
|
|
13
|
+
# automation goes here
|
|
14
|
+
end
|
|
15
|
+
"""
|
|
16
|
+
And a file named "features/support/events.rb" with:
|
|
17
|
+
"""
|
|
18
|
+
AfterConfiguration do |config|
|
|
19
|
+
config.on_event :step_definition_registered do |event|
|
|
20
|
+
config.out_stream.puts "The step definition: #{event.step_definition.location}"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
"""
|
|
24
|
+
When I run `cucumber`
|
|
25
|
+
Then it should pass with:
|
|
26
|
+
"""
|
|
27
|
+
The step definition: features/step_definitions/steps.rb:1
|
|
28
|
+
"""
|
|
29
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Feature: Test Case Finished Event
|
|
2
|
+
|
|
3
|
+
This event is fired after each scenario or examples table row (generally named a
|
|
4
|
+
Test Case) has finished executing. You can use the event to learn about the
|
|
5
|
+
result of the test case.
|
|
6
|
+
|
|
7
|
+
See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestCaseFinished) for more information about the data available on this event.
|
|
8
|
+
|
|
9
|
+
Scenario: Test case passes
|
|
10
|
+
Given the standard step definitions
|
|
11
|
+
And a file named "features/passing.feature" with:
|
|
12
|
+
"""
|
|
13
|
+
Feature: A feature
|
|
14
|
+
Scenario: A scenario
|
|
15
|
+
Given this step passes
|
|
16
|
+
"""
|
|
17
|
+
And a file named "features/support/events.rb" with:
|
|
18
|
+
"""
|
|
19
|
+
AfterConfiguration do |config|
|
|
20
|
+
config.on_event :test_case_finished do |event|
|
|
21
|
+
config.out_stream.puts "Results"
|
|
22
|
+
config.out_stream.puts "-------"
|
|
23
|
+
config.out_stream.puts "Test case: #{event.test_case.name}"
|
|
24
|
+
config.out_stream.puts "The result is: #{event.result}"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
"""
|
|
28
|
+
When I run `cucumber`
|
|
29
|
+
Then it should pass with:
|
|
30
|
+
"""
|
|
31
|
+
Results
|
|
32
|
+
-------
|
|
33
|
+
Test case: A scenario
|
|
34
|
+
The result is: ✓
|
|
35
|
+
"""
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
@wip
|
|
2
|
+
Feature: Test Case Started Event
|
|
3
|
+
|
|
4
|
+
This event is fired just before each scenario or scenario outline example row
|
|
5
|
+
(generally named a Test Case) starts to be executed. This event is read-only.
|
|
6
|
+
|
|
7
|
+
See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestCaseStarted) for more information about the data available on this event and the result object.
|
|
8
|
+
|
|
9
|
+
Background:
|
|
10
|
+
Given the standard step definitions
|
|
11
|
+
And a file named "features/test.feature" with:
|
|
12
|
+
"""
|
|
13
|
+
@feature
|
|
14
|
+
Feature: A feature
|
|
15
|
+
|
|
16
|
+
@scenario
|
|
17
|
+
Scenario: A passing scenario
|
|
18
|
+
Given this is a step
|
|
19
|
+
"""
|
|
20
|
+
And a file named "features/support/events.rb" with:
|
|
21
|
+
"""
|
|
22
|
+
stdout = nil
|
|
23
|
+
AfterConfiguration do |config|
|
|
24
|
+
stdout = config.out_stream # make sure all the `puts` calls can write to the same output
|
|
25
|
+
config.on_event :test_case_started do |event|
|
|
26
|
+
stdout.puts "before"
|
|
27
|
+
stdout.puts event.test_case.tags.map(&:name)
|
|
28
|
+
end
|
|
29
|
+
config.on_event :test_case_finished do |event|
|
|
30
|
+
stdout.puts "after"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
Given(/this is a step/) do
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
Scenario: Run the test case
|
|
40
|
+
When I run `cucumber -q`
|
|
41
|
+
Then it should pass with:
|
|
42
|
+
"""
|
|
43
|
+
before
|
|
44
|
+
@feature
|
|
45
|
+
@scenario
|
|
46
|
+
@feature
|
|
47
|
+
Feature: A feature
|
|
48
|
+
|
|
49
|
+
@scenario
|
|
50
|
+
Scenario: A passing scenario
|
|
51
|
+
Given this is a step
|
|
52
|
+
after
|
|
53
|
+
"""
|
|
54
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Feature: Test Run Finished
|
|
2
|
+
|
|
3
|
+
This event is fired after all the test cases have been executed.
|
|
4
|
+
|
|
5
|
+
Typically, a formatter would use this to print out summary information.
|
|
6
|
+
|
|
7
|
+
At the moment this event contains no data, but it could be extended
|
|
8
|
+
in the future to carry the summary information for the convenience
|
|
9
|
+
of formatter authors.
|
|
10
|
+
|
|
11
|
+
Background:
|
|
12
|
+
Given the standard step definitions
|
|
13
|
+
And a file named "features/test.feature" with:
|
|
14
|
+
"""
|
|
15
|
+
Feature: A feature
|
|
16
|
+
|
|
17
|
+
Scenario: A passing scenario
|
|
18
|
+
Given this is a step
|
|
19
|
+
"""
|
|
20
|
+
And a file named "features/support/events.rb" with:
|
|
21
|
+
"""
|
|
22
|
+
class MyFormatter
|
|
23
|
+
def initialize(config)
|
|
24
|
+
config.on_event :test_case_finished do
|
|
25
|
+
config.out_stream.puts "test case finished"
|
|
26
|
+
end
|
|
27
|
+
config.on_event :test_run_finished do
|
|
28
|
+
config.out_stream.puts "the end"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
Scenario: Run the test case
|
|
35
|
+
When I run `cucumber -q -f MyFormatter`
|
|
36
|
+
Then it should pass with:
|
|
37
|
+
"""
|
|
38
|
+
test case finished
|
|
39
|
+
the end
|
|
40
|
+
"""
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
Feature: Test Run Started Event
|
|
2
|
+
|
|
3
|
+
This event is fired once all test cases have been filtered, just before
|
|
4
|
+
the first one is executed.
|
|
5
|
+
|
|
6
|
+
See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestRunStarted) for more information about the data available on this event.
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given the standard step definitions
|
|
10
|
+
And a file named "features/foo.feature" with:
|
|
11
|
+
"""
|
|
12
|
+
Feature: Foo
|
|
13
|
+
Scenario:
|
|
14
|
+
Given a passing step
|
|
15
|
+
"""
|
|
16
|
+
And a file named "features/bar.feature" with:
|
|
17
|
+
"""
|
|
18
|
+
Feature: Foo
|
|
19
|
+
Scenario:
|
|
20
|
+
Given a passing step
|
|
21
|
+
"""
|
|
22
|
+
And a file named "features/support/events.rb" with:
|
|
23
|
+
"""
|
|
24
|
+
AfterConfiguration do |config|
|
|
25
|
+
config.on_event :test_run_started do |event|
|
|
26
|
+
config.out_stream.puts "test run started"
|
|
27
|
+
config.out_stream.puts event.test_cases.map(&:location)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
@todo-windows
|
|
33
|
+
Scenario: Run the test case
|
|
34
|
+
When I run `cucumber -q`
|
|
35
|
+
Then it should pass with:
|
|
36
|
+
"""
|
|
37
|
+
test run started
|
|
38
|
+
features/bar.feature:2
|
|
39
|
+
features/foo.feature:2
|
|
40
|
+
"""
|
|
41
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
Feature: Test Step Finished Event
|
|
2
|
+
|
|
3
|
+
This event is fired after each step in a scenario or scenario outline example
|
|
4
|
+
(generally named a Test Step) has finished executing. You can use the event to learn about the
|
|
5
|
+
result of the test step.
|
|
6
|
+
|
|
7
|
+
See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestStepFinished) for more information about the data available on this event and the result object.
|
|
8
|
+
|
|
9
|
+
Background:
|
|
10
|
+
Given the standard step definitions
|
|
11
|
+
And a file named "features/test.feature" with:
|
|
12
|
+
"""
|
|
13
|
+
Feature: A feature
|
|
14
|
+
|
|
15
|
+
@pass
|
|
16
|
+
Scenario: A passing scenario
|
|
17
|
+
Given this step passes
|
|
18
|
+
|
|
19
|
+
@fail
|
|
20
|
+
Scenario: A failing scenario
|
|
21
|
+
Given this step fails
|
|
22
|
+
"""
|
|
23
|
+
And a file named "features/support/events.rb" with:
|
|
24
|
+
"""
|
|
25
|
+
AfterConfiguration do |config|
|
|
26
|
+
config.on_event :test_step_finished do |event|
|
|
27
|
+
config.out_stream.puts "Test step: #{event.test_step}"
|
|
28
|
+
config.out_stream.puts "The result is: #{event.result}"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
Scenario: Test step passes
|
|
34
|
+
When I run `cucumber --tags @pass`
|
|
35
|
+
Then it should pass with:
|
|
36
|
+
"""
|
|
37
|
+
Test step: this step passes
|
|
38
|
+
The result is: ✓
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
Scenario: Test step fails
|
|
42
|
+
When I run `cucumber --tags @fail`
|
|
43
|
+
Then it should fail with:
|
|
44
|
+
"""
|
|
45
|
+
Test step: this step fails
|
|
46
|
+
The result is: ✗
|
|
47
|
+
"""
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Feature: Test Step Started Event
|
|
2
|
+
|
|
3
|
+
This event is fired just before each step in a scenario or scenario outline example
|
|
4
|
+
(generally named a Test Step) starts to be executed. This event is read-only, so there
|
|
5
|
+
is no way to prevent the test step from running, but you can use it for logging or user
|
|
6
|
+
notification.
|
|
7
|
+
|
|
8
|
+
See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestStepStarted) for more information about the data available on this event and the result object.
|
|
9
|
+
|
|
10
|
+
Background:
|
|
11
|
+
Given the standard step definitions
|
|
12
|
+
And a file named "features/test.feature" with:
|
|
13
|
+
"""
|
|
14
|
+
Feature: A feature
|
|
15
|
+
|
|
16
|
+
Scenario: A passing scenario
|
|
17
|
+
Given this is a step
|
|
18
|
+
"""
|
|
19
|
+
And a file named "features/support/events.rb" with:
|
|
20
|
+
"""
|
|
21
|
+
stdout = nil
|
|
22
|
+
AfterConfiguration do |config|
|
|
23
|
+
stdout = config.out_stream # make sure all the `puts` calls can write to the same output
|
|
24
|
+
config.on_event :test_step_started do |event|
|
|
25
|
+
stdout.puts "before"
|
|
26
|
+
end
|
|
27
|
+
config.on_event :test_step_finished do |event|
|
|
28
|
+
stdout.puts "after"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
Given(/this is a step/) do
|
|
32
|
+
stdout.puts "during"
|
|
33
|
+
end
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
Scenario: Test step passes
|
|
37
|
+
When I run `cucumber`
|
|
38
|
+
Then it should pass with:
|
|
39
|
+
"""
|
|
40
|
+
before
|
|
41
|
+
during
|
|
42
|
+
after
|
|
43
|
+
"""
|
|
@@ -21,7 +21,7 @@ Feature: Exception in After Block
|
|
|
21
21
|
end
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
|
-
@spawn
|
|
24
|
+
@spawn @todo-windows
|
|
25
25
|
Scenario: Handle Exception in standard scenario step and carry on
|
|
26
26
|
Given a file named "features/naughty_step_in_scenario.feature" with:
|
|
27
27
|
"""
|
|
@@ -54,7 +54,7 @@ Feature: Exception in After Block
|
|
|
54
54
|
|
|
55
55
|
"""
|
|
56
56
|
|
|
57
|
-
@spawn
|
|
57
|
+
@spawn @todo-windows
|
|
58
58
|
Scenario: Handle Exception in scenario outline table row and carry on
|
|
59
59
|
Given a file named "features/naughty_step_in_scenario_outline.feature" with:
|
|
60
60
|
"""
|
|
@@ -100,6 +100,7 @@ Feature: Exception in After Block
|
|
|
100
100
|
|
|
101
101
|
"""
|
|
102
102
|
|
|
103
|
+
@todo-windows
|
|
103
104
|
Scenario: Handle Exception using the progress format
|
|
104
105
|
Given a file named "features/naughty_step_in_scenario.feature" with:
|
|
105
106
|
"""
|
|
@@ -21,6 +21,7 @@ Feature: Exception in AfterStep Block
|
|
|
21
21
|
end
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
|
+
@todo-windows
|
|
24
25
|
Scenario: Handle Exception in standard scenario step and carry on
|
|
25
26
|
Given a file named "features/naughty_step_in_scenario.feature" with:
|
|
26
27
|
"""
|
|
@@ -54,6 +55,7 @@ Feature: Exception in AfterStep Block
|
|
|
54
55
|
|
|
55
56
|
"""
|
|
56
57
|
|
|
58
|
+
@todo-windows
|
|
57
59
|
Scenario: Handle Exception in scenario outline table row and carry on
|
|
58
60
|
Given a file named "features/naughty_step_in_scenario_outline.feature" with:
|
|
59
61
|
"""
|
|
@@ -12,6 +12,7 @@ Feature: Exceptions in Around Hooks
|
|
|
12
12
|
There's another scenario to consider, where the exception occurs after the steps
|
|
13
13
|
have been run. How would we want to report in that case?
|
|
14
14
|
|
|
15
|
+
@todo-windows
|
|
15
16
|
Scenario: Exception before the test case is run
|
|
16
17
|
Given the standard step definitions
|
|
17
18
|
And a file named "features/support/env.rb" with:
|
|
@@ -44,6 +45,7 @@ Feature: Exceptions in Around Hooks
|
|
|
44
45
|
|
|
45
46
|
"""
|
|
46
47
|
|
|
48
|
+
@todo-windows
|
|
47
49
|
Scenario: Exception after the test case is run
|
|
48
50
|
Given the standard step definitions
|
|
49
51
|
And a file named "features/support/env.rb" with:
|
|
@@ -14,7 +14,7 @@ Feature: Exception in Before Block
|
|
|
14
14
|
end
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
@spawn
|
|
17
|
+
@spawn @todo-windows
|
|
18
18
|
Scenario: Handle Exception in standard scenario step and carry on
|
|
19
19
|
Given a file named "features/naughty_step_in_scenario.feature" with:
|
|
20
20
|
"""
|
|
@@ -41,6 +41,7 @@ Feature: Exception in Before Block
|
|
|
41
41
|
|
|
42
42
|
"""
|
|
43
43
|
|
|
44
|
+
@todo-windows
|
|
44
45
|
Scenario: Handle Exception in Before hook for Scenario with Background
|
|
45
46
|
Given a file named "features/naughty_step_in_before.feature" with:
|
|
46
47
|
"""
|
|
@@ -74,6 +75,7 @@ Feature: Exception in Before Block
|
|
|
74
75
|
|
|
75
76
|
"""
|
|
76
77
|
|
|
78
|
+
@todo-windows
|
|
77
79
|
Scenario: Handle Exception using the progress format
|
|
78
80
|
Given a file named "features/naughty_step_in_scenario.feature" with:
|
|
79
81
|
"""
|