A maintained Dredd alternative
Dredd’s repository was archived on 8 November 2024 and its last release (14.1.0) dates from November 2021, so it no longer receives fixes. If you validate an API against its OpenAPI 3 description in CI, Portman covers the same job, adds response-time limits, content tests and variation tests, and is actively maintained. If you rely on API Blueprint, Portman is not a drop-in replacement because it only reads OpenAPI 3.0 and 3.1.
About Dredd
Dredd is a language-agnostic CLI by Apiary that validates an API implementation against its API Blueprint or OpenAPI 2 description, with experimental OpenAPI 3 support. It runs each documented request and compares the response, with setup and teardown hooks in Go, Node.js, Perl, PHP, Python, Ruby and Rust. The MIT-licensed repository was archived on 8 November 2024.
Feature comparison
| Capability | Portman | Dredd |
|---|---|---|
| Approach | Generates a Postman collection with tests from the spec | Runs each documented request and compares the response |
| Spec input | OpenAPI 3.0 and 3.1 | API Blueprint, OpenAPI 2; OpenAPI 3 experimental |
| Output and runtime | Postman collection (JSON), run with Newman | Node.js CLI, runs tests directly |
| Response schema validation | Yes — JSON Schema test per response | Yes — validates against the description |
| Headers and response time | Yes — headersPresent and responseTime tests | Headers in the description must be present; content-negotiation values compared |
| Fuzzing and negative testing | Partial — rule-based fuzzing and variation tests | No |
| Stateful tests and chaining | Configured — assignVariables and overwrites | Via hooks code |
| Custom logic | Pre-request scripts and extendTests (JavaScript) | Hooks in seven languages |
| CI usage and exit codes | Exit code 1 on any failed assertion | CLI used in CI |
| MCP / AI agent support | No MCP server; Apideck agent skill available | No |
| License and status | Apache 2.0, maintained | MIT, archived Nov 2024; last release Nov 2021 |
Choose Dredd if…
- Your API description is in API Blueprint and you are not planning to move to OpenAPI.
- Your existing Dredd setup works, depends on hooks in a language other than JavaScript, and you accept running unmaintained software.
Choose Portman if…
- You describe your API in OpenAPI 3.0 or 3.1 and want a maintained tool to test against it in CI.
- You want schema, header, content-type and response-time checks generated per operation.
- You want variation tests and fuzzing for error responses, not only the documented happy path.
- You want the tests as a Postman collection your team can open and debug.
Migrating from Dredd
Moving from Dredd to Portman means pointing Portman at your OpenAPI document, recreating hook logic as Portman configuration, and replacing the Dredd step in CI.
- Make sure your API description is OpenAPI 3.0 or 3.1. Portman does not read API Blueprint or OpenAPI 2 (Swagger), so convert those first.
- Generate a first collection with default contract tests: npx @apideck/portman -l openapi.yaml -b http://localhost:3000 -o tmp/collection.json
- Create a portman-config.json and pass it with -c. Enable the contract tests you need (statusSuccess, contentType, jsonBody, schemaValidation, headersPresent, responseTime).
- Replace Dredd hooks that pass IDs between transactions with assignVariables (capture a value from a response) and overwrites (use it in later requests).
- Replace other hook logic with pre-request scripts or extendTests, which accept Postman JavaScript.
- Keep secrets out of the config: export them as PORTMAN_* environment variables (or use --envFile) and reference the camel-cased Postman variable.
- Run the tests with --runNewman and swap the Dredd step in CI for the Portman command. Portman exits with code 1 on any failed assertion, so the job fails as it did with Dredd.
- Optionally move the flags into a file and run portman --cliOptionsFile portman-cli-options.json.