{"id":36601066,"url":"https://github.com/qas-guru/martini-core","last_synced_at":"2026-01-12T08:38:26.887Z","repository":{"id":19857916,"uuid":"84025627","full_name":"qas-guru/martini-core","owner":"qas-guru","description":"Martini Behavior Driven Development Testing Framework for Java","archived":false,"fork":false,"pushed_at":"2022-12-16T05:14:46.000Z","size":373,"stargazers_count":5,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-03T13:51:35.685Z","etag":null,"topics":["bdd","bdd-framework","framework","gherkin","java","spring","testing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qas-guru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-06T03:26:19.000Z","updated_at":"2025-04-02T04:31:24.000Z","dependencies_parsed_at":"2023-01-13T20:38:13.013Z","dependency_job_id":null,"html_url":"https://github.com/qas-guru/martini-core","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/qas-guru/martini-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qas-guru%2Fmartini-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qas-guru%2Fmartini-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qas-guru%2Fmartini-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qas-guru%2Fmartini-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qas-guru","download_url":"https://codeload.github.com/qas-guru/martini-core/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qas-guru%2Fmartini-core/sbom","scorecard":{"id":752797,"data":{"date":"2025-08-11","repo":{"name":"github.com/qas-guru/martini-core","commit":"ab59f55a629e85b5010f113e6f47c90159a10e03"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":-1,"reason":"No tokens found","details":null,"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: 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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"Vulnerabilities","score":0,"reason":"14 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-4jrv-ppp4-jm57","Warn: Project is vulnerable to: GHSA-5mg8-w23w-74h3","Warn: Project is vulnerable to: GHSA-7g45-4rm6-3mm3","Warn: Project is vulnerable to: GHSA-36p3-wjmg-h94x","Warn: Project is vulnerable to: GHSA-hh26-6xwr-ggv7","Warn: Project is vulnerable to: GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: GHSA-4wp7-92pw-q264","Warn: Project is vulnerable to: GHSA-g5mm-vmx4-3rg7","Warn: Project is vulnerable to: GHSA-6gf2-pvqw-37ph","Warn: Project is vulnerable to: GHSA-rfmp-97jj-h8m6","Warn: Project is vulnerable to: GHSA-558x-2xjg-6232","Warn: Project is vulnerable to: GHSA-564r-hj7v-mcr5","Warn: Project is vulnerable to: GHSA-9cmq-m9j5-mvww","Warn: Project is vulnerable to: GHSA-wxqc-pxw9-g2p8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T20:48:22.020Z","repository_id":19857916,"created_at":"2025-08-22T20:48:22.020Z","updated_at":"2025-08-22T20:48:22.020Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28337599,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["bdd","bdd-framework","framework","gherkin","java","spring","testing"],"created_at":"2026-01-12T08:38:26.778Z","updated_at":"2026-01-12T08:38:26.879Z","avatar_url":"https://github.com/qas-guru.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Martini Core\n\n## Table of Contents\n1. [What is Martini?](#what)\n\t1. [What is Martini Core?](#what-core)\n1. [How does Martini work?](#how)\n\t1. [Spring Framework](#how-spring)\n1. [Who uses Martini?](#who)\n\t1. [Who uses Martini Core](#who-core)\n1. [What is Martini's Goal?](#goal)\n\t1. [How can your organization benefit from using Martini?](#goal-benefits)\n1. [Who develops and maintains Martini?](#ownership)\n\t1. [Recognition](#thanks)\n1. [More Information](#info)\n\n\n### What is Martini? \u003ca name=\"what\"\u003e\u003c/a\u003e\nMartini is an open-source [Behavior Driven Development (BDD)](https://www.agilealliance.org/glossary/bdd) testing \nframework for Java, similar in concept to Cucumber or JBehave. Martini provides multithreading, scenario lifecycle \nmanagement and flexible filtering by leveraging the Spring Framework.\n\n#### What is Martini Core? \u003ca name=\"what-core\"\u003e\u003c/a\u003e\nThis is the library which provides interfaces and default implementations supporting feature, scenario \nand step definitions as well as filtering, categorization and gating (throttling) concepts.\n\n### How does Martini Core work? \u003ca name=\"how\"\u003e\u003c/a\u003e\nThe library leverages the power of the [Spring Framework](https://spring.io/projects/spring-framework).\n\n#### It uses Spring to \u003ca name=\"how-spring\"\u003e\u003c/a\u003e\n* find .feature files using a ResourceResolver\n* identify step implementation classes with an extension of the @Component annotation\n* instantiate singleton step objects using BeanPostProcessor\n* resolve step methods using a MethodResolver\n* filter features and scenarios using Spring Expression Language (SpEL)\n* manage scenario lifecycles using a Scope\n* publish scenario lifecycle events using the @EventListener annotation\n* publish suite lifecycle events using the @EventListener annotation\n\n\n### Who uses Martini? \u003ca name=\"who\"\u003e\u003c/a\u003e\nMartini is designed to ensure software quality through use by an [Agile](https://www.agilealliance.org/agile101/) \nteam's [Three Amigos](https://www.agilealliance.org/glossary/three-amigos). The Three Amigos\ngenerally consists of at least a Product Owner, a Software Engineer and a Quality Assurance \nAutomation Engineer or Software Design Engineer in Test (SDET).\n\nThe Amigos should agree on feature specifications, then capture these specifications in \n[Gherkin](http://toolsqa.com/cucumber/gherkin/) as scenarios describing expected behavior.\n\n\n#### Who uses Martini Core? \u003ca name=\"who-core\"\u003e\u003c/a\u003e\nMartini Core is intended to be used by a Quality Assurance Automation Engineer with fluency in \nthe Java programming language and familiarity with the Spring Framework. The engineer uses Martini Core to\nimplement executable steps in a scenario.\n\n\n### What is Martini's goal? \u003ca name=\"goal\"\u003e\u003c/a\u003e\nMartini was designed to be an enterprise-level tool, solving fundamental problems encountered with other BDD \nframeworks.\n\n#### How can your organization benefit from using Martini? \u003ca name=\"goal-benefits\"\u003e\u003c/a\u003e\n* Martini tests are written in Java and leverage Spring, and as a result can be relatively easily and \nquickly implemented and understood by most Java programmers.\n\n* Other libraries may be incorporated into a Martini suite. For example, [Selenium](https://www.seleniumhq.org/)\nmay be used to launch a browser for each scenario testing a web application feature.\n\n* By default, Martini executes scenarios in parallel. Test suites executed on a multi-CPU system will complete much\nfaster than in a suite written for a single-threaded virtual machine, such as with Ruby or Python.\n\n* As Martini executes in parallel, application deadlock issues may be detected through regular testing.\n\n* Martini suites can be executed in cloud environments. \n\n* Martini has a first-class concept of hierarchical test categories, useful for subsystem test failure\nreporting and selective test filtering. \n\n* Martini leverages Spring Expression Language, allowing for nested boolean filtering of test scenario\nexecution.\n\n* Martini provides the capability filtering based on test category, test feature, individual scenario or \neven resource location.\n\n* Martini functional test suites may be leveraged with use of the Martini JMeter plugin.\n\n* Resource-intensive scenarios may be gated, preventing crashes of the application under test.\n\n\n### Who develops and maintains Martini? \u003ca name=\"ownership\"\u003e\u003c/a\u003e\n\nMartini was developed by Penny Rohr Curich through Digital Measures' sabbatical program in the Spring\nof 2017 as the organic result of discussions regarding automation testing improvement by QA team peers.\n\nMartini continues to be enhanced by Penny through 2018 to accomodate dependency release updates and as\nDigital Measures by Watermark's QA needs arise.\n\nRequests for outside contribution are welcome!\n\n#### Recognitions from Penny \u003ca name=\"thanks\"\u003e\u003c/a\u003e\n* A big thank you to [Aslak Hellesøy](http://aslakhellesoy.com/) et al, for creating, releasing and \nmaintaining Cucumber.\n* Thank you to [Rod Johnson](https://en.wikipedia.org/wiki/Rod_Johnson_(programmer)) et al, for creating, releasing \nand maintaining Spring.\n* Thank you to [Cedric Beust](https://beust.com), for all the great Java contributions over the years.\n* Thank you to [Digital Measures](https://www.digitalmeasures.com/) CEO Matt Bartel and CTO Michael Rentas for \nsponsoring employee sabbaticals.\n* Thank you to friends at Spotify (you know who you are) for the open-source encouragement. \"**The worst thing\nthat can happen is that nobody pays any attention.**\"\n* Thank you to Ethan Jahns, formerly of Digital Measures, for soundboarding ideas and for forking an \nimproved Gherkin parser.\n* Thank you to John Kieffer and Benjamin Newman at Digital Measures for encouragement.\n\n\n### Where can I find more information on Martini? \u003ca name=\"info\"\u003e\u003c/a\u003e\n\n#### In Progress: [Martini Core Wiki](https://github.com/qas-guru/martini-core/wiki) \u003ca name=\"wiki\"\u003e\u003c/a\u003e\n\n#### In Progress: [__Martini - swank software testing in Java__](https://leanpub.com/martini) \u003ca name=\"book\"\u003e\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqas-guru%2Fmartini-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqas-guru%2Fmartini-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqas-guru%2Fmartini-core/lists"}