Major improvements for GraphQL 
This release introduces a bunch of nice improvements for GraphQL testing - now you can test mutations, extend Schemathesis with custom scalars, and run tests at least twice as fast as before!
Other things include cleaner pytest
output, human-readable cassette payloads, reporting flaky failures, better negative testing, and much more! See below
🚀 Added
- GraphQL: Mutations supports. Schemathesis will generate random mutations by default from now on.
- GraphQL: Support for registering strategies to generate custom scalars.
- Custom auth support for schemas created via
from_pytest_fixture
.
🔧 Changed
- Do not encode payloads in cassettes as base64 by default. This change makes Schemathesis match the default Ruby's VCR behavior and
leads to more human-readable cassettes. Use--cassette-preserve-exact-body-bytes
to restore the old behavior. #1413 - Bump
hypothesis-graphql
to0.9.0
. - Avoid simultaneous authentication requests inside auth providers when caching is enabled.
- Reduce the verbosity of the
pytest
output. A few internal frames and the "Falsifying example" block are removed from the output. - Skip negative tests on API operations that are not possible to negate. #1463
- Make it possible to generate negative tests if at least one parameter can be negated.
- Treat flaky errors as failures and display a full report about the failure. #1081
- Do not duplicate failing explicit examples in the
HYPOTHESIS OUTPUT
CLI output section. #881
🐛 Fixed
- GraphQL: Semantically invalid queries without aliases.
- GraphQL: Rare crashes on invalid schemas.
- Internal error inside
BaseOpenAPISchema.validate_response
onrequests>=2.27
when response body contains malformed JSON. #1485 schemathesis.from_pytest_fixture
: Display each failure if Hypothesis found multiple of them.
🏎️ Performance
- GraphQL: Over 2x improvement from internal optimizations.