{"id":13560808,"url":"https://github.com/keploy/keploy","last_synced_at":"2026-04-15T12:02:31.141Z","repository":{"id":37029490,"uuid":"449649393","full_name":"keploy/keploy","owner":"keploy","description":"Open-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.","archived":false,"fork":false,"pushed_at":"2026-04-13T09:55:56.000Z","size":218055,"stargazers_count":17087,"open_issues_count":620,"forks_count":2213,"subscribers_count":44,"default_branch":"main","last_synced_at":"2026-04-13T10:17:39.626Z","etag":null,"topics":["agentic-ai","ai-testing-tool","api-testing","code-quality","mock","mock-data-generator","mock-framework","test-automation","test-automation-framework","test-generation","testing","testing-library","testing-tool","testing-tools"],"latest_commit_sha":null,"homepage":"https://keploy.io","language":"Go","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/keploy.png","metadata":{"files":{"readme":"README-UnitGen.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":"SECURITY.md","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":".github/CLA.md"},"funding":{"github":["keploy"]}},"created_at":"2022-01-19T10:40:31.000Z","updated_at":"2026-04-13T09:51:01.000Z","dependencies_parsed_at":"2026-01-17T11:03:27.797Z","dependency_job_id":null,"html_url":"https://github.com/keploy/keploy","commit_stats":{"total_commits":632,"total_committers":78,"mean_commits":8.102564102564102,"dds":0.8370253164556962,"last_synced_commit":"43bc866823123c29e9fb1b85be367c0284a61a6e"},"previous_names":[],"tags_count":534,"template":false,"template_full_name":null,"purl":"pkg:github/keploy/keploy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keploy%2Fkeploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keploy%2Fkeploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keploy%2Fkeploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keploy%2Fkeploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keploy","download_url":"https://codeload.github.com/keploy/keploy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keploy%2Fkeploy/sbom","scorecard":{"id":161973,"data":{"date":"2025-08-11","repo":{"name":"github.com/keploy/keploy","commit":"6b003befa1676f3fe62fdce83e5bcef5f4567b3d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.5,"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":"Maintained","score":10,"reason":"30 commit(s) and 19 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":"Code-Review","score":9,"reason":"Found 28/30 approved changesets -- score normalized to 9","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":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: pkg/core/hooks/bpf_arm64_bpfel.o:1","Warn: binary detected: pkg/core/hooks/bpf_x86_bpfel.o:1"],"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/bug.yml:18","Info: jobLevel 'contents' permission set to 'read': .github/workflows/bug.yml:19","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:29","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docker-publish.yml:24","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docs.yml:19","Info: jobLevel 'actions' permission set to 'read': .github/workflows/docs.yml:18","Info: jobLevel 'actions' permission set to 'read': .github/workflows/feat.yml:18","Info: jobLevel 'contents' permission set to 'read': .github/workflows/feat.yml:19","Info: topLevel 'contents' permission set to 'read': .github/workflows/bug.yml:7","Warn: no topLevel permission defined: .github/workflows/cla.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/coverage_stage.yml:1","Warn: no topLevel permission defined: .github/workflows/docker-publish.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/docs.yml:7","Info: topLevel 'contents' permission set to 'read': .github/workflows/feat.yml:7","Warn: no topLevel permission defined: .github/workflows/go.yml:1","Warn: no topLevel permission defined: .github/workflows/go_macos.yaml:1","Warn: no topLevel permission defined: .github/workflows/go_windows.yml:1","Warn: no topLevel permission defined: .github/workflows/golang_docker-compose.yml:1","Warn: no topLevel permission defined: .github/workflows/golang_docker.yml:1","Warn: no topLevel permission defined: .github/workflows/golang_http_linux.yml:1","Warn: no topLevel permission defined: .github/workflows/golang_linux.yml:1","Warn: no topLevel permission defined: .github/workflows/golang_mysql_linux.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/golangci-lint.yml:10","Info: topLevel 'pull-requests' permission set to 'read': .github/workflows/golangci-lint.yml:12","Warn: no topLevel permission defined: .github/workflows/greetings.yml:1","Warn: no topLevel permission defined: .github/workflows/java_linux.yml:1","Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/node_docker.yml:1","Warn: no topLevel permission defined: .github/workflows/node_encoding.yaml:1","Warn: no topLevel permission defined: .github/workflows/node_linux.yml:1","Warn: no topLevel permission defined: .github/workflows/prepare_and_run.yml:1","Warn: no topLevel permission defined: .github/workflows/python_docker.yml:1","Warn: no topLevel permission defined: .github/workflows/python_linux.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:8","Warn: no topLevel permission defined: .github/workflows/sample-run.yml:1","Warn: no topLevel permission defined: .github/workflows/test-go-mongo-1.yml:1","Warn: no topLevel permission defined: .github/workflows/test-go-mongo-2.yml:1","Info: no jobLevel write permissions found"],"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: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":"Branch-Protection","score":5,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Warn: 'stale review dismissal' is disabled on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Info: codeowner review is required on branch 'main'","Warn: 'last push approval' is disabled on branch 'main'","Warn: no status checks found to merge onto branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"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":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/bug.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/bug.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/bug.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/bug.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/bug.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/bug.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cla.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/cla.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cla.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/cla.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage_stage.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/coverage_stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage_stage.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/coverage_stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage_stage.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/coverage_stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/docker-publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/docker-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/docs.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/docs.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/docs.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/feat.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/feat.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/feat.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/feat.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/feat.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/feat.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/go.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/go.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/go.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/go.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go_macos.yaml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/go_macos.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go_macos.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/go_macos.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go_windows.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/go_windows.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go_windows.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/go_windows.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_docker-compose.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_docker-compose.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_docker-compose.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_docker-compose.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_docker.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_docker.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_docker.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_docker.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_http_linux.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_http_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_http_linux.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_http_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_linux.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_linux.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_mysql_linux.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_mysql_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang_mysql_linux.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golang_mysql_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golangci-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golangci-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/golangci-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/greetings.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/greetings.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/java_linux.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/java_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/java_linux.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/java_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node_docker.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/node_docker.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node_docker.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/node_docker.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node_encoding.yaml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/node_encoding.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node_encoding.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/node_encoding.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node_linux.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/node_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node_linux.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/node_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prepare_and_run.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/prepare_and_run.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prepare_and_run.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/prepare_and_run.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prepare_and_run.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/prepare_and_run.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/prepare_and_run.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/prepare_and_run.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_docker.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/python_docker.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_docker.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/python_docker.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_linux.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/python_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_linux.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/python_linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sample-run.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/sample-run.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sample-run.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/sample-run.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-go-mongo-1.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/test-go-mongo-1.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-go-mongo-1.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/test-go-mongo-1.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-go-mongo-1.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/test-go-mongo-1.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-go-mongo-2.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/test-go-mongo-2.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-go-mongo-2.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/test-go-mongo-2.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-go-mongo-2.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/keploy/keploy/test-go-mongo-2.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:2","Warn: containerImage not pinned by hash: Dockerfile:25: pin your Docker image by updating debian:bookworm-slim to debian:bookworm-slim@sha256:b1a741487078b369e78119849663d7f1a5341ef2768798f7b7406c4240f86aef","Warn: npmCommand not pinned by hash: .github/workflows/test_workflow_scripts/node-encoding.sh:7","Warn: npmCommand not pinned by hash: .github/workflows/test_workflow_scripts/node-linux.sh:8","Warn: pipCommand not pinned by hash: .github/workflows/test_workflow_scripts/python-linux.sh:13","Info:   0 out of  59 GitHub-owned GitHubAction dependencies pinned","Info:   4 out of  16 third-party GitHubAction dependencies pinned","Info:   0 out of   2 npmCommand dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned","Info:   0 out of   2 containerImage 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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.9.3 not signed: https://api.github.com/repos/keploy/keploy/releases/239937869","Warn: release artifact v2.9.2 not signed: https://api.github.com/repos/keploy/keploy/releases/239402239","Warn: release artifact v2.9.1 not signed: https://api.github.com/repos/keploy/keploy/releases/238941798","Warn: release artifact v2.9.0 not signed: https://api.github.com/repos/keploy/keploy/releases/238601748","Warn: release artifact v2.8.4 not signed: https://api.github.com/repos/keploy/keploy/releases/238257180","Warn: release artifact v2.9.3 does not have provenance: https://api.github.com/repos/keploy/keploy/releases/239937869","Warn: release artifact v2.9.2 does not have provenance: https://api.github.com/repos/keploy/keploy/releases/239402239","Warn: release artifact v2.9.1 does not have provenance: https://api.github.com/repos/keploy/keploy/releases/238941798","Warn: release artifact v2.9.0 does not have provenance: https://api.github.com/repos/keploy/keploy/releases/238601748","Warn: release artifact v2.8.4 does not have provenance: https://api.github.com/repos/keploy/keploy/releases/238257180"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/docker-publish.yml:20"],"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":"Vulnerabilities","score":0,"reason":"11 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-jq35-85cj-fj4p","Warn: Project is vulnerable to: GO-2024-2512 / GHSA-xw73-rw38-6vjc","Warn: Project is vulnerable to: GO-2024-3005 / GHSA-v23v-6jw2-98fq","Warn: Project is vulnerable to: GO-2025-3829 / GHSA-4vq8-7jfc-9cvp","Warn: Project is vulnerable to: GO-2025-3533 / GHSA-wq9g-9vfc-cfq9","Warn: Project is vulnerable to: GO-2024-3250 / GHSA-29wx-vh33-7x7r","Warn: Project is vulnerable to: GO-2025-3553 / GHSA-mh63-6h87-95cp","Warn: Project is vulnerable to: GO-2024-3311 / GHSA-q59j-vv4j-v33c","Warn: Project is vulnerable to: GO-2025-3802 / GHSA-557j-xg8c-q2mm","Warn: Project is vulnerable to: GHSA-9h84-qmv7-982p","Warn: Project is vulnerable to: GHSA-f9f8-9pmf-xv68"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":8,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 12 commits out of 30 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-16T13:44:22.452Z","repository_id":37029490,"created_at":"2025-08-16T13:44:22.452Z","updated_at":"2025-08-16T13:44:22.452Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31840114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T11:29:19.690Z","status":"ssl_error","status_checked_at":"2026-04-15T11:29:19.171Z","response_time":63,"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":["agentic-ai","ai-testing-tool","api-testing","code-quality","mock","mock-data-generator","mock-framework","test-automation","test-automation-framework","test-generation","testing","testing-library","testing-tool","testing-tools"],"created_at":"2024-08-01T13:00:49.711Z","updated_at":"2026-04-15T12:02:31.117Z","avatar_url":"https://github.com/keploy.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg align=\"center\" src=\"https://docs.keploy.io/img/keploy-logo-dark.svg?s=200\u0026v=4\" height=\"40%\" width=\"40%\"  alt=\"keploy logo\"/\u003e\n\u003c/p\u003e\n\u003ch3 align=\"center\"\u003e\n\u003cb\u003e\n⚡️ Generate unit tests with LLMs, that actually works  ⚡️\n\u003c/b\u003e\n\u003c/h3 \u003e\n\u003cp align=\"center\"\u003e\n🌟 The must-have tool for developers in the AI-Gen era 🌟\n\u003c/p\u003e\n\n---\n\n\u003ch4 align=\"center\"\u003e\n\n   \u003ca href=\"https://x.com/keployio\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/follow-%40keployio-1DA1F2?logo=X\u0026style=social\" alt=\"Keploy X\" /\u003e\n  \u003c/a\u003e\n\n\u003ca href=\"https://github.com/Keploy/Keploy/\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/keploy/keploy?color=%23EAC54F\u0026logo=github\u0026label=Help%20us%20reach%2020K%20stars!%20Now%20at:\" alt=\"Help us reach 20k stars!\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://landscape.cncf.io/?item=app-definition-and-development--continuous-integration-delivery--keploy\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/CNCF%20Landscape-5699C6?logo=cncf\u0026style=social\" alt=\"Keploy CNCF Landscape\" /\u003e\n  \u003c/a\u003e\n\n[![Slack](https://img.shields.io/badge/Slack-4A154B?style=for-the-badge\u0026logo=slack\u0026logoColor=white)](https://join.slack.com/t/keploy/shared_invite/zt-357qqm9b5-PbZRVu3Yt2rJIa6ofrwWNg)\n[![LinkedIn](https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/company/keploy/)\n[![X](https://img.shields.io/badge/X-%231DA1F2.svg?style=for-the-badge\u0026logo=X\u0026logoColor=white)](https://x.com/keployio)\n\n\u003c/h4\u003e\n\n---\n\nKeploy-gen uses LLMs to understand code semantics and generates meaningful **unit tests**. It's inspired by the [Automated Unit Test Improvement using LLM at Meta](https://arxiv.org/pdf/2402.09171).\n\n### Objectives\n\n- **Automate unit test generation (UTG)**: Quickly generate comprehensive unit tests and reduce the redundant manual effort.\n\n- **Improve edge cases**: Extend and improve the scope of tests to cover more complex scenarios that are often missed manually.\n\n- **Boost test coverage**: As codebase grows, ensuring exhaustive coverage should become feasible.\n\n## Core Components\n\n| **Phase**                     | **Activities**                                                                                    | **Tools/Technologies**                   |\n| ----------------------------- | ------------------------------------------------------------------------------------------------- | ---------------------------------------- |\n| **Code Analysis**             | Analyze the code structure and dependencies.                                                      | Static analysis tools, LLMs              |\n| **Prompt Engineering**        | Generation of targeted prompts to guide the LLM in producing relevant tests.                      | LLMs, Custom scripts                     |\n| **Iterative Test Refinement** | Cyclic process of refining tests by running them, analyzing coverage, and incorporating feedback. | Testing frameworks (e.g., JUnit, pytest) |\n\n### Process Overview\n\nReferred from [Meta's research](https://arxiv.org/pdf/2402.09171), TestGen-LLM top level architecture.\n\n\u003cimg src=\"https://s3.us-west-2.amazonaws.com/keploy.io/meta-llm-process-overview.png\" width=\"90%\" alt=\"Test refinement process of unit test generator\"/\u003e\n\n## Prerequisites\n\n**AI model Setup** - Set the environment variable **API_KEY**.\n```\nexport API_KEY=xxxx\n```\n\n**API_KEY** can be from either of one these:\n- **OpenAI's GPT-4o** directly **[preferred]**.\n\n- Alternative LLMs via [litellm](https://github.com/BerriAI/litellm?tab=readme-ov-file#quick-start-proxy---cli).\n\n- Azure OpenAI\n\n## Installation\n\nInstall Keploy locally by running the following command:\n\n#### ➡ Linux/Mac\n\n```shell\n curl --silent -O -L https://keploy.io/install.sh \u0026\u0026 source install.sh\n```\n\n#### ➡  Windows\n\n- [Download](https://github.com/keploy/keploy/releases/latest/download/keploy_windows_amd64.tar.gz) and **move the keploy.exe file** to `C:\\Windows\\System32`\n\n### ![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)   ➡     Running with Node.js/TypeScript applications\n\n- Ensure you've set the API key, as mentioned in pre-requisites above:\n\n  ```shell\n  export API_KEY=xxxx\n  ```\n\n- Ensure **Cobertura** formatted coverage reports, edit `jest.config.js` or `package.json`:\n  \u003cbr/\u003e\n\n  ```json\n  // package.json\n  \"jest\": {\n        \"coverageReporters\": [\"text\", \"cobertura\"],\n      }\n  ```\n  or  \n\n  ```javascript\n    // jest.config.js\n    module.exports = {\n      coverageReporters: [\"text\", \"cobertura\"],\n    };\n  ```\n\n#### Generating Unit Tests\n\n- Run the following command in the root of your application. \n  \u003cbr/\u003e\n\n  - **For Single Test File:** If you prefer to test a smaller section of your application or to control costs, consider generating tests for a single source and its corresponding test file:\n\n    ```shell\n     keploy gen --sourceFilePath=\"\u003cpath to source file\u003e\" --testFilePath=\"\u003cpath to test file for above source file\u003e\" --testCommand=\"npm test\" --coverageReportPath=\"\u003cpath to coverage.xml\u003e\"\n    ```\n\n    \u003cbr/\u003e\n\n  - **For Entire Application** use the following command to generate tests across:\n\n    ⚠️ **Warning:** Executing this command will generate unit tests for all files in the application. Depending on the size of the codebase, this process may take between 20 minutes to an hour and will incur costs related to LLM usage.\n\n    ```bash\n    keploy gen --testCommand=\"npm test\" --testDir=\"test\" --coverageReportPath=\"\u003cpath to coverage.xml\u003e\"\n    ```\n\n  🎉 You should see improved test cases and code-coverage. ✅ Enjoy coding with enhanced unit test coverage! 🫰\n\n### ![Go](https://img.shields.io/badge/go-%2300ADD8.svg?style=for-the-badge\u0026logo=go\u0026logoColor=white) → Running with Golang applications\n\n- Ensure you've set the API key, as mentioned in pre-requisites above:\n\n  ```shell\n  export API_KEY=xxxx\n  ```\n\n- To ensure **Cobertura** formatted coverage reports, add:\n  ```bash\n   go install github.com/axw/gocov/gocov@v1.1.0\n   go install github.com/AlekSi/gocov-xml@v1.1.0\n  ```\n#### Generating Unit Tests\n- Run the following command in the root of your application.\n  \u003cbr/\u003e\n\n  - **For Single Test File:** If you prefer to test a smaller section of your application or to control costs, consider generating tests for a single source and its corresponding test file:\n\n    ```shell\n    keploy gen --sourceFilePath=\"\u003cpath to source file\u003e\" --testFilePath=\"\u003cpath to test file for above source file\u003e\" --testCommand=\"go test -v ./... -coverprofile=coverage.out \u0026\u0026 gocov convert coverage.out | gocov-xml \u003e coverage.xml\" --coverageReportPath=\"\u003cpath to coverage.xml\u003e\"\n    ```\n\n    \u003cbr/\u003e\n\n  - **For Entire Application** use the following command to generate tests across:\n\n    ⚠️ **Warning:** Executing this command will generate unit tests for all files in the application. Depending on the size of the codebase, this process may take between 20 minutes to an hour and will incur costs related to LLM usage.\n\n    ```bash\n    keploy gen --testDir=\".\" --testCommand=\"go test -v ./... -coverprofile=coverage.out \u0026\u0026 gocov convert coverage.out | gocov-xml \u003e coverage.xml\" --coverageReportPath=\"\u003cpath to coverage.xml\u003e\"\n    ```\n\n    🎉 You should see improved test cases and code-coverage. ✅ Enjoy coding with enhanced unit test coverage! 🫰\n\n### → Setup for Other Languages\n\n- Ensure you've set the API key, as mentioned in pre-requisites above:\n\n  ```shell\n  export API_KEY=xxxx\n  ```\n\n- Ensure that your unit test report format is **Cobertura**(it's very common).\n- Generate tests using keploy-gen:\n  ```bash\n  keploy gen --sourceFilePath=\"\u003cpath to source code file\u003e\" --testFilePath=\"\u003cpath to existing unit test file\u003e\" --testCommand=\"\u003ccmd to execute unit tests\u003e\" --coverageReportPath=\"\u003cpath to cobertura-coverage.xml\u003e\"\n  ```\n\n## Configuration\n\nConfigure Keploy using command-line flags:\n\n```bash\n\n  --sourceFilePath \"\"\n  --testFilePath \"\"\n  --coverageReportPath \"coverage.xml\"\n  --testCommand \"\"\n  --coverageFormat \"cobertura\"\n  --expectedCoverage 100\n  --maxIterations 5\n  --testDir \"\"\n  --llmBaseUrl \"https://api.openai.com/v1\"\n  --model \"gpt-4o\"\n  --llmApiVersion \"\n```\n\n- `sourceFilePath`: Path to the source file for which tests are to be generated.\n- `testFilePath`: Path where the generated tests will be saved.\n- `coverageReportPath`: Path to generate the coverage report.\n- `testCommand` (required): Command to execute tests and generate the coverage report.\n- `coverageFormat`: Type of the coverage report (default \"cobertura\").\n- `expectedCoverage`: Desired coverage percentage (default 100%).\n- `maxIterations`: Maximum number of iterations for refining tests (default 5).\n- `testDir`: Directory where tests will be written.\n- `llmBaseUrl`: Base url of the llm.\n- `model`: Specifies the AI model to use (default \"gpt-4o\").\n- `llmApiVersion`: API version of the llm if any (default \"\")\n\n# Frequently Asked Questions\n\n1. What is Keploy's Unit Test Generator (UTG)? \u003cbr\u003e\n    - Keploy's UTG automates the creation of unit tests based on code semantics, enhancing test coverage and reliability.\n\n2. Does Keploy send your private data to any cloud server for test generation?\u003cbr\u003e\n    - No, Keploy does not send any user code to remote systems, except when using the unit test generation feature. When using the UT gen feature, only the source code and the unit test code will be sent to the Large Language Model (LLM) you are using. By default, Keploy uses - litellm to support vast number of LLM backends. Yes, if your organization has its own LLM(a private one), you can use it with Keploy. This ensures that data is not sent to any external systems.\n\n3. How does Keploy contribute to improving unit test   coverage?\u003cbr\u003e\n    - By providing a zero code platform for automated testing, Keploy empowers developers to scale up their unit test coverage without extensive coding knowledge. This integration enhances testing reports, ultimately boosting confidence in the product's quality.\n\n4. Is Keploy cost-effective for automated unit testing?\u003cbr\u003e\n   - Yes, Keploy optimizes costs by automating repetitive testing tasks and improving overall test efficiency.\n\n5. How does Keploy generate coverage reports?\u003cbr\u003e\n    - Keploy generates detailed Cobertura format reports, offering insights into test effectiveness and code quality.\n\n6. Can Keploy handle large codebases efficiently?\u003cbr\u003e\n   - Yes, Keploy is designed to handle large codebases efficiently, though processing time may vary based on project size and complexity.\n\n# 🙋🏻‍♀️ Questions? 🙋🏻‍♂️\n\nReach out to us. We're here to answer!\n\n[![Slack](https://img.shields.io/badge/Slack-4A154B?style=for-the-badge\u0026logo=slack\u0026logoColor=white)](https://join.slack.com/t/keploy/shared_invite/zt-357qqm9b5-PbZRVu3Yt2rJIa6ofrwWNg)\n[![LinkedIn](https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/company/keploy/)\n[![YouTube](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge\u0026logo=YouTube\u0026logoColor=white)](https://www.youtube.com/channel/UC6OTg7F4o0WkmNtSoob34lg)\n[![X](https://img.shields.io/badge/X-%231DA1F2.svg?style=for-the-badge\u0026logo=X\u0026logoColor=white)](https://x.com/Keployio)\n\n\n# 📝 Sample QuickStarts\n- ![Go](https://img.shields.io/badge/go-%2300ADD8.svg?style=for-the-badge\u0026logo=go\u0026logoColor=white) : Try a unit-gen on [Mux-SQL](https://github.com/keploy/samples-go/tree/main/mux-sql#create-unit-testcase-with-keploy) app\n\n- ![Node](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node\u0026logoColor=white) : Try a unit-gen on [Express-Mongoose](https://github.com/keploy/samples-typescript/tree/main/express-mongoose#create-unit-testcase-with-keploy) app\n\n## 🌐 Language Support\n\n![Go](https://img.shields.io/badge/go-%2300ADD8.svg?style=for-the-badge\u0026logo=go\u0026logoColor=white)\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n\nOther language may be supported, we've not tested them yet. If your **coverage reports** are of **Cobertura format** then you should be able to use keploy-gen in any language.\n\n## Dev Support\n\nKeploy-gen is not just a project but an attempt to make developers life easier testing applications.\nIt aims to simplify the creation and maintenance of tests, ensuring high coverage, and adapts to the complexity of modern software development.\n\n#### Prompt Generation\n\nReferred from [Meta's research](https://arxiv.org/pdf/2402.09171), the four primary prompts used in the deployment for the December 2023 Instagram and Facebook app test-a-thons\n\n| Prompt Name           | Template                                                                                                                                                                                                                                                                                                                                                                                         |\n| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| extend_test           | Here is a Kotlin unit test class: {`existing_test_class`}. Write an extended version of the test class that includes additional tests to cover some extra corner cases.                                                                                                                                                                                                                          |\n| extend_coverage       | Here is a Kotlin unit test class and the class that it tests: {`existing_test_class`} {`class_under_test`}. Write an extended version of the test class that includes additional unit tests that will increase the test coverage of the class under test.                                                                                                                                        |\n| corner_cases          | Here is a Kotlin unit test class and the class that it tests: {`existing_test_class`} {`class_under_test`}. Write an extended version of the test class that includes additional unit tests that will cover corner cases missed by the original and will increase the test coverage of the class under test.                                                                                     |\n| statement_to_complete | Here is a Kotlin class under test {`class_under_test`} This class under test can be tested with this Kotlin unit test class {`existing_test_class`}. Here is an extended version of the unit test class that includes additional unit test cases that will cover methods, edge cases, corner cases, and other features of the class under test that were missed by the original unit test class: |\n\nLimitation: This project currently doesn't generate quality fresh tests if there are no existing tests to learn from.\n\nEnjoy coding with enhanced unit test coverage! 🫰\n","funding_links":["https://github.com/sponsors/keploy"],"categories":["Template Engines","Testing","Go","Repositories","Software","[Record and Playback Testing](TestingDomains.md/#record-and-playback-testing)","HarmonyOS","Recently Updated","api","Don't forget to give a :star: to make the project popular","测试","\u003ca name=\"Go\"\u003e\u003c/a\u003eGo","Projects"],"sub_categories":["Testing Frameworks","API Testing","Windows Manager","[Sep 15, 2024](/content/2024/09/15/README.md)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeploy%2Fkeploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeploy%2Fkeploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeploy%2Fkeploy/lists"}