{"id":13440346,"url":"https://github.com/cucumber/cucumber-ruby","last_synced_at":"2026-04-14T10:01:17.597Z","repository":{"id":392848,"uuid":"10664","full_name":"cucumber/cucumber-ruby","owner":"cucumber","description":"Cucumber for Ruby. It's amazing!","archived":false,"fork":false,"pushed_at":"2026-04-09T10:12:40.000Z","size":17033,"stargazers_count":5210,"open_issues_count":28,"forks_count":1117,"subscribers_count":224,"default_branch":"main","last_synced_at":"2026-04-11T23:13:49.340Z","etag":null,"topics":["cucumber","polyglot-release","ruby","tidelift"],"latest_commit_sha":null,"homepage":"https://cucumber.io","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":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"cucumber","github":"cucumber"}},"created_at":"2008-04-17T18:19:13.000Z","updated_at":"2026-04-11T09:16:12.000Z","dependencies_parsed_at":"2026-01-03T05:09:52.283Z","dependency_job_id":null,"html_url":"https://github.com/cucumber/cucumber-ruby","commit_stats":null,"previous_names":[],"tags_count":278,"template":false,"template_full_name":null,"purl":"pkg:github/cucumber/cucumber-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cucumber","download_url":"https://codeload.github.com/cucumber/cucumber-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cucumber%2Fcucumber-ruby/sbom","scorecard":{"id":43442,"data":{"date":"2025-08-11","repo":{"name":"github.com/cucumber/cucumber-ruby","commit":"e4f68e56157914d9ac4d4ce2b699be679add15b9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.2,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yaml:52","Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/rubocop.yaml:1","Warn: no topLevel permission defined: .github/workflows/test.yaml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":2,"reason":"Found 6/29 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":5,"reason":"5 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rubocop.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/rubocop.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rubocop.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/rubocop.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/cucumber/cucumber-ruby/test.yaml/main?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/cucumber/.github/SECURITY.md:1","Info: Found linked content: github.com/cucumber/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/cucumber/.github/SECURITY.md:1","Info: Found text in security policy: github.com/cucumber/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T22:07:53.726Z","repository_id":392848,"created_at":"2025-08-14T22:07:53.726Z","updated_at":"2025-08-14T22:07:53.726Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31791171,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","tidelift"],"created_at":"2024-07-31T03:01:21.912Z","updated_at":"2026-04-14T10:01:17.590Z","avatar_url":"https://github.com/cucumber.png","language":"Ruby","readme":"\u003cimg src=\"docs/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](https://github.com/cucumber/cucumber-ruby/actions/workflows/test.yaml/badge.svg)](https://github.com/cucumber/cucumber-ruby/actions/workflows/test.yaml)\n[![Code Climate](https://codeclimate.com/github/cucumber/cucumber-ruby.svg)](https://codeclimate.com/github/cucumber/cucumber-ruby)\n[![Coverage Status](https://coveralls.io/repos/cucumber/cucumber-ruby/badge.svg?branch=main)](https://coveralls.io/r/cucumber/cucumber-ruby?branch=main)\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=\"docs/img/gherkin-example.png\" alt=\"Cucumber Gherkin Example\" width=\"728\" /\u003e\n\nThis is the Ruby implementation of Cucumber. Cucumber is also available for [JavaScript](https://github.com/cucumber/cucumber-js),\n[Java](https://github.com/cucumber/cucumber-jvm), and a lot of other languages. You can find a list of implementations here: https://cucumber.io/docs/installation/.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for info on contributing to Cucumber (issues, PRs, 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\nCucumber for Ruby is a Ruby gem. Install it as you would install any gem: add\n`cucumber` to your Gemfile:\n\n    gem 'cucumber'\n\nthen install it:\n\n    $ bundle\n\nor install the gem directly:\n\n    $ gem install cucumber\n\nLater in this document, bundler is considered being used so all commands are using\n`bundle exec`. If this is not the case for you, execute `cucumber` directly, without\n`bundle exec`.\n\n### Supported platforms\n\n- Ruby 3.4\n- Ruby 3.3\n- Ruby 3.2\n- Ruby 3.1\n- TruffleRuby 24.0.0+\n- JRuby 9.4+ (with [some limitations](https://github.com/cucumber/cucumber-ruby/blob/main/docs/jruby-limitations.md))\n\n### Ruby on Rails\n\nUsing Ruby on Rails? You can use [cucumber-rails](https://github.com/cucumber/cucumber-rails) to bring Cucumber into your Rails project.\n\n## Usage\n\n### Initialization\n\nIf you need to, initialize your `features` directory with\n\n    $ bundle exec cucumber --init\n\nThis will create the following directories and files if they do not exist already:\n\n    features\n    ├── step_definitions\n    └── support\n        └── env.rb\n\n### Create your specification\n\nCreate a file named `rule.feature` in the `features` directory with:\n\n```gherkin\n# features/rule.feature\n\nFeature: Rule Sample\n\n  Rule: This is a rule\n\n    Example: A passing example\n      Given this will pass\n      When I do an action\n      Then some results should be there\n\n    Example: A failing example\n      Given this will fail\n      When I do an action\n      Then some results should be there\n```\n\n### Automate your specification\n\nAnd a file named `rule_steps.rb` in `features/step_definitions` with:\n\n```ruby\n# features/step_definitions/steps.rb\n\nGiven('this will pass') do\n  @this_will_pass = true\nend\n\nGiven('this will fail') do\n  @this_will_pass = false\nend\n\nWhen('I do an action') do\n  :no_op\nend\n\nThen(\"some results should be there\") do\n  expect(@this_will_pass).to be true\nend\n```\n\n### Run Cucumber\n\n    $ bundle exec cucumber\n\nTo execute a single feature file:\n\n    $ bundle exec cucumber features/rule.feature\n\nTo execute a single example, indicates the line of the name of the example:\n\n    $ bundle exec cucumber features/rule.feature:5\n\nTo summarize the results on the standard output, and generate a HTML report on disk:\n\n    $ bundle exec cucumber --format summary --format html --out report.html\n\nFor more command line options\n\n    $ bundle exec cucumber --help\n\nYou can also find documentation on the command line possibilities in [features/docs/cli](features/docs/cli).\n\n## Documentation and support\n\n- Getting started, writing features, step definitions, and more: https://cucumber.io/docs\n- Ruby API Documentation: http://www.rubydoc.info/github/cucumber/cucumber-ruby/\n- Community support forum: https://github.com/orgs/cucumber/discussions\n- Discord: [register for an account](https://cucumber.io/docs/community/get-in-touch#discord)\n\n## Copyright\n\nCopyright (c) Cucumber and Contributors. See LICENSE for details.\n","funding_links":["https://opencollective.com/cucumber","https://github.com/sponsors/cucumber"],"categories":["Ruby","By Technology"],"sub_categories":["Ruby"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcucumber%2Fcucumber-ruby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcucumber%2Fcucumber-ruby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcucumber%2Fcucumber-ruby/lists"}