Roadmap
Ideas worth keeping track of, but not scheduled into any milestone yet:
- Match diagnostics on demand (
VCR_DEBUG_MATCHING=1) — a full match trace for every interaction × matcher, not just when nothing matches at all. diff— a semantic diff between two versions of the same cassette (JSON Pointer level, not line-by-line), for reviewing what an updated recording actually changed.update— re-record a cassette, show a semantic diff of what changed, and ask for confirmation instead of blindly overwriting.- Schema drift detection — flag when a re-recorded interaction’s JSON shape changed (fields added or removed), independent of
staleAfter, which only measures elapsed time. - Subset JSON matching — alongside the current strict
BodyJsonMatcher, a mode where the recorded body only needs to be a subset of the incoming one, or vice versa. MultipartMatcher— structural matching formultipart/form-data, since a random boundary makes raw body matching useless.CookieMatcher/SetCookieMatcher— structural parsing ofCookie/Set-Cookieinstead of treating them as opaque header strings.- Pattern-based header matching — a header equivalent of
matchJsonField, for headers likeIdempotency-Keyortraceparentthat shouldn’t be matched exactly or ignored entirely. - Configurable query string matching —
ordered/unordered/ignore(['page'])per parameter, instead of one fixed comparison strategy. - Request assertions (
expectRequest()) — a cassette that’s both a fixture and a verification that the code under test actually sent the expected data, not just that it got a response back. - Deduplication via repeat count — one entry plus
repeat: Ninstead of N identical interactions for N identical calls. - Parallel recording to separate files, merged after the fact — an alternative to the session-wide lock, for teams that deliberately want to record in parallel.
- Provider-scoped redaction — redaction rules attached to a
Provider(applied to interactions whose host matches) instead of only the flat, project-wideredactinConfig. Coherent since providers became a core concept, but deliberately deferred: the common case is already covered by the defaultAuthorizationredaction, and the rest has a one-line workaround in a base test case. - File-level cassette metadata (
generator,source.test,source.provider) — to support tooling likelist/infowithout parsing every interaction.
None of this is committed to a milestone — it’s tracked here so it isn’t lost, not because it’s coming soon.