A language-agnostic command-line tool for validating API documentation against backend implementation.
Dredd is a command-line HTTP API testing tool that validates API implementations against their documentation. It reads API description formats like API Blueprint and OpenAPI, then automatically tests each endpoint to ensure the backend behaves as documented. This helps maintain accurate API documentation and catch regressions early.
API developers, technical writers, and DevOps engineers who need to ensure their API implementation matches its specification, especially in design-first API development workflows.
Developers choose Dredd for its language-agnostic approach, support for multiple API description formats, and seamless CI/CD integration. Its extensible hooks system allows customization while keeping tests decoupled from implementation details.
Language-agnostic HTTP API Testing Tool
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Dredd tests APIs over HTTP, making it compatible with any backend technology, as highlighted in the README's support for hooks in Go, JavaScript, Perl, PHP, Python, Ruby, Rust, and more.
It reads API Blueprint, OpenAPI 2, and OpenAPI 3 (experimental) documents, allowing teams to use their preferred specification format for validation.
Supports custom test setup and teardown in multiple languages, enabling flexible integration with application logic, as documented in the hooks section.
Runs on Linux, macOS, Windows and integrates with Travis CI, CircleCI, Jenkins, and AppVeyor, facilitating automated testing in pipelines as mentioned in the features.
OpenAPI 3 support is marked as experimental in the README, which may lead to instability or missing features compared to mature formats like OpenAPI 2.
Dredd's validation is only as effective as the API description; incorrect or outdated specs will cause test failures, requiring manual updates and potentially slowing development.
While hooks are extensible, configuring them across multiple languages can add complexity and maintenance overhead, especially in polyglot environments, as noted in the hooks documentation.