{"id":40336113,"url":"https://github.com/craigatk/projektor","last_synced_at":"2026-01-20T08:35:00.304Z","repository":{"id":37035855,"uuid":"226096594","full_name":"craigatk/projektor","owner":"craigatk","description":"View and share your test reports quickly and easily with Projektor","archived":false,"fork":false,"pushed_at":"2026-01-13T12:19:22.000Z","size":102889,"stargazers_count":48,"open_issues_count":9,"forks_count":20,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-13T15:28:23.400Z","etag":null,"topics":["reporting","testing"],"latest_commit_sha":null,"homepage":"https://projektor.dev","language":"Kotlin","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/craigatk.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2019-12-05T12:24:09.000Z","updated_at":"2026-01-13T12:19:24.000Z","dependencies_parsed_at":"2025-12-29T09:07:36.786Z","dependency_job_id":null,"html_url":"https://github.com/craigatk/projektor","commit_stats":{"total_commits":1400,"total_committers":9,"mean_commits":"155.55555555555554","dds":0.485,"last_synced_commit":"dec9ebb99537ded031ae2a4394293db888f89dd6"},"previous_names":[],"tags_count":307,"template":false,"template_full_name":null,"purl":"pkg:github/craigatk/projektor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craigatk%2Fprojektor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craigatk%2Fprojektor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craigatk%2Fprojektor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craigatk%2Fprojektor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/craigatk","download_url":"https://codeload.github.com/craigatk/projektor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craigatk%2Fprojektor/sbom","scorecard":{"id":307216,"data":{"date":"2025-08-11","repo":{"name":"github.com/craigatk/projektor","commit":"1529724a86b3dcc30574f9253ff42443edb768e0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"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":"Maintained","score":10,"reason":"30 commit(s) and 0 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":0,"reason":"Found 0/2 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/example-projects.yml:1","Warn: no topLevel permission defined: .github/workflows/gradle.yml:1","Warn: no topLevel permission defined: .github/workflows/node-script-test.yml:1","Warn: no topLevel permission defined: .github/workflows/release-gradle-plugin.yml:1","Warn: no topLevel permission defined: .github/workflows/release-node-script.yml:1","Warn: no topLevel permission defined: .github/workflows/release-server.yml:1","Warn: no topLevel permission defined: .github/workflows/server-load-test.yml:1","Warn: no topLevel permission defined: .github/workflows/server-ui-functional-test.yml:1","Warn: no topLevel permission defined: .github/workflows/ui.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":"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":"Binary-Artifacts","score":6,"reason":"binaries present in source code","details":["Warn: binary detected: example-data/kover-gradle/gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: example-data/spock-gradle/gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: server/server-app/opentelemetry/opentelemetry-javaagent.jar: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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v6.0.0 not signed: https://api.github.com/repos/craigatk/projektor/releases/206020714","Warn: release artifact v5.2.0 not signed: https://api.github.com/repos/craigatk/projektor/releases/203612159","Warn: release artifact v5.1.1 not signed: https://api.github.com/repos/craigatk/projektor/releases/197974980","Warn: release artifact v5.1.0 not signed: https://api.github.com/repos/craigatk/projektor/releases/186203137","Warn: release artifact v5.0.1 not signed: https://api.github.com/repos/craigatk/projektor/releases/160739455","Warn: release artifact v6.0.0 does not have provenance: https://api.github.com/repos/craigatk/projektor/releases/206020714","Warn: release artifact v5.2.0 does not have provenance: https://api.github.com/repos/craigatk/projektor/releases/203612159","Warn: release artifact v5.1.1 does not have provenance: https://api.github.com/repos/craigatk/projektor/releases/197974980","Warn: release artifact v5.1.0 does not have provenance: https://api.github.com/repos/craigatk/projektor/releases/186203137","Warn: release artifact v5.0.1 does not have provenance: https://api.github.com/repos/craigatk/projektor/releases/160739455"],"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":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/example-projects.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/example-projects.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/example-projects.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/example-projects.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gradle.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/gradle.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gradle.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/gradle.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/gradle.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/gradle.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node-script-test.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/node-script-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node-script-test.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/node-script-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node-script-test.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/node-script-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node-script-test.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/node-script-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node-script-test.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/node-script-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node-script-test.yml:78: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/node-script-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-gradle-plugin.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-gradle-plugin.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-gradle-plugin.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-gradle-plugin.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-node-script.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-node-script.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-node-script.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-node-script.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-server.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-server.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-server.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-server.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-server.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-server.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-server.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-server.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-server.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/release-server.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/server-load-test.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/server-load-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/server-load-test.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/server-load-test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/server-load-test.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/server-load-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/server-ui-functional-test.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/server-ui-functional-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/server-ui-functional-test.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/server-ui-functional-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/server-ui-functional-test.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/server-ui-functional-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/server-ui-functional-test.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/server-ui-functional-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ui.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/ui.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ui.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/ui.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ui.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/ui.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ui.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/ui.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ui.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/ui.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ui.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/craigatk/projektor/ui.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating adoptopenjdk/openjdk11:latest to adoptopenjdk/openjdk11:latest@sha256:f73d2b5a5ad0c10744371b43dac5fb15440f434f6d998f4f97340dc2fec036ac","Info:   0 out of  31 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   1 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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/node-script-test.yml:34"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 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":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw"],"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-17T22:22:27.755Z","repository_id":37035855,"created_at":"2025-08-17T22:22:27.755Z","updated_at":"2025-08-17T22:22:27.755Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28599090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T02:08:49.799Z","status":"ssl_error","status_checked_at":"2026-01-20T02:08:44.148Z","response_time":117,"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":["reporting","testing"],"created_at":"2026-01-20T08:35:00.239Z","updated_at":"2026-01-20T08:35:00.297Z","avatar_url":"https://github.com/craigatk.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projektor\n\n| Project                | Tests                                                                                                                                                                                                      | Coverage                                                                                                                                                                                                                      |\n|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Server \u0026 Gradle plugin | [![Test results](https://projektorlive.herokuapp.com/repo/craigatk/projektor/badge/tests)](https://projektorlive.herokuapp.com/repo/craigatk/projektor/run/latest)                                         | [![Code coverage percentage](https://projektorlive.herokuapp.com/repo/craigatk/projektor/badge/coverage)](https://projektorlive.herokuapp.com/repository/craigatk/projektor/coverage)                                         |\n| UI                     | [![Test results](https://projektorlive.herokuapp.com/repo/craigatk/projektor/project/ui-jest/badge/tests)](https://projektorlive.herokuapp.com/repo/craigatk/projektor/project/ui-jest/run/latest)         | [![Code coverage percentage](https://projektorlive.herokuapp.com/repo/craigatk/projektor/project/ui-jest/badge/coverage)](https://projektorlive.herokuapp.com/repository/craigatk/projektor/project/ui-jest/coverage)         |\n| Node publisher         | [![Test results](https://projektorlive.herokuapp.com/repo/craigatk/projektor/project/node-script/badge/tests)](https://projektorlive.herokuapp.com/repo/craigatk/projektor/project/node-script/run/latest) | [![Code coverage percentage](https://projektorlive.herokuapp.com/repo/craigatk/projektor/project/node-script/badge/coverage)](https://projektorlive.herokuapp.com/repository/craigatk/projektor/project/node-script/coverage) |\n\nFor detailed instructions to get started with Projektor, please see the full project documentation at https://projektor.dev\n\n## Test reports\n\nTests failing on your machine and need help debugging them? Or tests are passing local but failing in CI and\nCI doesn't record the test report? Debugging tests in these scenarios can be time consuming and painful,\nespecially if you don't have the full context of the test failure.\n\nAccess and share your full test reports quickly and easily with Projektor.\n\n![Projektor test report](images/all-tests-passing.png \"Projektor test report\")\n\nProjektor shows a summary of all the tests executed as part of your test run:\n\nhttps://projektorlive.herokuapp.com/tests/RQ99P3LRZJSX\n\nThe summary includes things like number of tests executed, how many passed or failed, etc.\nAnd if there are any failures, those failure details are shown first on the dashboard:\n\n![Projektor dashboard failed test](images/projektor-dashboard-failed-test.png \"Projektor dashboard failed test\")\n\nTo help debug failures in any environment (especially CI), Projektor gives you access\nto the system out and system err from each test:\n\n![Projektor system out](images/test-system-output.png \"Projektor system out\")\n\nhttps://projektorlive.herokuapp.com/tests/V1BMYK93MTNR/suite/65/systemOut\n\n## Code coverage stats\n\nProjektor can capture and visualize code coverage stats from any project that can output code coverage data in \nJacoco (Gradle, sbt, etc.), Kover, Clover (Jest, Cypress, etc.), and Cobertura formats.\n\nProjektor calculates overall code coverage stats for the project as well as per-module coverage breakdowns\nfor Gradle multi-project builds:\n\n![Projektor overall code coverage](images/code-coverage-overall-and-group.png \"Projektor overall code coverage\")\n\nDrilling down further, Projektor can show file-level coverage stats, including which lines are covered, partially covered, or fully missed.\n\n![Projektor code coverage files](images/code-coverage-files.png \"Projektor code coverage files\")\n\nFor example https://projektorlive.herokuapp.com/tests/RQ99P3LRZJSX/coverage/server-app/files\n\nProjektor can also graph your project's code coverage over time, giving you the opportunity to see\nhow the code coverage is trending:\n\n![Projektor code coverage graph](images/projektor-code-coverage-graph.png \"Projektor code coverage graph\")\n\nMore details about using code coverage with Projektor are at https://projektor.dev/docs/code-coverage/\n\n## Performance test results\n\nProjektor can record and graph your\n\n![Projektor performance test results graph](images/projektor-performance-graph-full.png \"Projektor performance test results graph\")\n\nMore details on performance test results with Projektor are at https://projektor.dev/docs/performance-test/\n\n## GitHub pull request comments\n\nProjektor can comment directly on your pull request with direct links to the test report, code coverage data - \nincluding the change in coverage percentage in the PR.\n\n![Projektor pull request comment](images/pr-comment-increased-coverage.png \"Projektor pull request comment\")\n\nDetails on how to set this up are at https://projektor.dev/docs/github-pull-request/\n\n## Changelog\n\n### Projektor server\n\n[Projektor server changelog](CHANGELOG.md)\n\n### Projektor Gradle plugin\n\n[Projektor Gradle plugin changelog](https://projektor.dev/docs/gradle-plugin/#changelog)\n\n### Projektor Node script\n\n[Projektor Node script changelog](https://projektor.dev/docs/node-script/#changelog)\n\n## Development\n\nFor information on how Projektor is developed, how to build it from source and deploy it yourself, and other\ndevelopment information, please see [the development guide](DEVELOPMENT.md)\n\n## Contributors\n\nA big thank you to the contributors to this project!\n\n* Aaron Zirbes - [aaronzirbes](https://github.com/aaronzirbes)\n* Alex Hatzenbuhler - [ahatzz11](https://github.com/ahatzz11)\n* Andy Rudge - [arudge](https://github.com/arudge)\n* Connor Hasting - [CodedChai](https://github.com/CodedChai)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraigatk%2Fprojektor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcraigatk%2Fprojektor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraigatk%2Fprojektor/lists"}