{"id":13588780,"url":"https://github.com/serenity-js/serenity-js","last_synced_at":"2026-02-14T08:01:06.647Z","repository":{"id":37427510,"uuid":"61308714","full_name":"serenity-js/serenity-js","owner":"serenity-js","description":"A next generation, full-stack acceptance testing framework optimised for collaboration, speed and scale!","archived":false,"fork":false,"pushed_at":"2026-02-11T04:32:07.000Z","size":500733,"stargazers_count":606,"open_issues_count":101,"forks_count":157,"subscribers_count":31,"default_branch":"main","last_synced_at":"2026-02-11T10:02:35.656Z","etag":null,"topics":["acceptance-testing","api-testing","automated-testing","bdd","cucumber","domain-driven-design","dsl","e2e-testing","end-to-end-testing","playwright","puppeteer","screenplay-pattern","test-automation","test-integration","test-reporting","testing","testing-framework","web-testing","webdriver"],"latest_commit_sha":null,"homepage":"https://serenity-js.org","language":"TypeScript","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/serenity-js.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/funding.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["serenity-js","jan-molak"],"tidelift":"npm/@serenity-js/core"}},"created_at":"2016-06-16T16:20:06.000Z","updated_at":"2026-02-08T22:28:06.000Z","dependencies_parsed_at":"2023-10-30T19:32:50.844Z","dependency_job_id":"f7137bbc-43bc-4d1d-aea4-817571061f70","html_url":"https://github.com/serenity-js/serenity-js","commit_stats":{"total_commits":5167,"total_committers":66,"mean_commits":78.28787878787878,"dds":0.6057673698471067,"last_synced_commit":"ceafca2f04e9ba537c8644b25301268a559c3e6a"},"previous_names":["jan-molak/serenity-js"],"tags_count":531,"template":false,"template_full_name":null,"purl":"pkg:github/serenity-js/serenity-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenity-js%2Fserenity-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenity-js%2Fserenity-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenity-js%2Fserenity-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenity-js%2Fserenity-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serenity-js","download_url":"https://codeload.github.com/serenity-js/serenity-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenity-js%2Fserenity-js/sbom","scorecard":{"id":406190,"data":{"date":"2025-08-11","repo":{"name":"github.com/serenity-js/serenity-js","commit":"3412fff8ec7df2d8cdbd29d3616873d75e11b26d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: 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":"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":"Code-Review","score":0,"reason":"Found 0/10 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":"Maintained","score":10,"reason":"30 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10","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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yaml:21","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yaml:22","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/main.yaml:191","Info: jobLevel 'contents' permission set to 'read': .github/workflows/main.yaml:192","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/main.yaml:404","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/main.yaml:53","Info: jobLevel 'contents' permission set to 'read': .github/workflows/main.yaml:54","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/main.yaml:144","Info: jobLevel 'contents' permission set to 'read': .github/workflows/main.yaml:145","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/main.yaml:236","Info: jobLevel 'contents' permission set to 'read': .github/workflows/main.yaml:237","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/main.yaml:284","Info: jobLevel 'contents' permission set to 'read': .github/workflows/main.yaml:285","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/main.yaml:341","Info: jobLevel 'contents' permission set to 'read': .github/workflows/main.yaml:342","Info: topLevel 'contents' permission set to 'read': .github/workflows/chore-delete-old-workflows.yaml:3","Warn: topLevel 'actions' permission set to 'write': .github/workflows/chore-delete-old-workflows.yaml:4","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yaml:16","Info: topLevel 'contents' permission set to 'read': .github/workflows/main.yaml:11","Info: topLevel 'contents' permission set to 'read': .github/workflows/pr-commitlint.yaml:9"],"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":"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":"Pinned-Dependencies","score":7,"reason":"dependency not pinned by hash detected -- score normalized to 7","details":["Warn: containerImage not pinned by hash: .gitpod/.gitpod.Dockerfile:1: pin your Docker image by updating gitpod/workspace-full-vnc to gitpod/workspace-full-vnc@sha256:f81841b8299823e97e00a1f39dec6dc57d3b0cb6bcc79161a5d155b29ad34b8b","Warn: npmCommand not pinned by hash: .gitpod/.gitpod.Dockerfile:76","Warn: downloadThenRun not pinned by hash: .github/workflows/main.yaml:360","Info:  19 out of  19 GitHub-owned GitHubAction dependencies pinned","Info:   6 out of   6 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   0 out of   1 downloadThenRun 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":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 24 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"}},{"name":"Vulnerabilities","score":0,"reason":"18 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-rrr8-f88r-h8q6","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-pfq8-rq6v-vf5m","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-cxrh-j4jr-qwg3","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc"],"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-18T21:18:53.362Z","repository_id":37427510,"created_at":"2025-08-18T21:18:53.363Z","updated_at":"2025-08-18T21:18:53.363Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29439820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T07:24:13.446Z","status":"ssl_error","status_checked_at":"2026-02-14T07:23:58.969Z","response_time":53,"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":["acceptance-testing","api-testing","automated-testing","bdd","cucumber","domain-driven-design","dsl","e2e-testing","end-to-end-testing","playwright","puppeteer","screenplay-pattern","test-automation","test-integration","test-reporting","testing","testing-framework","web-testing","webdriver"],"created_at":"2024-08-01T15:06:55.428Z","updated_at":"2026-02-14T08:01:06.519Z","avatar_url":"https://github.com/serenity-js.png","language":"TypeScript","funding_links":["https://github.com/sponsors/serenity-js","https://github.com/sponsors/jan-molak","https://tidelift.com/funding/github/npm/@serenity-js/core","https://tidelift.com/subscription/pkg/npm-.serenity-js-core?utm_source=npm-.serenity-js-core\u0026utm_medium=referral\u0026utm_campaign=enterprise\u0026utm_term=repo"],"categories":["TypeScript","testing"],"sub_categories":[],"readme":"# Serenity/JS\n[![NPM Version](https://badge.fury.io/js/%40serenity-js%2Fcore.svg)](https://badge.fury.io/js/%40serenity-js%2Fcore)\n[![Downloads](https://img.shields.io/npm/dm/@serenity-js/core.svg)](https://npm-stat.com/charts.html?package=@serenity-js/core)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fserenity-js%2Fserenity-js.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fserenity-js%2Fserenity-js?ref=badge_shield)\n[![CodeFactor](https://www.codefactor.io/repository/github/serenity-js/serenity-js/badge)](https://www.codefactor.io/repository/github/serenity-js/serenity-js)\n[![Contributors](https://img.shields.io/github/contributors/serenity-js/serenity-js.svg)](https://github.com/serenity-js/serenity-js/graphs/contributors)\n[![GitHub stars](https://img.shields.io/github/stars/serenity-js/serenity-js?style=flat)](https://github.com/serenity-js/serenity-js)\n\n[![Build Status](https://github.com/serenity-js/serenity-js/actions/workflows/main.yaml/badge.svg?branch=main)](https://github.com/serenity-js/serenity-js/actions)\n[![Maintainability](https://qlty.sh/gh/serenity-js/projects/serenity-js/maintainability.svg)](https://qlty.sh/gh/serenity-js/projects/serenity-js)\n[![Code Coverage](https://qlty.sh/gh/serenity-js/projects/serenity-js/coverage.svg)](https://qlty.sh/gh/serenity-js/projects/serenity-js)\n[![Known Vulnerabilities](https://snyk.io/test/github/serenity-js/serenity-js/badge.svg)](https://snyk.io/test/github/serenity-js/serenity-js)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\n[![Serenity/JS on GitHub](https://img.shields.io/badge/github-serenity--js-yellow?logo=github)](https://github.com/serenity-js/serenity-js)\n[![Serenity/JS on StackOverflow](https://img.shields.io/badge/stackoverflow-serenity--js-important?logo=stackoverflow)](https://stackoverflow.com/questions/tagged/serenity-js)\n[![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/from-referrer/)\n\n[![Follow Serenity/JS on LinkedIn](https://img.shields.io/badge/Follow-Serenity%2FJS%20-0077B5?logo=linkedin)](https://www.linkedin.com/company/serenity-js)\n[![Watch Serenity/JS on YouTube](https://img.shields.io/badge/Watch-@serenity--js-E62117?logo=youtube)](https://www.youtube.com/@serenity-js)\n[![Join Serenity/JS Community Chat](https://img.shields.io/badge/Chat-Serenity%2FJS%20Community-FBD30B?logo=matrix)](https://matrix.to/#/#serenity-js:gitter.im)\n[![Support Serenity/JS on GitHub](https://img.shields.io/badge/Support-@serenity--js-703EC8?logo=github)](https://github.com/sponsors/serenity-js)\n\n[Serenity/JS](https://serenity-js.org) is an innovative framework designed to make acceptance and regression testing\nof complex software systems faster, more collaborative and easier to scale.\n\nTo get started, check out the comprehensive [Serenity/JS Handbook](https://serenity-js.org/handbook), [API documentation](https://serenity-js.org/api/core), and [Serenity/JS project templates](https://serenity-js.org/handbook/project-templates/)  on GitHub.\n\nIf you have any questions or just want to say hello, join the [Serenity/JS Community Chat](https://matrix.to/#/#serenity-js:gitter.im).\n\n## Stay up to date\n\nNew tutorials and videos are coming soon, follow [Serenity/JS on LinkedIn](https://www.linkedin.com/company/serenity-js) and subscribe to [Serenity/JS YouTube channel](https://www.youtube.com/channel/UC0RdeVPyjtJopVHvlLrXd1Q) to get notified when they're available!\n\n## Your feedback matters!\n\nDo you find Serenity/JS useful? [Give it a ⭐ star on GitHub](https://github.com/serenity-js/serenity-js)!\n\n[![GitHub stars](https://img.shields.io/github/stars/serenity-js/serenity-js)](https://github.com/serenity-js/serenity-js)\n\nFound a bug? Need a feature? Raise [an issue](https://github.com/serenity-js/serenity-js/issues?state=open)\nor submit a pull request.\n\nHave feedback? Let me know on [LinkedIn](https://www.linkedin.com/in/janmolak/) or leave a comment in [Serenity/JS discussions on GitHub](/serenity-js/serenity-js/discussions/categories/comments)\n\nIf you'd like to chat with fellow users of Serenity/JS, join us on [Serenity/JS Community Chat](https://matrix.to/#/#serenity-js:gitter.im).\n\n## Support Serenity/JS\n\nSerenity/JS is a free open-source framework, so we rely on our [wonderful GitHub sponsors](https://github.com/sponsors/serenity-js) to keep the lights on.\n\nIf you appreciate all the effort that goes into making sophisticated tools easy to work with, please support our work and become a Serenity/JS GitHub Sponsor today!\n\n[![GitHub Sponsors](https://img.shields.io/badge/Support%20@serenity%2FJS-703EC8?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/sponsors/serenity-js)\n\nFor corporate sponsorship or commercial support, please contact [Jan Molak](https://www.linkedin.com/in/janmolak/).\n\n## License\n\nThe Serenity/JS code base is licensed under the [Apache-2.0](LICENSE.md) license, \nwhile its documentation and the [Serenity/JS Handbook](https://serenity-js.org/handbook/) are licensed under the [Creative Commons BY-NC-SA 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/). \n[Learn more](http://localhost:3000/license).\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fserenity-js%2Fserenity-js.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2F2Fserenity-js%2Fserenity-js?ref=badge_large)\n\n----\n\n_- Copyright \u0026copy; 2016- [Jan Molak](https://janmolak.com) and the Serenity Team_\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\t\u003cb\u003e\n\t\t\u003ca href=\"https://tidelift.com/subscription/pkg/npm-.serenity-js-core?utm_source=npm-.serenity-js-core\u0026utm_medium=referral\u0026utm_campaign=enterprise\u0026utm_term=repo\"\u003eSerenity/JS is available as part of your Tidelift subscription\u003c/a\u003e\n\t\u003c/b\u003e\n\t\u003cbr\u003e\n\t\u003csub\u003e\n\t\tTidelift helps make open source sustainable for maintainers while giving companies\u003cbr\u003eassurances about security, maintenance, and licensing for their dependencies.\n\t\u003c/sub\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserenity-js%2Fserenity-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserenity-js%2Fserenity-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserenity-js%2Fserenity-js/lists"}