cucumber 3.0.1 → 3.2.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 +5 -5
- data/CHANGELOG.md +84 -4
- data/CONTRIBUTING.md +3 -4
- data/README.md +12 -12
- data/lib/autotest/cucumber.rb +1 -0
- data/lib/autotest/cucumber_mixin.rb +1 -0
- 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 +1 -0
- data/lib/cucumber.rb +1 -0
- data/lib/cucumber/cli/configuration.rb +1 -0
- data/lib/cucumber/cli/main.rb +2 -2
- data/lib/cucumber/cli/options.rb +63 -55
- data/lib/cucumber/cli/profile_loader.rb +5 -7
- data/lib/cucumber/cli/rerun_file.rb +1 -0
- data/lib/cucumber/configuration.rb +8 -7
- data/lib/cucumber/constantize.rb +6 -5
- data/lib/cucumber/core_ext/string.rb +1 -0
- data/lib/cucumber/deprecate.rb +1 -1
- data/lib/cucumber/encoding.rb +2 -1
- data/lib/cucumber/errors.rb +2 -1
- data/lib/cucumber/events.rb +1 -2
- data/lib/cucumber/events/gherkin_source_read.rb +1 -4
- data/lib/cucumber/events/step_activated.rb +4 -5
- data/lib/cucumber/events/step_definition_registered.rb +4 -8
- data/lib/cucumber/events/test_case_finished.rb +0 -4
- data/lib/cucumber/events/test_case_started.rb +0 -4
- data/lib/cucumber/events/test_run_finished.rb +2 -3
- data/lib/cucumber/events/test_run_started.rb +2 -4
- data/lib/cucumber/events/test_step_finished.rb +0 -6
- data/lib/cucumber/events/test_step_started.rb +1 -7
- data/lib/cucumber/file_specs.rb +2 -1
- data/lib/cucumber/filters.rb +1 -0
- data/lib/cucumber/filters/activate_steps.rb +1 -1
- 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 +2 -1
- data/lib/cucumber/filters/gated_receiver.rb +1 -2
- data/lib/cucumber/filters/prepare_world.rb +2 -5
- data/lib/cucumber/filters/quit.rb +2 -4
- data/lib/cucumber/filters/randomizer.rb +6 -7
- data/lib/cucumber/filters/retry.rb +2 -2
- data/lib/cucumber/filters/tag_limits.rb +2 -2
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
- data/lib/cucumber/filters/tag_limits/verifier.rb +1 -2
- data/lib/cucumber/formatter/ansicolor.rb +13 -12
- data/lib/cucumber/formatter/backtrace_filter.rb +1 -2
- data/lib/cucumber/formatter/console.rb +11 -12
- data/lib/cucumber/formatter/console_counts.rb +4 -4
- data/lib/cucumber/formatter/console_issues.rb +3 -3
- data/lib/cucumber/formatter/duration.rb +1 -0
- data/lib/cucumber/formatter/duration_extractor.rb +1 -1
- data/lib/cucumber/formatter/fail_fast.rb +9 -6
- data/lib/cucumber/formatter/fanout.rb +1 -3
- data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
- data/lib/cucumber/formatter/html.rb +28 -32
- data/lib/cucumber/formatter/html_builder.rb +3 -2
- data/lib/cucumber/formatter/http_io.rb +146 -0
- data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -3
- data/lib/cucumber/formatter/interceptor.rb +18 -5
- data/lib/cucumber/formatter/io.rb +18 -11
- data/lib/cucumber/formatter/json.rb +11 -4
- data/lib/cucumber/formatter/json_pretty.rb +1 -1
- data/lib/cucumber/formatter/junit.rb +22 -17
- data/lib/cucumber/formatter/pretty.rb +4 -3
- data/lib/cucumber/formatter/progress.rb +3 -2
- data/lib/cucumber/formatter/rerun.rb +2 -1
- data/lib/cucumber/formatter/stepdefs.rb +1 -0
- data/lib/cucumber/formatter/steps.rb +2 -2
- data/lib/cucumber/formatter/summary.rb +1 -2
- data/lib/cucumber/formatter/unicode.rb +2 -2
- data/lib/cucumber/formatter/usage.rb +22 -19
- data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +86 -85
- data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
- data/lib/cucumber/gherkin/i18n.rb +1 -0
- data/lib/cucumber/gherkin/steps_parser.rb +1 -0
- data/lib/cucumber/glue/dsl.rb +1 -0
- data/lib/cucumber/glue/hook.rb +1 -0
- data/lib/cucumber/glue/invoke_in_world.rb +3 -3
- data/lib/cucumber/glue/proto_world.rb +10 -9
- data/lib/cucumber/glue/registry_and_more.rb +13 -12
- data/lib/cucumber/glue/snippet.rb +1 -5
- data/lib/cucumber/glue/step_definition.rb +10 -10
- data/lib/cucumber/glue/world_factory.rb +1 -3
- data/lib/cucumber/hooks.rb +13 -3
- data/lib/cucumber/load_path.rb +1 -0
- data/lib/cucumber/multiline_argument.rb +3 -3
- data/lib/cucumber/multiline_argument/data_table.rb +16 -20
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +7 -11
- data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
- data/lib/cucumber/platform.rb +2 -1
- data/lib/cucumber/project_initializer.rb +1 -1
- data/lib/cucumber/rake/task.rb +8 -5
- data/lib/cucumber/rspec/disable_option_parser.rb +1 -0
- data/lib/cucumber/rspec/doubles.rb +1 -0
- data/lib/cucumber/running_test_case.rb +2 -1
- data/lib/cucumber/runtime.rb +6 -6
- data/lib/cucumber/runtime/after_hooks.rb +1 -0
- data/lib/cucumber/runtime/before_hooks.rb +1 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +8 -7
- data/lib/cucumber/runtime/step_hooks.rb +2 -0
- data/lib/cucumber/runtime/support_code.rb +3 -7
- data/lib/cucumber/runtime/user_interface.rb +2 -3
- data/lib/cucumber/step_argument.rb +1 -0
- data/lib/cucumber/step_definition_light.rb +2 -1
- data/lib/cucumber/step_definitions.rb +2 -1
- data/lib/cucumber/step_match.rb +9 -8
- data/lib/cucumber/step_match_search.rb +8 -9
- data/lib/cucumber/term/ansicolor.rb +30 -30
- data/lib/cucumber/unit.rb +1 -0
- data/lib/cucumber/version +1 -1
- data/lib/simplecov_setup.rb +1 -0
- metadata +64 -659
- data/.coveralls.yml +0 -1
- data/.cucumberproignore +0 -6
- data/.gitattributes +0 -32
- data/.github/ISSUE_TEMPLATE.md +0 -48
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -40
- data/.rspec +0 -1
- data/.rubocop.yml +0 -13
- data/.rubocop_todo.yml +0 -991
- data/.ruby-gemset +0 -1
- data/.travis.yml +0 -70
- data/.yardopts +0 -1
- data/Gemfile +0 -28
- data/Rakefile +0 -32
- data/appveyor.yml +0 -27
- data/cucumber.gemspec +0 -52
- data/cucumber.yml +0 -19
- data/examples/i18n/README.textile +0 -3
- data/examples/i18n/Rakefile +0 -33
- data/examples/i18n/ar/Rakefile +0 -6
- data/examples/i18n/ar/features/addition.feature +0 -17
- data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/ar/lib/calculator.rb +0 -11
- data/examples/i18n/bg/Rakefile +0 -6
- data/examples/i18n/bg/features/addition.feature +0 -12
- data/examples/i18n/bg/features/consecutive_calculations.feature +0 -19
- data/examples/i18n/bg/features/division.feature +0 -17
- data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +0 -24
- data/examples/i18n/bg/features/support/env.rb +0 -10
- data/examples/i18n/bg/features/support/world.rb +0 -8
- data/examples/i18n/bg/lib/calculator.rb +0 -25
- data/examples/i18n/ca/Rakefile +0 -6
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -26
- data/examples/i18n/ca/features/suma.feature +0 -17
- data/examples/i18n/ca/lib/calculadora.rb +0 -16
- data/examples/i18n/cs/Rakefile +0 -6
- data/examples/i18n/cs/features/addition.feature +0 -17
- data/examples/i18n/cs/features/division.feature +0 -11
- data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/cs/lib/calculator.rb +0 -14
- data/examples/i18n/da/Rakefile +0 -6
- data/examples/i18n/da/features/sammenlaegning.feature +0 -18
- data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +0 -29
- data/examples/i18n/da/lib/lommeregner.rb +0 -11
- data/examples/i18n/de/Rakefile +0 -6
- data/examples/i18n/de/features/addition.feature +0 -17
- data/examples/i18n/de/features/division.feature +0 -10
- data/examples/i18n/de/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/de/lib/calculator.rb +0 -14
- data/examples/i18n/el/Rakefile +0 -6
- data/examples/i18n/el/features/addition.feature +0 -17
- data/examples/i18n/el/features/division.feature +0 -10
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/el/lib/calculator.rb +0 -14
- data/examples/i18n/en-lol/Rakefile +0 -4
- data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +0 -16
- data/examples/i18n/en-lol/features/stuffing.feature +0 -8
- data/examples/i18n/en-lol/features/support/env.rb +0 -11
- data/examples/i18n/en-lol/lib/basket.rb +0 -12
- data/examples/i18n/en-lol/lib/belly.rb +0 -11
- data/examples/i18n/en/Rakefile +0 -6
- data/examples/i18n/en/features/addition.feature +0 -17
- data/examples/i18n/en/features/division.feature +0 -10
- data/examples/i18n/en/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/en/lib/calculator.rb +0 -14
- data/examples/i18n/eo/Rakefile +0 -6
- data/examples/i18n/eo/features/adicio.feature +0 -17
- data/examples/i18n/eo/features/divido.feature +0 -10
- data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/eo/lib/calculator.rb +0 -14
- data/examples/i18n/es/Rakefile +0 -6
- data/examples/i18n/es/features/adicion.feature +0 -17
- data/examples/i18n/es/features/step_definitions/calculador_steps.rb +0 -26
- data/examples/i18n/es/lib/calculador.rb +0 -14
- data/examples/i18n/et/Rakefile +0 -6
- data/examples/i18n/et/features/jagamine.feature +0 -10
- data/examples/i18n/et/features/liitmine.feature +0 -17
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -29
- data/examples/i18n/et/lib/kalkulaator.rb +0 -14
- data/examples/i18n/fi/Rakefile +0 -6
- data/examples/i18n/fi/features/jakolasku.feature +0 -10
- data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +0 -29
- data/examples/i18n/fi/features/yhteenlasku.feature +0 -17
- data/examples/i18n/fi/lib/laskin.rb +0 -14
- data/examples/i18n/fr/Rakefile +0 -8
- data/examples/i18n/fr/features/addition.feature +0 -18
- data/examples/i18n/fr/features/addition2.feature +0 -17
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -32
- data/examples/i18n/fr/features/support/env.rb +0 -10
- data/examples/i18n/fr/lib/calculatrice.rb +0 -10
- data/examples/i18n/he/Rakefile +0 -6
- data/examples/i18n/he/features/addition.feature +0 -17
- data/examples/i18n/he/features/division.feature +0 -10
- data/examples/i18n/he/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/he/lib/calculator.rb +0 -15
- data/examples/i18n/hi/Rakefile +0 -6
- data/examples/i18n/hi/features/addition.feature +0 -16
- data/examples/i18n/hi/features/division.feature +0 -10
- data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/hi/lib/calculator.rb +0 -15
- data/examples/i18n/ht/Rakefile +0 -6
- data/examples/i18n/ht/features/adisyon.feature +0 -17
- data/examples/i18n/ht/features/divizyon.feature +0 -10
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +0 -29
- data/examples/i18n/ht/lib/kalkilatris.rb +0 -14
- data/examples/i18n/hu/Rakefile +0 -6
- data/examples/i18n/hu/features/osszeadas.feature +0 -17
- data/examples/i18n/hu/features/osztas.feature +0 -10
- data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +0 -30
- data/examples/i18n/hu/lib/calculator.rb +0 -14
- data/examples/i18n/id/Rakefile +0 -6
- data/examples/i18n/id/features/addition.feature +0 -17
- data/examples/i18n/id/features/division.feature +0 -10
- data/examples/i18n/id/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/id/lib/calculator.rb +0 -14
- data/examples/i18n/it/Rakefile +0 -6
- data/examples/i18n/it/features/somma.feature +0 -11
- data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +0 -29
- data/examples/i18n/it/lib/calcolatrice.rb +0 -11
- data/examples/i18n/ja/Rakefile +0 -6
- data/examples/i18n/ja/features/addition.feature +0 -17
- data/examples/i18n/ja/features/division.feature +0 -10
- data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +0 -19
- data/examples/i18n/ja/features/support/env.rb +0 -10
- data/examples/i18n/ja/lib/calculator.rb +0 -14
- data/examples/i18n/ko/Rakefile +0 -6
- data/examples/i18n/ko/features/addition.feature +0 -17
- data/examples/i18n/ko/features/division.feature +0 -11
- data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/ko/lib/calculator.rb +0 -14
- data/examples/i18n/lt/Rakefile +0 -6
- data/examples/i18n/lt/features/addition.feature +0 -17
- data/examples/i18n/lt/features/division.feature +0 -10
- data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/lt/lib/calculator.rb +0 -14
- data/examples/i18n/lv/Rakefile +0 -6
- data/examples/i18n/lv/features/addition.feature +0 -17
- data/examples/i18n/lv/features/division.feature +0 -10
- data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/lv/lib/calculator.rb +0 -14
- data/examples/i18n/no/Rakefile +0 -6
- data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +0 -17
- data/examples/i18n/no/features/summering.feature +0 -19
- data/examples/i18n/no/features/support/env.rb +0 -11
- data/examples/i18n/no/lib/kalkulator.rb +0 -11
- data/examples/i18n/pl/Rakefile +0 -6
- data/examples/i18n/pl/features/addition.feature +0 -17
- data/examples/i18n/pl/features/division.feature +0 -10
- data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/pl/features/support/env.rb +0 -10
- data/examples/i18n/pl/lib/calculator.rb +0 -14
- data/examples/i18n/pt/Rakefile +0 -6
- data/examples/i18n/pt/features/adicao.feature +0 -11
- data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -20
- data/examples/i18n/pt/features/support/env.rb +0 -10
- data/examples/i18n/pt/lib/calculadora.rb +0 -10
- data/examples/i18n/ro/Rakefile +0 -6
- data/examples/i18n/ro/features/adunare.feature +0 -12
- data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +0 -26
- data/examples/i18n/ro/lib/calculator.rb +0 -11
- data/examples/i18n/ru/Rakefile +0 -6
- data/examples/i18n/ru/features/addition.feature +0 -11
- data/examples/i18n/ru/features/consecutive_calculations.feature +0 -17
- data/examples/i18n/ru/features/division.feature +0 -16
- data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +0 -19
- data/examples/i18n/ru/features/support/env.rb +0 -10
- data/examples/i18n/ru/features/support/world.rb +0 -8
- data/examples/i18n/ru/lib/calculator.rb +0 -25
- data/examples/i18n/sk/Rakefile +0 -6
- data/examples/i18n/sk/features/addition.feature +0 -17
- data/examples/i18n/sk/features/division.feature +0 -10
- data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/sk/lib/calculator.rb +0 -14
- data/examples/i18n/sr-Cyrl/Rakefile +0 -6
- data/examples/i18n/sr-Cyrl/features/sabiranje.feature +0 -18
- data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +0 -20
- data/examples/i18n/sr-Cyrl/features/support/env.rb +0 -10
- data/examples/i18n/sr-Cyrl/lib/calculator.rb +0 -12
- data/examples/i18n/sr-Latn/Rakefile +0 -6
- data/examples/i18n/sr-Latn/features/sabiranje.feature +0 -18
- data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/sr-Latn/lib/calculator.rb +0 -12
- data/examples/i18n/sv/Rakefile +0 -6
- data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +0 -29
- data/examples/i18n/sv/features/summering.feature +0 -18
- data/examples/i18n/sv/lib/kalkulator.rb +0 -11
- data/examples/i18n/tr/Rakefile +0 -6
- data/examples/i18n/tr/features/bolme.feature +0 -10
- data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +0 -29
- data/examples/i18n/tr/features/toplama.feature +0 -18
- data/examples/i18n/tr/lib/hesap_makinesi.rb +0 -15
- data/examples/i18n/uk/Rakefile +0 -6
- data/examples/i18n/uk/features/addition.feature +0 -11
- data/examples/i18n/uk/features/consecutive_calculations.feature +0 -17
- data/examples/i18n/uk/features/division.feature +0 -16
- data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +0 -19
- data/examples/i18n/uk/features/support/env.rb +0 -10
- data/examples/i18n/uk/features/support/world.rb +0 -8
- data/examples/i18n/uk/lib/calculator.rb +0 -25
- data/examples/i18n/uz/Rakefile +0 -6
- data/examples/i18n/uz/features/addition.feature +0 -10
- data/examples/i18n/uz/features/consecutive_calculations.feature +0 -17
- data/examples/i18n/uz/features/division.feature +0 -17
- data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +0 -19
- data/examples/i18n/uz/features/support/env.rb +0 -10
- data/examples/i18n/uz/features/support/world.rb +0 -8
- data/examples/i18n/uz/lib/calculator.rb +0 -25
- data/examples/i18n/zh-CN/Rakefile +0 -4
- data/examples/i18n/zh-CN/features/addition.feature +0 -18
- data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +0 -31
- data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
- data/examples/i18n/zh-TW/Rakefile +0 -4
- data/examples/i18n/zh-TW/features/addition.feature +0 -17
- data/examples/i18n/zh-TW/features/division.feature +0 -11
- data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/zh-TW/lib/calculator.rb +0 -14
- data/examples/rspec_doubles/Rakefile +0 -4
- data/examples/rspec_doubles/features/mocking.feature +0 -9
- data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +0 -19
- data/examples/rspec_doubles/features/support/env.rb +0 -12
- data/examples/sinatra/README.textile +0 -13
- data/examples/sinatra/Rakefile +0 -6
- data/examples/sinatra/app.rb +0 -14
- data/examples/sinatra/features/add.feature +0 -11
- data/examples/sinatra/features/step_definitions/add_steps.rb +0 -15
- data/examples/sinatra/features/support/env.rb +0 -15
- data/examples/sinatra/views/add.erb +0 -7
- data/examples/sinatra/views/layout.erb +0 -8
- data/examples/tcl/README.textile +0 -11
- data/examples/tcl/Rakefile +0 -6
- data/examples/tcl/features/fibonnacci.feature +0 -17
- data/examples/tcl/features/step_definitions/fib_steps.rb +0 -7
- data/examples/tcl/features/support/env.rb +0 -7
- data/examples/tcl/src/fib.tcl +0 -3
- data/examples/test_unit/Gemfile +0 -4
- data/examples/test_unit/Rakefile +0 -6
- data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -20
- data/examples/test_unit/features/test_unit.feature +0 -9
- data/examples/watir/README.textile +0 -16
- data/examples/watir/Rakefile +0 -12
- data/examples/watir/cucumber.yml +0 -1
- data/examples/watir/features/search.feature +0 -12
- data/examples/watir/features/step_definitions/search_steps.rb +0 -27
- data/examples/watir/features/support/env.rb +0 -39
- data/examples/watir/features/support/screenshots.rb +0 -47
- data/features/docs/api/list_step_defs_as_json.feature +0 -64
- data/features/docs/api/listen_for_events.feature +0 -59
- data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -27
- data/features/docs/cli/backtraces.feature +0 -36
- data/features/docs/cli/dry_run.feature +0 -73
- data/features/docs/cli/exclude_files.feature +0 -18
- data/features/docs/cli/execute_with_tag_filter.feature +0 -119
- data/features/docs/cli/fail_fast.feature +0 -48
- data/features/docs/cli/finding_steps.feature +0 -28
- data/features/docs/cli/help.feature +0 -8
- data/features/docs/cli/i18n.feature +0 -42
- data/features/docs/cli/randomize.feature +0 -140
- data/features/docs/cli/require.feature +0 -27
- data/features/docs/cli/retry_failing_tests.feature +0 -92
- data/features/docs/cli/run_scenarios_matching_name.feature +0 -105
- data/features/docs/cli/run_specific_scenarios.feature +0 -77
- data/features/docs/cli/showing_differences.feature +0 -43
- data/features/docs/cli/specifying_multiple_formatters.feature +0 -68
- data/features/docs/cli/strict_mode.feature +0 -70
- data/features/docs/defining_steps/ambiguous_steps.feature +0 -89
- data/features/docs/defining_steps/nested_steps.feature +0 -181
- data/features/docs/defining_steps/nested_steps_i18n.feature +0 -37
- data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -56
- data/features/docs/defining_steps/one_line_step_definitions.feature +0 -65
- data/features/docs/defining_steps/printing_messages.feature +0 -147
- data/features/docs/defining_steps/skip_scenario.feature +0 -31
- data/features/docs/defining_steps/snippets.feature +0 -56
- data/features/docs/defining_steps/table_diffing.feature +0 -50
- data/features/docs/events/gherkin_source_read_event.feature +0 -43
- data/features/docs/events/step_activated_event.feature +0 -36
- data/features/docs/events/step_definition_registered_event.feature +0 -29
- data/features/docs/events/test_case_finished_event.feature +0 -35
- data/features/docs/events/test_case_started_event.feature +0 -54
- data/features/docs/events/test_run_finished_event.feature +0 -40
- data/features/docs/events/test_run_started_event.feature +0 -41
- data/features/docs/events/test_step_finished_event.feature +0 -47
- data/features/docs/events/test_step_started_event.feature +0 -43
- data/features/docs/exception_in_after_hook.feature +0 -127
- data/features/docs/exception_in_after_step_hook.feature +0 -104
- data/features/docs/exception_in_around_hook.feature +0 -80
- data/features/docs/exception_in_before_hook.feature +0 -98
- data/features/docs/extending_cucumber/custom_filter.feature +0 -29
- data/features/docs/extending_cucumber/custom_formatter.feature +0 -94
- data/features/docs/formatters/api_methods.feature +0 -37
- data/features/docs/formatters/html_formatter.feature +0 -91
- data/features/docs/formatters/json_formatter.feature +0 -767
- data/features/docs/formatters/junit_formatter.feature +0 -455
- data/features/docs/formatters/pretty_formatter.feature +0 -74
- data/features/docs/formatters/progress_formatter.feature +0 -32
- data/features/docs/formatters/rerun_formatter.feature +0 -190
- data/features/docs/formatters/summary_formatter.feature +0 -35
- data/features/docs/formatters/usage_formatter.feature +0 -101
- data/features/docs/getting_started.feature +0 -28
- data/features/docs/gherkin/background.feature +0 -548
- data/features/docs/gherkin/doc_strings.feature +0 -76
- data/features/docs/gherkin/expand_option_for_outlines.feature +0 -47
- data/features/docs/gherkin/language_from_header.feature +0 -32
- data/features/docs/gherkin/outlines.feature +0 -158
- data/features/docs/gherkin/unicode_table.feature +0 -33
- data/features/docs/gherkin/using_descriptions.feature +0 -83
- data/features/docs/gherkin/using_star_notation.feature +0 -37
- data/features/docs/iso-8859-1.feature +0 -6
- data/features/docs/post_configuration_hook.feature +0 -33
- data/features/docs/profiles.feature +0 -120
- data/features/docs/rake_task.feature +0 -146
- data/features/docs/raketask.feature +0 -46
- data/features/docs/work_in_progress.feature +0 -157
- data/features/docs/writing_support_code/after_hooks.feature +0 -102
- data/features/docs/writing_support_code/after_step_hooks.feature +0 -55
- data/features/docs/writing_support_code/around_hooks.feature +0 -266
- data/features/docs/writing_support_code/before_hook.feature +0 -66
- data/features/docs/writing_support_code/hook_order.feature +0 -63
- data/features/docs/writing_support_code/load_path.feature +0 -17
- data/features/docs/writing_support_code/parameter_types.feature +0 -69
- data/features/docs/writing_support_code/state.feature +0 -32
- data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
- data/features/docs/writing_support_code/world.feature +0 -129
- data/features/lib/step_definitions/aruba_steps.rb +0 -21
- data/features/lib/step_definitions/cli_steps.rb +0 -4
- data/features/lib/step_definitions/cucumber_steps.rb +0 -75
- data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -16
- data/features/lib/step_definitions/json_steps.rb +0 -8
- data/features/lib/step_definitions/junit_steps.rb +0 -14
- data/features/lib/step_definitions/language_steps.rb +0 -9
- data/features/lib/step_definitions/profile_steps.rb +0 -16
- data/features/lib/step_definitions/retry_steps.rb +0 -55
- data/features/lib/step_definitions/ruby_steps.rb +0 -4
- data/features/lib/support/env.rb +0 -22
- data/features/lib/support/fake_wire_server.rb +0 -94
- data/features/lib/support/feature_factory.rb +0 -68
- data/features/lib/support/normalise_output.rb +0 -52
- data/features/lib/support/parameter_types.rb +0 -5
- data/gem_tasks/contributors.rake +0 -19
- data/gem_tasks/cov.rake +0 -6
- data/gem_tasks/downloads.rb +0 -8
- data/gem_tasks/environment.rake +0 -4
- data/gem_tasks/examples.rake +0 -12
- data/gem_tasks/fix_cr_lf.rake +0 -22
- data/gem_tasks/flog.rake +0 -5
- data/gem_tasks/rspec.rake +0 -7
- data/gem_tasks/sass.rake +0 -5
- data/gem_tasks/stats +0 -16
- data/gem_tasks/versions.txt +0 -74
- data/scripts/invite-collaborator +0 -40
- data/scripts/update-changelog +0 -86
- data/spec/cucumber/cli/configuration_spec.rb +0 -446
- data/spec/cucumber/cli/main_spec.rb +0 -84
- data/spec/cucumber/cli/options_spec.rb +0 -445
- data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
- data/spec/cucumber/cli/rerun_spec.rb +0 -86
- data/spec/cucumber/configuration_spec.rb +0 -148
- data/spec/cucumber/constantize_spec.rb +0 -20
- data/spec/cucumber/events_spec.rb +0 -9
- data/spec/cucumber/file_specs_spec.rb +0 -61
- data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
- data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
- data/spec/cucumber/filters/retry_spec.rb +0 -98
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
- data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
- data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
- data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
- data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
- data/spec/cucumber/formatter/duration_spec.rb +0 -23
- data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
- data/spec/cucumber/formatter/html_spec.rb +0 -543
- data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
- data/spec/cucumber/formatter/json_spec.rb +0 -815
- data/spec/cucumber/formatter/junit_spec.rb +0 -251
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2175
- data/spec/cucumber/formatter/pretty_spec.rb +0 -907
- data/spec/cucumber/formatter/progress_spec.rb +0 -170
- data/spec/cucumber/formatter/rerun_spec.rb +0 -97
- data/spec/cucumber/formatter/spec_helper.rb +0 -84
- data/spec/cucumber/glue/proto_world_spec.rb +0 -63
- data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
- data/spec/cucumber/glue/snippet_spec.rb +0 -174
- data/spec/cucumber/glue/step_definition_spec.rb +0 -207
- data/spec/cucumber/hooks_spec.rb +0 -31
- data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -653
- data/spec/cucumber/project_initializer_spec.rb +0 -88
- data/spec/cucumber/rake/forked_spec.rb +0 -58
- data/spec/cucumber/rake/task_spec.rb +0 -86
- data/spec/cucumber/running_test_case_spec.rb +0 -140
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
- data/spec/cucumber/runtime/support_code_spec.rb +0 -17
- data/spec/cucumber/runtime_spec.rb +0 -21
- data/spec/cucumber/sell_cucumbers.feature +0 -19
- data/spec/cucumber/step_argument_spec.rb +0 -19
- data/spec/cucumber/step_match_search_spec.rb +0 -113
- data/spec/cucumber/step_match_spec.rb +0 -86
- data/spec/cucumber/world/pending_spec.rb +0 -48
- data/spec/spec_helper.rb +0 -30
- data/spec/support/standard_step_actions.rb +0 -19
@@ -1,29 +0,0 @@
|
|
1
|
-
Feature: Custom filter
|
2
|
-
|
3
|
-
Scenario: Add a custom filter via AfterConfiguration hook
|
4
|
-
Given a file named "features/test.feature" with:
|
5
|
-
"""
|
6
|
-
Feature:
|
7
|
-
Scenario:
|
8
|
-
Given my special step
|
9
|
-
"""
|
10
|
-
And a file named "features/support/my_filter.rb" with:
|
11
|
-
"""
|
12
|
-
require 'cucumber/core/filter'
|
13
|
-
|
14
|
-
MakeAnythingPass = Cucumber::Core::Filter.new do
|
15
|
-
def test_case(test_case)
|
16
|
-
activated_steps = test_case.test_steps.map do |test_step|
|
17
|
-
test_step.with_action { }
|
18
|
-
end
|
19
|
-
test_case.with_steps(activated_steps).describe_to receiver
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
AfterConfiguration do |config|
|
24
|
-
config.filters << MakeAnythingPass.new
|
25
|
-
end
|
26
|
-
"""
|
27
|
-
When I run `cucumber --strict`
|
28
|
-
Then it should pass
|
29
|
-
|
@@ -1,94 +0,0 @@
|
|
1
|
-
Feature: Custom Formatter
|
2
|
-
|
3
|
-
Background:
|
4
|
-
Given a file named "features/f.feature" with:
|
5
|
-
"""
|
6
|
-
Feature: I'll use my own
|
7
|
-
Scenario: Just print me
|
8
|
-
Given this step passes
|
9
|
-
"""
|
10
|
-
And the standard step definitions
|
11
|
-
|
12
|
-
Scenario: Subscribe to result events
|
13
|
-
|
14
|
-
This is the recommended way to format output.
|
15
|
-
|
16
|
-
Given a file named "features/support/custom_formatter.rb" with:
|
17
|
-
"""
|
18
|
-
module MyCustom
|
19
|
-
class Formatter
|
20
|
-
def initialize(config)
|
21
|
-
@io = config.out_stream
|
22
|
-
config.on_event :test_case_started do |event|
|
23
|
-
print_test_case_name(event.test_case)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def print_test_case_name(test_case)
|
28
|
-
feature = test_case.source.first
|
29
|
-
scenario = test_case.source.last
|
30
|
-
@io.puts feature.short_name.upcase
|
31
|
-
@io.puts " #{scenario.name.upcase}"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
"""
|
36
|
-
When I run `cucumber features/f.feature --format MyCustom::Formatter`
|
37
|
-
Then it should pass with exactly:
|
38
|
-
"""
|
39
|
-
I'LL USE MY OWN
|
40
|
-
JUST PRINT ME
|
41
|
-
|
42
|
-
"""
|
43
|
-
|
44
|
-
Scenario: Pass custom config to your formatter from the CLI
|
45
|
-
Given a file named "features/support/custom_formatter.rb" with:
|
46
|
-
"""
|
47
|
-
module MyCustom
|
48
|
-
class Formatter
|
49
|
-
def initialize(config, options)
|
50
|
-
@io = config.out_stream
|
51
|
-
config.on_event :test_run_finished do |event|
|
52
|
-
@io.print options.inspect
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
"""
|
58
|
-
When I run `cucumber features/f.feature --format MyCustom::Formatter,foo=bar,one=two`
|
59
|
-
Then it should pass with exactly:
|
60
|
-
"""
|
61
|
-
{"foo"=>"bar", "one"=>"two"}
|
62
|
-
"""
|
63
|
-
|
64
|
-
Scenario: Use the legacy API
|
65
|
-
This is deprecated and should no longer be used.
|
66
|
-
|
67
|
-
Given a file named "features/support/custom_legacy_formatter.rb" with:
|
68
|
-
"""
|
69
|
-
module MyCustom
|
70
|
-
class LegacyFormatter
|
71
|
-
def initialize(runtime, io, options)
|
72
|
-
@io = io
|
73
|
-
end
|
74
|
-
|
75
|
-
def before_feature(feature)
|
76
|
-
@io.puts feature.short_name.upcase
|
77
|
-
end
|
78
|
-
|
79
|
-
def scenario_name(keyword, name, file_colon_line, source_indent)
|
80
|
-
@io.puts " #{name.upcase}"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
"""
|
85
|
-
When I run `cucumber features/f.feature --format MyCustom::LegacyFormatter`
|
86
|
-
Then it should pass with exactly:
|
87
|
-
"""
|
88
|
-
WARNING: The formatter MyCustom::LegacyFormatter is using the deprecated formatter API which will be removed in v4.0 of Cucumber.
|
89
|
-
|
90
|
-
I'LL USE MY OWN
|
91
|
-
JUST PRINT ME
|
92
|
-
|
93
|
-
"""
|
94
|
-
|
@@ -1,37 +0,0 @@
|
|
1
|
-
Feature: Formatter API methods
|
2
|
-
|
3
|
-
Some utility methods are provided to make it easier to write your own formatters.
|
4
|
-
|
5
|
-
Here are some examples.
|
6
|
-
|
7
|
-
Scenario: A formatter that uses `Cucumber::Formatter::Io#ensure_file`
|
8
|
-
|
9
|
-
The ensure_file method is a little helper function that some formatters use,
|
10
|
-
normally when given a CLI argument with `--out` to check that the file passed
|
11
|
-
by the user actually exists.
|
12
|
-
|
13
|
-
The second argument is the name of the formatter, used to print a useful
|
14
|
-
error message if the file can't be created for some reason.
|
15
|
-
|
16
|
-
Given a file named "features/f.feature" with:
|
17
|
-
"""
|
18
|
-
Feature: Test
|
19
|
-
Scenario: Test
|
20
|
-
"""
|
21
|
-
And a directory named "my/special"
|
22
|
-
And a file named "features/support/custom_formatter.rb" with:
|
23
|
-
"""
|
24
|
-
require 'cucumber/formatter/io'
|
25
|
-
module Cucumber
|
26
|
-
module Formatter
|
27
|
-
class Test
|
28
|
-
include Io
|
29
|
-
def initialize(runtime, path_or_io, options)
|
30
|
-
ensure_file("my/special/output.file", "custom formatter")
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
"""
|
36
|
-
When I run `cucumber features/f.feature --format Cucumber::Formatter::Test`
|
37
|
-
Then it should pass
|
@@ -1,91 +0,0 @@
|
|
1
|
-
Feature: HTML output formatter
|
2
|
-
|
3
|
-
Background:
|
4
|
-
Given the standard step definitions
|
5
|
-
And a file named "features/scenario_outline_with_undefined_steps.feature" with:
|
6
|
-
"""
|
7
|
-
Feature:
|
8
|
-
|
9
|
-
Scenario Outline:
|
10
|
-
Given this step is undefined
|
11
|
-
|
12
|
-
Examples:
|
13
|
-
|foo|
|
14
|
-
|bar|
|
15
|
-
"""
|
16
|
-
And a file named "features/scenario_outline_with_pending_step.feature" with:
|
17
|
-
"""
|
18
|
-
Feature: Outline
|
19
|
-
|
20
|
-
Scenario Outline: Will it blend?
|
21
|
-
Given this step is pending
|
22
|
-
And other step
|
23
|
-
When I do something with <example>
|
24
|
-
Then I should see something
|
25
|
-
Examples:
|
26
|
-
| example |
|
27
|
-
| one |
|
28
|
-
| two |
|
29
|
-
| three |
|
30
|
-
"""
|
31
|
-
And a file named "features/failing_background_step.feature" with:
|
32
|
-
"""
|
33
|
-
Feature: Feature with failing background step
|
34
|
-
|
35
|
-
Background:
|
36
|
-
Given this step fails
|
37
|
-
|
38
|
-
Scenario:
|
39
|
-
When I do something
|
40
|
-
Then I should see something
|
41
|
-
"""
|
42
|
-
|
43
|
-
Scenario: an scenario outline, one undefined step, one random example, expand flag on
|
44
|
-
When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format html --expand `
|
45
|
-
Then it should pass
|
46
|
-
|
47
|
-
Scenario Outline: an scenario outline, one pending step
|
48
|
-
When I run `cucumber <file> --format html <flag>`
|
49
|
-
Then it should pass
|
50
|
-
And the output should contain:
|
51
|
-
"""
|
52
|
-
makeYellow('scenario_1')
|
53
|
-
"""
|
54
|
-
And the output should not contain:
|
55
|
-
"""
|
56
|
-
makeRed('scenario_1')
|
57
|
-
"""
|
58
|
-
|
59
|
-
Examples:
|
60
|
-
| file | flag |
|
61
|
-
| features/scenario_outline_with_pending_step.feature | --expand |
|
62
|
-
| features/scenario_outline_with_pending_step.feature | |
|
63
|
-
|
64
|
-
Examples:
|
65
|
-
| file | flag |
|
66
|
-
| features/scenario_outline_with_undefined_steps.feature | --expand |
|
67
|
-
| features/scenario_outline_with_undefined_steps.feature | |
|
68
|
-
|
69
|
-
Scenario: when using a profile the html shouldn't include 'Using the default profile...'
|
70
|
-
And a file named "cucumber.yml" with:
|
71
|
-
"""
|
72
|
-
default: -r features
|
73
|
-
"""
|
74
|
-
When I run `cucumber features/scenario_outline_with_undefined_steps.feature --profile default --format html`
|
75
|
-
Then it should pass
|
76
|
-
And the output should not contain:
|
77
|
-
"""
|
78
|
-
Using the default profile...
|
79
|
-
"""
|
80
|
-
|
81
|
-
Scenario: a feature with a failing background step
|
82
|
-
When I run `cucumber features/failing_background_step.feature --format html`
|
83
|
-
Then the output should not contain:
|
84
|
-
"""
|
85
|
-
makeRed('scenario_0')
|
86
|
-
"""
|
87
|
-
And the output should contain:
|
88
|
-
"""
|
89
|
-
makeRed('background_0')
|
90
|
-
"""
|
91
|
-
|
@@ -1,767 +0,0 @@
|
|
1
|
-
Feature: JSON output formatter
|
2
|
-
In order to simplify processing of Cucumber features and results
|
3
|
-
Developers should be able to consume features as JSON
|
4
|
-
|
5
|
-
Background:
|
6
|
-
Given the standard step definitions
|
7
|
-
And a file named "features/one_passing_one_failing.feature" with:
|
8
|
-
"""
|
9
|
-
@a
|
10
|
-
Feature: One passing scenario, one failing scenario
|
11
|
-
|
12
|
-
@b
|
13
|
-
Scenario: Passing
|
14
|
-
Given this step passes
|
15
|
-
|
16
|
-
@c
|
17
|
-
Scenario: Failing
|
18
|
-
Given this step fails
|
19
|
-
"""
|
20
|
-
And a file named "features/step_definitions/json_steps.rb" with:
|
21
|
-
"""
|
22
|
-
Given /^I embed a screenshot/ do
|
23
|
-
File.open("screenshot.png", "w") { |file| file << "foo" }
|
24
|
-
embed "screenshot.png", "image/png"
|
25
|
-
end
|
26
|
-
|
27
|
-
Given /^I print from step definition/ do
|
28
|
-
puts "from step definition"
|
29
|
-
end
|
30
|
-
|
31
|
-
Given /^I embed data directly/ do
|
32
|
-
data = "YWJj"
|
33
|
-
embed data, "mime-type;base64"
|
34
|
-
end
|
35
|
-
"""
|
36
|
-
And a file named "features/embed.feature" with:
|
37
|
-
"""
|
38
|
-
Feature: A screenshot feature
|
39
|
-
|
40
|
-
Scenario:
|
41
|
-
Given I embed a screenshot
|
42
|
-
|
43
|
-
"""
|
44
|
-
And a file named "features/outline.feature" with:
|
45
|
-
"""
|
46
|
-
Feature: An outline feature
|
47
|
-
|
48
|
-
Scenario Outline: outline
|
49
|
-
Given this step <status>
|
50
|
-
|
51
|
-
Examples: examples1
|
52
|
-
| status |
|
53
|
-
| passes |
|
54
|
-
| fails |
|
55
|
-
|
56
|
-
Examples: examples2
|
57
|
-
| status |
|
58
|
-
| passes |
|
59
|
-
"""
|
60
|
-
And a file named "features/print_from_step_definition.feature" with:
|
61
|
-
"""
|
62
|
-
Feature: A print from step definition feature
|
63
|
-
|
64
|
-
Scenario:
|
65
|
-
Given I print from step definition
|
66
|
-
And I print from step definition
|
67
|
-
|
68
|
-
"""
|
69
|
-
And a file named "features/print_from_step_definition.feature" with:
|
70
|
-
"""
|
71
|
-
Feature: A print from step definition feature
|
72
|
-
|
73
|
-
Scenario:
|
74
|
-
Given I print from step definition
|
75
|
-
And I print from step definition
|
76
|
-
|
77
|
-
"""
|
78
|
-
And a file named "features/embed_data_directly.feature" with:
|
79
|
-
"""
|
80
|
-
Feature: An embed data directly feature
|
81
|
-
|
82
|
-
Scenario:
|
83
|
-
Given I embed data directly
|
84
|
-
|
85
|
-
Scenario Outline:
|
86
|
-
Given I embed data directly
|
87
|
-
|
88
|
-
Examples:
|
89
|
-
| dummy |
|
90
|
-
| 1 |
|
91
|
-
| 2 |
|
92
|
-
|
93
|
-
"""
|
94
|
-
And a file named "features/out_scenario_out_scenario_outline.feature" with:
|
95
|
-
"""
|
96
|
-
Feature:
|
97
|
-
Scenario:
|
98
|
-
Given this step passes
|
99
|
-
Scenario Outline:
|
100
|
-
Given this step <status>
|
101
|
-
Examples:
|
102
|
-
| status |
|
103
|
-
| passes |
|
104
|
-
"""
|
105
|
-
|
106
|
-
# Need to investigate why this won't pass in-process. error_message doesn't get det?
|
107
|
-
@spawn @todo-windows
|
108
|
-
Scenario: one feature, one passing scenario, one failing scenario
|
109
|
-
When I run `cucumber --format json features/one_passing_one_failing.feature`
|
110
|
-
Then it should fail with JSON:
|
111
|
-
"""
|
112
|
-
[
|
113
|
-
{
|
114
|
-
"uri": "features/one_passing_one_failing.feature",
|
115
|
-
"keyword": "Feature",
|
116
|
-
"id": "one-passing-scenario,-one-failing-scenario",
|
117
|
-
"name": "One passing scenario, one failing scenario",
|
118
|
-
"line": 2,
|
119
|
-
"description": "",
|
120
|
-
"tags": [
|
121
|
-
{
|
122
|
-
"name": "@a",
|
123
|
-
"line": 1
|
124
|
-
}
|
125
|
-
],
|
126
|
-
"elements": [
|
127
|
-
{
|
128
|
-
"keyword": "Scenario",
|
129
|
-
"id": "one-passing-scenario,-one-failing-scenario;passing",
|
130
|
-
"name": "Passing",
|
131
|
-
"line": 5,
|
132
|
-
"description": "",
|
133
|
-
"tags": [
|
134
|
-
{
|
135
|
-
"name": "@a",
|
136
|
-
"line": 1
|
137
|
-
},
|
138
|
-
{
|
139
|
-
"name": "@b",
|
140
|
-
"line": 4
|
141
|
-
}
|
142
|
-
],
|
143
|
-
"type": "scenario",
|
144
|
-
"steps": [
|
145
|
-
{
|
146
|
-
"keyword": "Given ",
|
147
|
-
"name": "this step passes",
|
148
|
-
"line": 6,
|
149
|
-
"match": {
|
150
|
-
"location": "features/step_definitions/steps.rb:1"
|
151
|
-
},
|
152
|
-
"result": {
|
153
|
-
"status": "passed",
|
154
|
-
"duration": 1
|
155
|
-
}
|
156
|
-
}
|
157
|
-
]
|
158
|
-
},
|
159
|
-
{
|
160
|
-
"keyword": "Scenario",
|
161
|
-
"id": "one-passing-scenario,-one-failing-scenario;failing",
|
162
|
-
"name": "Failing",
|
163
|
-
"line": 9,
|
164
|
-
"description": "",
|
165
|
-
"tags": [
|
166
|
-
{
|
167
|
-
"name": "@a",
|
168
|
-
"line": 1
|
169
|
-
},
|
170
|
-
{
|
171
|
-
"name": "@c",
|
172
|
-
"line": 8
|
173
|
-
}
|
174
|
-
],
|
175
|
-
"type": "scenario",
|
176
|
-
"steps": [
|
177
|
-
{
|
178
|
-
"keyword": "Given ",
|
179
|
-
"name": "this step fails",
|
180
|
-
"line": 10,
|
181
|
-
"match": {
|
182
|
-
"location": "features/step_definitions/steps.rb:4"
|
183
|
-
},
|
184
|
-
"result": {
|
185
|
-
"status": "failed",
|
186
|
-
"error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/one_passing_one_failing.feature:10:in `Given this step fails'",
|
187
|
-
"duration": 1
|
188
|
-
}
|
189
|
-
}
|
190
|
-
]
|
191
|
-
}
|
192
|
-
]
|
193
|
-
}
|
194
|
-
]
|
195
|
-
|
196
|
-
"""
|
197
|
-
|
198
|
-
@spawn @todo-windows
|
199
|
-
Scenario: one feature, one passing scenario, one failing scenario with prettyfied json
|
200
|
-
When I run `cucumber --format json_pretty features/one_passing_one_failing.feature`
|
201
|
-
Then it should fail with JSON:
|
202
|
-
"""
|
203
|
-
[
|
204
|
-
{
|
205
|
-
"uri": "features/one_passing_one_failing.feature",
|
206
|
-
"keyword": "Feature",
|
207
|
-
"id": "one-passing-scenario,-one-failing-scenario",
|
208
|
-
"name": "One passing scenario, one failing scenario",
|
209
|
-
"line": 2,
|
210
|
-
"description": "",
|
211
|
-
"tags": [
|
212
|
-
{
|
213
|
-
"name": "@a",
|
214
|
-
"line": 1
|
215
|
-
}
|
216
|
-
],
|
217
|
-
"elements": [
|
218
|
-
{
|
219
|
-
"keyword": "Scenario",
|
220
|
-
"id": "one-passing-scenario,-one-failing-scenario;passing",
|
221
|
-
"name": "Passing",
|
222
|
-
"line": 5,
|
223
|
-
"description": "",
|
224
|
-
"tags": [
|
225
|
-
{
|
226
|
-
"name": "@a",
|
227
|
-
"line": 1
|
228
|
-
},
|
229
|
-
{
|
230
|
-
"name": "@b",
|
231
|
-
"line": 4
|
232
|
-
}
|
233
|
-
],
|
234
|
-
"type": "scenario",
|
235
|
-
"steps": [
|
236
|
-
{
|
237
|
-
"keyword": "Given ",
|
238
|
-
"name": "this step passes",
|
239
|
-
"line": 6,
|
240
|
-
"match": {
|
241
|
-
"location": "features/step_definitions/steps.rb:1"
|
242
|
-
},
|
243
|
-
"result": {
|
244
|
-
"status": "passed",
|
245
|
-
"duration": 1
|
246
|
-
}
|
247
|
-
}
|
248
|
-
]
|
249
|
-
},
|
250
|
-
{
|
251
|
-
"keyword": "Scenario",
|
252
|
-
"id": "one-passing-scenario,-one-failing-scenario;failing",
|
253
|
-
"name": "Failing",
|
254
|
-
"line": 9,
|
255
|
-
"description": "",
|
256
|
-
"tags": [
|
257
|
-
{
|
258
|
-
"name": "@a",
|
259
|
-
"line": 1
|
260
|
-
},
|
261
|
-
{
|
262
|
-
"name": "@c",
|
263
|
-
"line": 8
|
264
|
-
}
|
265
|
-
],
|
266
|
-
"type": "scenario",
|
267
|
-
"steps": [
|
268
|
-
{
|
269
|
-
"keyword": "Given ",
|
270
|
-
"name": "this step fails",
|
271
|
-
"line": 10,
|
272
|
-
"match": {
|
273
|
-
"location": "features/step_definitions/steps.rb:4"
|
274
|
-
},
|
275
|
-
"result": {
|
276
|
-
"status": "failed",
|
277
|
-
"error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/one_passing_one_failing.feature:10:in `Given this step fails'",
|
278
|
-
"duration": 1
|
279
|
-
}
|
280
|
-
}
|
281
|
-
]
|
282
|
-
}
|
283
|
-
]
|
284
|
-
}
|
285
|
-
]
|
286
|
-
|
287
|
-
"""
|
288
|
-
|
289
|
-
Scenario: DocString
|
290
|
-
Given a file named "features/doc_string.feature" with:
|
291
|
-
"""
|
292
|
-
Feature: A DocString feature
|
293
|
-
|
294
|
-
Scenario:
|
295
|
-
Then I should fail with
|
296
|
-
\"\"\"
|
297
|
-
a string
|
298
|
-
\"\"\"
|
299
|
-
"""
|
300
|
-
And a file named "features/step_definitions/steps.rb" with:
|
301
|
-
"""
|
302
|
-
Then /I should fail with/ do |s|
|
303
|
-
raise RuntimeError, s
|
304
|
-
end
|
305
|
-
"""
|
306
|
-
When I run `cucumber --format json features/doc_string.feature`
|
307
|
-
Then it should fail with JSON:
|
308
|
-
"""
|
309
|
-
[
|
310
|
-
{
|
311
|
-
"id": "a-docstring-feature",
|
312
|
-
"uri": "features/doc_string.feature",
|
313
|
-
"keyword": "Feature",
|
314
|
-
"name": "A DocString feature",
|
315
|
-
"line": 1,
|
316
|
-
"description": "",
|
317
|
-
"elements": [
|
318
|
-
{
|
319
|
-
"id": "a-docstring-feature;",
|
320
|
-
"keyword": "Scenario",
|
321
|
-
"name": "",
|
322
|
-
"line": 3,
|
323
|
-
"description": "",
|
324
|
-
"type": "scenario",
|
325
|
-
"steps": [
|
326
|
-
{
|
327
|
-
"keyword": "Then ",
|
328
|
-
"name": "I should fail with",
|
329
|
-
"line": 4,
|
330
|
-
"doc_string": {
|
331
|
-
"content_type": "",
|
332
|
-
"value": "a string",
|
333
|
-
"line": 5
|
334
|
-
},
|
335
|
-
"match": {
|
336
|
-
"location": "features/step_definitions/steps.rb:1"
|
337
|
-
},
|
338
|
-
"result": {
|
339
|
-
"status": "failed",
|
340
|
-
"error_message": "a string (RuntimeError)\n./features/step_definitions/steps.rb:2:in `/I should fail with/'\nfeatures/doc_string.feature:4:in `Then I should fail with'",
|
341
|
-
"duration": 1
|
342
|
-
}
|
343
|
-
}
|
344
|
-
]
|
345
|
-
}
|
346
|
-
]
|
347
|
-
}
|
348
|
-
]
|
349
|
-
"""
|
350
|
-
|
351
|
-
Scenario: embedding screenshot
|
352
|
-
When I run `cucumber --format json features/embed.feature`
|
353
|
-
Then it should pass with JSON:
|
354
|
-
"""
|
355
|
-
[
|
356
|
-
{
|
357
|
-
"uri": "features/embed.feature",
|
358
|
-
"id": "a-screenshot-feature",
|
359
|
-
"keyword": "Feature",
|
360
|
-
"name": "A screenshot feature",
|
361
|
-
"line": 1,
|
362
|
-
"description": "",
|
363
|
-
"elements": [
|
364
|
-
{
|
365
|
-
"id": "a-screenshot-feature;",
|
366
|
-
"keyword": "Scenario",
|
367
|
-
"name": "",
|
368
|
-
"line": 3,
|
369
|
-
"description": "",
|
370
|
-
"type": "scenario",
|
371
|
-
"steps": [
|
372
|
-
{
|
373
|
-
"keyword": "Given ",
|
374
|
-
"name": "I embed a screenshot",
|
375
|
-
"line": 4,
|
376
|
-
"embeddings": [
|
377
|
-
{
|
378
|
-
"mime_type": "image/png",
|
379
|
-
"data": "Zm9v"
|
380
|
-
}
|
381
|
-
],
|
382
|
-
"match": {
|
383
|
-
"location": "features/step_definitions/json_steps.rb:1"
|
384
|
-
},
|
385
|
-
"result": {
|
386
|
-
"status": "passed",
|
387
|
-
"duration": 1
|
388
|
-
}
|
389
|
-
}
|
390
|
-
]
|
391
|
-
}
|
392
|
-
]
|
393
|
-
}
|
394
|
-
]
|
395
|
-
|
396
|
-
"""
|
397
|
-
|
398
|
-
@spawn @todo-windows
|
399
|
-
Scenario: scenario outline
|
400
|
-
When I run `cucumber --format json features/outline.feature`
|
401
|
-
Then it should fail with JSON:
|
402
|
-
"""
|
403
|
-
[
|
404
|
-
{
|
405
|
-
"uri": "features/outline.feature",
|
406
|
-
"id": "an-outline-feature",
|
407
|
-
"keyword": "Feature",
|
408
|
-
"name": "An outline feature",
|
409
|
-
"line": 1,
|
410
|
-
"description": "",
|
411
|
-
"elements": [
|
412
|
-
{
|
413
|
-
"id": "an-outline-feature;outline;examples1;2",
|
414
|
-
"keyword": "Scenario Outline",
|
415
|
-
"name": "outline",
|
416
|
-
"description": "",
|
417
|
-
"line": 8,
|
418
|
-
"type": "scenario",
|
419
|
-
"steps": [
|
420
|
-
{
|
421
|
-
"keyword": "Given ",
|
422
|
-
"name": "this step passes",
|
423
|
-
"line": 8,
|
424
|
-
"match": {
|
425
|
-
"location": "features/step_definitions/steps.rb:1"
|
426
|
-
},
|
427
|
-
"result": {
|
428
|
-
"status": "passed",
|
429
|
-
"duration": 1
|
430
|
-
}
|
431
|
-
}
|
432
|
-
]
|
433
|
-
},
|
434
|
-
{
|
435
|
-
"id": "an-outline-feature;outline;examples1;3",
|
436
|
-
"keyword": "Scenario Outline",
|
437
|
-
"name": "outline",
|
438
|
-
"description": "",
|
439
|
-
"line": 9,
|
440
|
-
"type": "scenario",
|
441
|
-
"steps": [
|
442
|
-
{
|
443
|
-
"keyword": "Given ",
|
444
|
-
"name": "this step fails",
|
445
|
-
"line": 9,
|
446
|
-
"match": {
|
447
|
-
"location": "features/step_definitions/steps.rb:4"
|
448
|
-
},
|
449
|
-
"result": {
|
450
|
-
"status": "failed",
|
451
|
-
"error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/outline.feature:9:in `Given this step fails'\nfeatures/outline.feature:4:in `Given this step <status>'",
|
452
|
-
"duration": 1
|
453
|
-
}
|
454
|
-
}
|
455
|
-
]
|
456
|
-
},
|
457
|
-
{
|
458
|
-
"id": "an-outline-feature;outline;examples2;2",
|
459
|
-
"keyword": "Scenario Outline",
|
460
|
-
"name": "outline",
|
461
|
-
"description": "",
|
462
|
-
"line": 13,
|
463
|
-
"type": "scenario",
|
464
|
-
"steps": [
|
465
|
-
{
|
466
|
-
"keyword": "Given ",
|
467
|
-
"name": "this step passes",
|
468
|
-
"line": 13,
|
469
|
-
"match": {
|
470
|
-
"location": "features/step_definitions/steps.rb:1"
|
471
|
-
},
|
472
|
-
"result": {
|
473
|
-
"status": "passed",
|
474
|
-
"duration": 1
|
475
|
-
}
|
476
|
-
}
|
477
|
-
]
|
478
|
-
}
|
479
|
-
]
|
480
|
-
}
|
481
|
-
]
|
482
|
-
|
483
|
-
"""
|
484
|
-
|
485
|
-
Scenario: print from step definition
|
486
|
-
When I run `cucumber --format json features/print_from_step_definition.feature`
|
487
|
-
Then it should pass with JSON:
|
488
|
-
"""
|
489
|
-
[
|
490
|
-
{
|
491
|
-
"uri": "features/print_from_step_definition.feature",
|
492
|
-
"id": "a-print-from-step-definition-feature",
|
493
|
-
"keyword": "Feature",
|
494
|
-
"name": "A print from step definition feature",
|
495
|
-
"line": 1,
|
496
|
-
"description": "",
|
497
|
-
"elements": [
|
498
|
-
{
|
499
|
-
"id": "a-print-from-step-definition-feature;",
|
500
|
-
"keyword": "Scenario",
|
501
|
-
"name": "",
|
502
|
-
"line": 3,
|
503
|
-
"description": "",
|
504
|
-
"type": "scenario",
|
505
|
-
"steps": [
|
506
|
-
{
|
507
|
-
"keyword": "Given ",
|
508
|
-
"name": "I print from step definition",
|
509
|
-
"line": 4,
|
510
|
-
"output": [
|
511
|
-
"from step definition"
|
512
|
-
],
|
513
|
-
"match": {
|
514
|
-
"location": "features/step_definitions/json_steps.rb:6"
|
515
|
-
},
|
516
|
-
"result": {
|
517
|
-
"status": "passed",
|
518
|
-
"duration": 1
|
519
|
-
}
|
520
|
-
},
|
521
|
-
{
|
522
|
-
"keyword": "And ",
|
523
|
-
"name": "I print from step definition",
|
524
|
-
"line": 5,
|
525
|
-
"output": [
|
526
|
-
"from step definition"
|
527
|
-
],
|
528
|
-
"match": {
|
529
|
-
"location": "features/step_definitions/json_steps.rb:6"
|
530
|
-
},
|
531
|
-
"result": {
|
532
|
-
"status": "passed",
|
533
|
-
"duration": 1
|
534
|
-
}
|
535
|
-
}
|
536
|
-
]
|
537
|
-
}
|
538
|
-
]
|
539
|
-
}
|
540
|
-
]
|
541
|
-
|
542
|
-
"""
|
543
|
-
|
544
|
-
@spawn @todo-windows
|
545
|
-
Scenario: scenario outline expanded
|
546
|
-
When I run `cucumber --expand --format json features/outline.feature`
|
547
|
-
Then it should fail with JSON:
|
548
|
-
"""
|
549
|
-
[
|
550
|
-
{
|
551
|
-
"uri": "features/outline.feature",
|
552
|
-
"id": "an-outline-feature",
|
553
|
-
"keyword": "Feature",
|
554
|
-
"name": "An outline feature",
|
555
|
-
"line": 1,
|
556
|
-
"description": "",
|
557
|
-
"elements": [
|
558
|
-
{
|
559
|
-
"id": "an-outline-feature;outline;examples1;2",
|
560
|
-
"keyword": "Scenario Outline",
|
561
|
-
"name": "outline",
|
562
|
-
"line": 8,
|
563
|
-
"description": "",
|
564
|
-
"type": "scenario",
|
565
|
-
"steps": [
|
566
|
-
{
|
567
|
-
"keyword": "Given ",
|
568
|
-
"name": "this step passes",
|
569
|
-
"line": 8,
|
570
|
-
"match": {
|
571
|
-
"location": "features/step_definitions/steps.rb:1"
|
572
|
-
},
|
573
|
-
"result": {
|
574
|
-
"status": "passed",
|
575
|
-
"duration": 1
|
576
|
-
}
|
577
|
-
}
|
578
|
-
]
|
579
|
-
},
|
580
|
-
{
|
581
|
-
"id": "an-outline-feature;outline;examples1;3",
|
582
|
-
"keyword": "Scenario Outline",
|
583
|
-
"name": "outline",
|
584
|
-
"line": 9,
|
585
|
-
"description": "",
|
586
|
-
"type": "scenario",
|
587
|
-
"steps": [
|
588
|
-
{
|
589
|
-
"keyword": "Given ",
|
590
|
-
"name": "this step fails",
|
591
|
-
"line": 9,
|
592
|
-
"match": {
|
593
|
-
"location": "features/step_definitions/steps.rb:4"
|
594
|
-
},
|
595
|
-
"result": {
|
596
|
-
"status": "failed",
|
597
|
-
"error_message" : " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/outline.feature:9:in `Given this step fails'\nfeatures/outline.feature:4:in `Given this step <status>'",
|
598
|
-
"duration": 1
|
599
|
-
}
|
600
|
-
}
|
601
|
-
]
|
602
|
-
},
|
603
|
-
{
|
604
|
-
"id": "an-outline-feature;outline;examples2;2",
|
605
|
-
"keyword": "Scenario Outline",
|
606
|
-
"name": "outline",
|
607
|
-
"line": 13,
|
608
|
-
"description": "",
|
609
|
-
"type": "scenario",
|
610
|
-
"steps": [
|
611
|
-
{
|
612
|
-
"keyword": "Given ",
|
613
|
-
"name": "this step passes",
|
614
|
-
"line": 13,
|
615
|
-
"match": {
|
616
|
-
"location": "features/step_definitions/steps.rb:1"
|
617
|
-
},
|
618
|
-
"result": {
|
619
|
-
"status": "passed",
|
620
|
-
"duration": 1
|
621
|
-
}
|
622
|
-
}
|
623
|
-
]
|
624
|
-
}
|
625
|
-
]
|
626
|
-
}
|
627
|
-
]
|
628
|
-
|
629
|
-
"""
|
630
|
-
|
631
|
-
Scenario: embedding data directly
|
632
|
-
When I run `cucumber --format json -x features/embed_data_directly.feature`
|
633
|
-
Then it should pass with JSON:
|
634
|
-
"""
|
635
|
-
[
|
636
|
-
{
|
637
|
-
"uri": "features/embed_data_directly.feature",
|
638
|
-
"id": "an-embed-data-directly-feature",
|
639
|
-
"keyword": "Feature",
|
640
|
-
"name": "An embed data directly feature",
|
641
|
-
"line": 1,
|
642
|
-
"description": "",
|
643
|
-
"elements": [
|
644
|
-
{
|
645
|
-
"id": "an-embed-data-directly-feature;",
|
646
|
-
"keyword": "Scenario",
|
647
|
-
"name": "",
|
648
|
-
"line": 3,
|
649
|
-
"description": "",
|
650
|
-
"type": "scenario",
|
651
|
-
"steps": [
|
652
|
-
{
|
653
|
-
"keyword": "Given ",
|
654
|
-
"name": "I embed data directly",
|
655
|
-
"line": 4,
|
656
|
-
"embeddings": [
|
657
|
-
{
|
658
|
-
"mime_type": "mime-type",
|
659
|
-
"data": "YWJj"
|
660
|
-
}
|
661
|
-
],
|
662
|
-
"match": {
|
663
|
-
"location": "features/step_definitions/json_steps.rb:10"
|
664
|
-
},
|
665
|
-
"result": {
|
666
|
-
"status": "passed",
|
667
|
-
"duration": 1
|
668
|
-
}
|
669
|
-
}
|
670
|
-
]
|
671
|
-
},
|
672
|
-
{
|
673
|
-
"keyword": "Scenario Outline",
|
674
|
-
"name": "",
|
675
|
-
"line": 11,
|
676
|
-
"description": "",
|
677
|
-
"id": "an-embed-data-directly-feature;;;2",
|
678
|
-
"type": "scenario",
|
679
|
-
"steps": [
|
680
|
-
{
|
681
|
-
"keyword": "Given ",
|
682
|
-
"name": "I embed data directly",
|
683
|
-
"line": 11,
|
684
|
-
"embeddings": [
|
685
|
-
{
|
686
|
-
"mime_type": "mime-type",
|
687
|
-
"data": "YWJj"
|
688
|
-
}
|
689
|
-
],
|
690
|
-
"match": {
|
691
|
-
"location": "features/step_definitions/json_steps.rb:10"
|
692
|
-
},
|
693
|
-
"result": {
|
694
|
-
"status": "passed",
|
695
|
-
"duration": 1
|
696
|
-
}
|
697
|
-
}
|
698
|
-
]
|
699
|
-
},
|
700
|
-
{
|
701
|
-
"keyword": "Scenario Outline",
|
702
|
-
"name": "",
|
703
|
-
"line": 12,
|
704
|
-
"description": "",
|
705
|
-
"id": "an-embed-data-directly-feature;;;3",
|
706
|
-
"type": "scenario",
|
707
|
-
"steps": [
|
708
|
-
{
|
709
|
-
"keyword": "Given ",
|
710
|
-
"name": "I embed data directly",
|
711
|
-
"line": 12,
|
712
|
-
"embeddings": [
|
713
|
-
{
|
714
|
-
"mime_type": "mime-type",
|
715
|
-
"data": "YWJj"
|
716
|
-
}
|
717
|
-
],
|
718
|
-
"match": {
|
719
|
-
"location": "features/step_definitions/json_steps.rb:10"
|
720
|
-
},
|
721
|
-
"result": {
|
722
|
-
"status": "passed",
|
723
|
-
"duration": 1
|
724
|
-
}
|
725
|
-
}
|
726
|
-
]
|
727
|
-
}
|
728
|
-
]
|
729
|
-
}
|
730
|
-
]
|
731
|
-
|
732
|
-
"""
|
733
|
-
Scenario: handle output from hooks
|
734
|
-
Given a file named "features/step_definitions/output_steps.rb" with:
|
735
|
-
"""
|
736
|
-
Before do
|
737
|
-
puts "Before hook 1"
|
738
|
-
embed "src", "mime_type", "label"
|
739
|
-
end
|
740
|
-
|
741
|
-
Before do
|
742
|
-
puts "Before hook 2"
|
743
|
-
embed "src", "mime_type", "label"
|
744
|
-
end
|
745
|
-
|
746
|
-
AfterStep do
|
747
|
-
puts "AfterStep hook 1"
|
748
|
-
embed "src", "mime_type", "label"
|
749
|
-
end
|
750
|
-
|
751
|
-
AfterStep do
|
752
|
-
puts "AfterStep hook 2"
|
753
|
-
embed "src", "mime_type", "label"
|
754
|
-
end
|
755
|
-
|
756
|
-
After do
|
757
|
-
puts "After hook 1"
|
758
|
-
embed "src", "mime_type", "label"
|
759
|
-
end
|
760
|
-
|
761
|
-
After do
|
762
|
-
puts "After hook 2"
|
763
|
-
embed "src", "mime_type", "label"
|
764
|
-
end
|
765
|
-
"""
|
766
|
-
When I run `cucumber --format json features/out_scenario_out_scenario_outline.feature`
|
767
|
-
Then it should pass
|