Skip to content

cucumber/cucumber-ruby-core

Repository files navigation

Cucumber Open - Supported by Smartbear

Cucumber

OpenCollective OpenCollective pull requests issues Test cucumber-core Code Climate

Cucumber is a tool for running automated tests written in plain language. Because they're written in plain language, they can be read by anyone on your team. Because they can be read by anyone, you can use them to help improve communication, collaboration and trust on your team.

Cucumber Gherkin Example

Cucumber Core is the inner hexagon for the Ruby flavour of Cucumber.

It contains the core domain logic to execute Cucumber features. It has no user interface, just a Ruby API. If you're interested in how Cucumber works, or in building other tools that work with Gherkin documents, you've come to the right place.

See CONTRIBUTING.md for info on contributing to Cucumber (issues, PRs, etc.).

Everyone interacting in this codebase and issue tracker is expected to follow the Cucumber code of conduct.

Installation

cucumber-core is a Ruby gem. Install it as you would install any gem: add cucumber-core to your Gemfile:

gem 'cucumber-core'

then install it:

$ bundle

or install the gem directly:

$ gem install cucumber-core

Supported platforms

  • Ruby 3.3
  • Ruby 3.2
  • Ruby 3.1
  • Ruby 3.0
  • Ruby 2.7
  • Ruby 2.6
  • Ruby 2.5
  • JRuby 9.4 (with some limitations)

Usage

The following example aims to illustrate how to use cucumber-core gem and to make sure it is working well within your environment. For more details explanation on what it actually does and how to work with it, see docs/ARCHITECTURE.md.

# cucumber_core_example.rb

require 'cucumber/core'
require 'cucumber/core/filter'

class ActivateSteps < Cucumber::Core::Filter.new
  def test_case(test_case)
    test_steps = test_case.test_steps.map do |step|
      step.with_action { print "processing: " }
    end

    test_case.with_steps(test_steps).describe_to(receiver)
  end
end

feature = Cucumber::Core::Gherkin::Document.new(__FILE__, <<-GHERKIN)
Feature:
  Scenario:
    Given some requirements
    When we do something
    Then it should pass
GHERKIN

class MyRunner
  include Cucumber::Core
end

MyRunner.new.execute([feature], [ActivateSteps.new]) do |events|
  events.on(:test_step_finished) do |event|
    test_step, result = event.test_step, event.result
    print "#{test_step.text} #{result}\n"
  end
end

If you run this Ruby script:

ruby cucumber_core_example.rb

You should see the following output:

processing: some requirements ✓
processing: we do something ✓
processing: it should pass ✓

Documentation and support

Copyright

Copyright (c) Cucumber Ltd. and Contributors. See LICENSE for details.