{"id":13712039,"url":"https://github.com/cucumber/cucumber-ruby-core","last_synced_at":"2025-12-24T11:30:30.921Z","repository":{"id":811441,"uuid":"10453695","full_name":"cucumber/cucumber-ruby-core","owner":"cucumber","description":"Core library for the Ruby flavour of Cucumber","archived":false,"fork":false,"pushed_at":"2025-03-31T08:38:21.000Z","size":1492,"stargazers_count":35,"open_issues_count":4,"forks_count":52,"subscribers_count":84,"default_branch":"main","last_synced_at":"2025-04-29T07:03:47.163Z","etag":null,"topics":["cucumber","polyglot-release","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cucumber.png","metadata":{"funding":{"open_collective":"cucumber","github":"cucumber"},"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-06-03T12:03:32.000Z","updated_at":"2025-03-31T08:38:25.000Z","dependencies_parsed_at":"2023-09-29T12:47:05.655Z","dependency_job_id":"2c4f2bd0-6fb4-4e0c-b16f-ec38eae4dd7d","html_url":"https://github.com/cucumber/cucumber-ruby-core","commit_stats":{"total_commits":845,"total_committers":57,"mean_commits":"14.824561403508772","dds":0.6295857988165681,"last_synced_commit":"fb1f1df69c47ca5f8b77b2706cdcbee3d4160241"},"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cucumber","download_url":"https://codeload.github.com/cucumber/cucumber-ruby-core/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251662408,"owners_count":21623659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cucumber","polyglot-release","ruby"],"created_at":"2024-08-02T23:01:14.307Z","updated_at":"2025-12-24T11:30:30.872Z","avatar_url":"https://github.com/cucumber.png","language":"Ruby","readme":"\u003cimg src=\".github/img/logo.svg\" alt=\"\" width=\"75\" /\u003e\n\n# Cucumber\n\n[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://vshymanskyy.github.io/StandWithUkraine)\n[![OpenCollective](https://opencollective.com/cucumber/backers/badge.svg)](https://opencollective.com/cucumber)\n[![OpenCollective](https://opencollective.com/cucumber/sponsors/badge.svg)](https://opencollective.com/cucumber)\n[![Test cucumber-core](https://github.com/cucumber/cucumber-ruby-core/actions/workflows/test.yml/badge.svg)](https://github.com/cucumber/cucumber-ruby-core/actions/workflows/test.yml)\n[![Code Climate](https://codeclimate.com/github/cucumber/cucumber-ruby-core.svg)](https://codeclimate.com/github/cucumber/cucumber-ruby-core)\n\nCucumber is a tool for running automated tests written in plain language. Because they're\nwritten in plain language, they can be read by anyone on your team. Because they can be\nread by anyone, you can use them to help improve communication, collaboration and trust on\nyour team.\n\n\u003cimg src=\"./.github/img/gherkin-example.png\" alt=\"Cucumber Gherkin Example\" width=\"728\" /\u003e\n\nCucumber Core is the [inner hexagon](https://en.wikipedia.org/wiki/Hexagonal_architecture_(software))\nfor the [Ruby flavour of Cucumber](https://github.com/cucumber/cucumber-ruby).\n\nIt contains the core domain logic to execute Cucumber features. It has no user interface,\njust a Ruby API. If you're interested in how Cucumber works, or in building other\ntools that work with Gherkin documents, you've come to the right place.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for info on contributing to Cucumber (issues,\nPRs, etc.).\n\nEveryone interacting in this codebase and issue tracker is expected to follow the\nCucumber [code of conduct](https://cucumber.io/conduct).\n\n## Installation\n\n`cucumber-core` is a Ruby gem. Install it as you would install any gem: add\n`cucumber-core` to your Gemfile:\n\n    gem 'cucumber-core'\n\nthen install it:\n\n    $ bundle\n\nor install the gem directly:\n\n    $ gem install cucumber-core\n\n### Supported platforms\n\n- Ruby 3.3\n- Ruby 3.2\n- Ruby 3.1\n- Ruby 3.0\n- JRuby 9.4 (with [some limitations](https://github.com/cucumber/cucumber-ruby/blob/main/docs/jruby-limitations.md))\n\n## Usage\n\nThe following example aims to illustrate how to use `cucumber-core` gem and to\nmake sure it is working well within your environment. For more details\nexplanation on what it actually does and how to work with it, see\n[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).\n\n```ruby\n# cucumber_core_example.rb\n\nrequire 'cucumber/core'\nrequire 'cucumber/core/filter'\n\nclass ActivateSteps \u003c Cucumber::Core::Filter.new\n  def test_case(test_case)\n    test_steps = test_case.test_steps.map do |step|\n      step.with_action { print \"processing: \" }\n    end\n\n    test_case.with_steps(test_steps).describe_to(receiver)\n  end\nend\n\nfeature = Cucumber::Core::Gherkin::Document.new(__FILE__, \u003c\u003c-GHERKIN)\nFeature:\n  Scenario:\n    Given some requirements\n    When we do something\n    Then it should pass\nGHERKIN\n\nclass MyRunner\n  include Cucumber::Core\nend\n\nMyRunner.new.execute([feature], [ActivateSteps.new]) do |events|\n  events.on(:test_step_finished) do |event|\n    test_step, result = event.test_step, event.result\n    print \"#{test_step.text} #{result}\\n\"\n  end\nend\n```\n\nIf you run this Ruby script:\n\n```shell\nruby cucumber_core_example.rb\n```\n\nYou should see the following output:\n\n```\nprocessing: some requirements ✓\nprocessing: we do something ✓\nprocessing: it should pass ✓\n```\n\n## Documentation and support\n\n- Getting started with Cucumber, writing features, step definitions, and more: https://cucumber.io/docs\n- Discord ([invite link here](https://cucumber.io/docs/community/get-in-touch/#discord))\n- `cucumber-core` overview: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)\n- How to work with local repositories for `cucumber-gherkin`, `cucumber-messages` or `cucumber-ruby`: [CONTRIBUTING.md#working-with-local-cucumber-dependencies](./CONTRIBUTING.md#working-with-local-cucumber-dependencies)\n\n## Copyright\n\nCopyright (c) Cucumber Ltd. and Contributors. See LICENSE for details.\n","funding_links":["https://opencollective.com/cucumber","https://github.com/sponsors/cucumber"],"categories":["By Technology"],"sub_categories":["Ruby"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcucumber%2Fcucumber-ruby-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcucumber%2Fcucumber-ruby-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcucumber%2Fcucumber-ruby-core/lists"}