🚀 Added
- Support for custom content types in
multipart/form-dataencoding via OpenAPI'sencodingproperty. #697 - Option to make warnings cause test failures via
fail-onin warnings configuration. #2956 - The
generation.allow-extra-parametersconfig option to control whether Schemathesis generates unexpected query, header, or cookie parameters in negative testing (set tofalseto skip them entirely). - Response deserializer hook for non-JSON schema conformance checks (
schemathesis.deserializer). #2934 - Automatic dependency inference in Python stateful tests via
schema.as_state_machine(). schemathesis.serializer.alias()to reuse built-in serializers (YAML, JSON, XML) for custom media types without reimplementing them. #2952- Warning when API responses have structured schemas but no registered deserializer, helping catch silently skipped validation.
🐛 Fixed
- Curl commands with non-printable characters now use shell-aware escaping and display warnings for unknown shells. #2159
- Internal error when the coverage phase generates data not serializable into media type registered via
schemathesis.openapi.media_type. - Internal error when negative testing encounters schemas with bundled references.
- Internal error when processing link definitions missing both
operationRefandoperationId. - CLI now starts displaying the current operation as soon as execution begins, preventing the blank progress window most noticeable during the coverage phase.
🔧 Changed
- Custom media type strategies now support wildcard patterns (e.g.,
image/*) for all request body types, not just multipart encoding. - Improved the missing-links error message to point directly to the stateful testing guide.
- Dependency inference now extracts fields from nested wrapper objects (
result,data,response,payload).
📝 Documentation
- Expanded the stateful testing guide with detailed link examples, troubleshooting tips, and CLI behaviour notes.