| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | < 10 hours ago | 10.1 kB | |
| Release 4.32.0 source code.tar.gz | < 10 hours ago | 62.1 MB | |
| Release 4.32.0 source code.zip | < 10 hours ago | 63.8 MB | |
| Totals: 3 Items | 125.8 MB | 0 | |
:rocket: Added
- Captured resource ids fill fields of array items and
$refobjects in request bodies. #5417 - Captured resource ids fill fields of top-level array request body items.
- Captured resource ids fill request body fields declared through nested
allOf/oneOf/anyOf. - Stateful links inferred from same-origin URLs in response bodies (e.g. DRF hyperlinked fields).
- Stateful links inferred into fields of top-level array request body items.
#regex:extractor for$response.body#/pointerlink expressions.- Error feedback constrains request body fields declared in every
allOf/oneOf/anyOfbranch. - Stable failure codes (
ST101, ...) in run output and HTML, NDJSON, JSON and JUnit reports. st explain <code>describes a failure, how to fix it and how to turn it off.--report pytestwrites failures as standalone pytest tests. #2999- HTML report filters by path, failure kind and method.
- HTML report permalinks to operations and failing cases that copy the URL on click.
:wrench: Changed
before_init_operationhooks run once per operation, not on every lookup.- Clearer failure titles, such as
Deleted resource still availableinstead ofUse after free. - Stateful scenarios stop repeating a starting operation whose responses give later steps no data.
- Capability probes wait as long as test requests (10s) when
--request-timeoutis unset. - GraphQL failures report under their matching check, such as
negative_data_rejection, notnot_a_server_error. - HTML report lists failures and failed operations most severe first.
- HTML report shows run details above warnings and the first 10 operations of each warning.
- HTML report gives operation paths more room than failure names.
- HTML report wraps long reproduction commands.
:racing_car: Performance
- Examples phase up to ~130x faster on schemas with shared references and no examples.
- Faster coverage phase for large enums, wide objects, nested bodies and many headers.
- ~20% faster CLI startup.
- Coverage phase up to ~5x faster on UUID and date fields that also declare a matching
pattern. - Coverage phase up to ~40% faster on schemas with patterns the regex engine rejects.
- Coverage phase up to ~18% faster on operations with many negative cases.
- Coverage phase up to ~18x faster on length-bounded strings whose
patternhas anchors or lookarounds. - Faster dependency inference on large schemas and shared or recursive references.
- Unreachable remote references time out once per run.
- Response validation up to ~8x faster with ~6x less memory on APIs reusing response schemas.
- HTML report up to ~20% smaller on runs with many failures.
- Up to ~2x less memory and ~40% faster generation on APIs repeating recursive request bodies.
- Stateful phase avoids re-running flaky suites that find no new failures.
:bug: Fixed
Inferred stateful links
- Runtime-inferred links lost for response statuses the schema does not document.
- Missing links for path parameters named after a resource and its field (e.g.
{order_seq}). - Missing links for Django-style
_pkparameters and body fields (e.g.{order_pk}). - Missing links from a collection's listing to operations nested under its items.
- Missing links for parent path parameters the item carries (e.g.
Shipment.warehouseId). - Values read from
204and205responses, which have no body. - Links reading fields that values of map-shaped responses do not declare.
- Links echoing a read value the update's
enumrejects (e.g. adeletedstatus). - Links reading or filling
readOnlyrequest body fields (e.g. behind$reforallOf). Locationlinks overwriting each other when several targets share a status code.Locationlinks extracting wrong path parameters with base paths, queries or regex characters.- Link and undeclared path parameter order varying between runs.
Stateful testing
- Scenarios mostly starting from the alphabetically first operation.
- Scenarios ending early on request bodies with optional
readOnlyfields. - Keep generated fields of nested objects and array items when merging link
requestBodyvalues. #5416 - GraphQL steps ignoring captured resource ids in about half of requests.
- Crash on path parameter names with characters such as
-.
Coverage phase
- Missing large arrays of strings with
minLengthand a\p{L}or(?!...)pattern. - Negative cases sending valid path or header strings for string parameters with
uniqueItems. - Generate positive cases for large unique arrays of UUIDs.
- Already generated cases dropped under
--max-timeonce generation used up the operation's time. - Comma-separated multipart
encoding.contentTypesent verbatim as the part Content-Type. #5380 - Skip reason "No examples in schema" shown for operations this phase skipped.
- Slow generation for email patterns combined with length bounds.
- Crash on
patternquantifiers too large to generate (e.g.[a-z]{100000}).
Data generation
- Crash on request or response schemas whose
allOfreferences itself. - Positive request bodies violating the schema after captured resource ids are filled in.
- Pick the same captured resource ids for nested-resource paths in otherwise identical runs.
- Keep example fields next to captured ids in request bodies in the examples phase.
- "Cannot generate test data" for path parameters whose
enumvalues contain/. - Fuzzing repeating one request under
--max-timewhen auth overwrites a declared header. - Nested objects in inline query parameter schemas serialized as their property names only.
- Form bodies dropping
additionalPropertiesand object keywords for properties withencoding.contentType. - Crash on
application/x-www-form-urlencodedexamples whose schema setsexclusiveMinimumorexclusiveMaximumwithout a bound. - Format values generated under another operation's
codec,allow-x00orexclude-header-characterssettings. - Crash or lone surrogates in generated strings when
generation.codecisNone. RecursionErroron objects whoseadditionalPropertiesreferences the object itself.readOnlyrequest body fields sent when declared via$ref,allOfor an untyped parent.
Checks
- Required
writeOnlyfields behind$reforallOfreported missing from responses; present ones accepted. - Unchecked
uuidanddurationformats in OpenAPI 2.0 and 3.0 response schemas. - Unchecked discriminator values in referenced, array item, and nested property response schemas.
- "Response violates schema" messages embedding the whole response value on one line.
- Internal error instead of a failure for non-object GraphQL responses in negative mode.
- False positive
positive_data_acceptancefor header values ending with whitespace. - Missed
ensure_resource_availabilityfailures after aPOSTthat created the resource at its own URL. object_level_authorizationsending a single-objectGETas another user, which may create data.- Unsorted expected statuses in
missing_required_headerfailure messages.
negative_data_rejection
- False positive for valid boolean query parameters alongside
text/plainbodies. - False positive when
call_and_validatereceives its own body viajson=. #5344 - Missed failures in the coverage phase for scalar parameters next to array or object parameters.
Capability probes
- API capabilities reported as unsupported, and generation narrowed, when a probe request times out.
- Generation narrowed for the whole run when probes could not connect to the API.
Output and warnings
- Report operations answered mostly with
409as conflicts, not as a schema validation mismatch. #5429 - Dictionary mismatch warning raised when only a few operations reject the dictionary entries.
- Unmasked URL credentials in recorded commands for unknown options passed as
--option=URL. - Unmasked URL credentials in the terminal's schema location and
Base URLlines. - Double-encoded sensitive query keys in reproduction commands for raw query strings.
Missing test datawarning kept for operations that a later phase reached successfully.Missing test datawarning for operations answering with a documented redirect.
Reports
- Keep URL query strings unchanged in reports and VCR cassettes, apart from masked sensitive values.
- Valueless sensitive query keys gaining a masked value in reports and cassettes.
- Invalid VCR cassettes when the command or a request URL contains a single quote.
- Empty
cookieslists for requests and responses in HAR reports. - Empty response
mimeTypeandredirectURLin HAR reports. - Long failure messages in the HTML report not limited in height, unlike response bodies.
- Clicks in the HTML report opening an unrelated row in Safari.
pytest, Python API and hooks
- Respect
--max-examplesand other explicit options when a hook loads a Hypothesis profile. - Generation settings ignored by
APIOperation.as_strategyafter the same operation generated under other settings. openapi.from_urlandgraphql.from_urlignoring TLS, auth and header settings from the config.- Crash in
schema.find_operation_by_pathon paths with doubled or missing trailing slashes.
Others
st fuzzoccasionally dropping results and reporting "Empty test suite" on slow machines.st replayreporting "operation not found in schema" for every GraphQL failure.- Redirects followed for operations documenting a
3xxstatus, reporting the target's status instead. - Crash or wrong URL for server variable names containing dots or brackets.
- Crash on path keys containing lone surrogates.
- Crash on
Locationheaders differing from a schema path by a trailing or doubled slash.