Architecture
Yellow Jacket is a developer-first HTTP regression testing CLI. It executes a declared set of HTTP requests, compares current responses with known-good baselines and returns deterministic output suitable for local development, Git hooks and CI.
Runtime
Yellow Jacket requires Node.js 24.12.0 or newer.
The implementation uses:
- TypeScript compiled as ESM
- native
fetch node:testandnode:assertutil.parseArgsfor the CLI- JSON files for response baselines
yamlas the focused runtime dependency for YAML OpenAPI input
Yellow Jacket does not require Docker, a server process or a database.
Execution pipeline
The core execution flow is:
configuration
↓
route / scenario selection
↓
HTTP runner
↓
response normalization
↓
baseline read / write
↓
structured diff
↓
CLI / JSON / Markdown / HTML / CI reportConfiguration
Configuration declares:
- a base URL
- independent routes
- optional sequential scenarios
- response expectations
- retries and request timeouts
- baseline comparison normalization
- optional OpenAPI or sitemap coverage inventories
Configuration is validated before HTTP execution.
HTTP runner
The runner uses native fetch and supports:
GET
POST
PUT
PATCH
DELETE
HEAD
OPTIONSIndependent top-level routes may use bounded concurrency while preserving configured result order.
Scenario steps always run sequentially because later steps can depend on values captured from earlier responses.
Action safety
POST, PUT, PATCH and DELETE are considered mutating requests.
Without --allow-actions, mutating requests are limited to localhost and loopback destinations. Redirects are inspected before a mutating method is forwarded to another destination.
Retries for mutating requests are disabled unless explicitly enabled.
Retries and timeouts
Retries are opt-in and support:
- configurable attempts
- fixed or exponential backoff
- jitter
- transient status selection
Retry-After- maximum retry delay
- explicit action retry authorization
Request cancellation timeouts are separate from response-duration expectations. Routes and scenario steps may override the global timeout.
Baselines
Baselines are JSON documents using formatVersion: 1.
Every stored response is identified by:
HTTP method + displayed route labelDuplicate identities are rejected.
Existing baselines are validated before a normal run sends HTTP requests. Partial baseline updates preserve unselected snapshots.
Dynamic response values may be ignored or redacted while retaining structural comparison.
Diff model
Yellow Jacket compares:
- status
- structured response body
- normalized content type
- configured response headers
- redirect behavior
- final redirect URL
JSON object key ordering is ignored.
Body regressions are reported as added, removed or changed values at structured JSON paths.
Coverage
Coverage compares configured requests with declared route inventories.
Supported sources include:
- OpenAPI 3.x JSON
- OpenAPI 3.x YAML / YML
- XML sitemaps
- recursive local sitemap indexes
Coverage reports may enforce a minimum percentage.
Git integration
yellow-jacket install creates a tracked pre-push hook and configures core.hooksPath.
The hook does not silently authorize remote mutating actions.
Yellow Jacket refuses to overwrite another configured hook manager.
Reports
Run and coverage results can be rendered for:
- terminal output
- JSON
- Markdown
- standalone HTML
- GitHub Actions annotations and summaries
- GitLab JUnit-compatible output
Distribution validation
The npm distribution is tested as an artifact, not only from repository sources.
CI:
- builds the project,
- creates the npm tarball,
- installs it into a clean consumer project,
- checks package-root exports and the CLI,
- creates a real baseline,
- performs a real regression run.
The compatibility matrix covers Ubuntu, macOS and Windows on the minimum supported Node.js 24.12.0 release and the current Node.js 24 release.
Product boundaries
Yellow Jacket focuses on deterministic HTTP regression detection before code is pushed.
It intentionally does not provide:
- an application server
- a database
- a hosted dashboard
- browser automation
- load testing
- Docker orchestration
Those concerns are better handled by complementary tools.
