A Go test output formatter that transforms verbose JSON logs into human-readable, interactive reports for CI systems and local development.
gotestfmt is a Go command-line tool that formats the JSON output from `go test` into human-readable, structured reports. It solves the problem of unreadable, verbose test logs in CI systems and local terminals by providing clean, interactive output with visual status indicators and foldable sections.
Go developers and teams using CI/CD systems like GitHub Actions, GitLab CI, or CircleCI who want clearer, more actionable test output during development and debugging.
Developers choose gotestfmt because it seamlessly integrates into existing Go test workflows, requires minimal configuration, and dramatically improves test log readability with CI-aware formatting, custom templates, and selective verbosity controls.
go test output for humans
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically detects and adapts to GitHub Actions and GitLab CI with log folding and specialized output, as shown in the setup examples, making test logs interactive and readable directly in CI interfaces.
Supports custom Go templates via a .gotestfmt directory, allowing teams to tailor reports for specific CI systems or internal needs, as detailed in the 'Add your own CI' section.
Offers a -hide flag to filter out successful tests, packages, or downloads, reducing noise in CI logs and focusing on failures, which is explicitly documented in the FAQ.
Returns a non-zero exit status when tests fail, ensuring CI pipelines correctly detect failures without relying on shell options, a feature added in version 2.3.0.
Version 2 dropped support for raw go test output, forcing all users to adopt `go test -json`, which can break existing workflows and requires updates to test commands.
Integration in GitLab CI involves building custom Docker images and managing environment variables, adding overhead compared to simpler tools that install via package managers.
Advanced customization relies on Go templates, which may be inaccessible to developers without template experience, and the README warns that features like -hide depend on template implementation.
The project's move to a new organization and deletion of the old repository, as noted in the README, indicates a pattern of breaking changes that users must actively manage.