Fault injection
Latency spikes, connection resets, timeouts, body corruption, and HTTP errors — each with independent probability.
MIT licensed · zero dependencies
BlipBurst injects latency, resets, timeouts, corrupted bodies, and HTTP errors into your requests — with circuit breakers, retry strategies, and seeded determinism — so you find the failure paths before your users do.
npm install blipburst
What's inside
Latency spikes, connection resets, timeouts, body corruption, and HTTP errors — each with independent probability.
Netflix Hystrix–style closed / open / half-open states, tunable thresholds and cool-down timeout.
Fixed, linear, or exponential backoff with optional jitter and a configurable retry status list.
Named presets — flaky, cascade, brownout, outage, slowdown — for one-line scenario setup.
Patch fetch, axios, or Angular's HttpClient globally — zero call-site changes.
Deterministic fault sequences for reproducible CI runs — same seed, same failures, every time.
p50 / p95 / p99 latency metrics, a structured JSON logger with a pluggable transport, and a webhook emitter for Slack or PagerDuty.
Capture a real fault sequence once, then replay it exactly to reproduce a flaky-test failure on demand.
NestJS module, Express middleware, Next.js (API routes, Route Handlers, Middleware), and a React hook — plus withBlip() / expectRetried() for Vitest and Jest.
One enabled option or a BLIPBURST_ENABLED env var — run chaos in dev and staging, guarantee it's off in production, without touching your fault config.
Quick start
Faults are declarative — no request interception boilerplate. Combine them with a retry policy and circuit breaker, or reach for a named profile when you just want a realistic failure mode fast.
Full API reference →import { BlipBurst } from 'blipburst';
const sim = new BlipBurst({
faults: [
{ kind: 'latency', minMs: 100, maxMs: 500, probability: 0.4 },
{ kind: 'httpError', statusCode: 503, probability: 0.2 },
],
retry: { maxRetries: 3, backoff: 'exponential', jitter: true },
circuitBreaker: { failureThreshold: 5, timeout: 30000 },
seed: 42, // deterministic in CI
});
const data = await sim.makeRequest();
const m = sim.getMetrics();
console.log(m.latency.p99, m.faultStats);
Companion tool
dashboard-blipburst is a separate, globally-installable CLI that spins up a
local dashboard: a live fault feed, a heatmap of which endpoints actually get
chaos-tested (and which never do), MTTR per fault type, and a history of past
experiment runs. Point BlipBurst's existing logger.transport or
webhook config at it — no changes to your BlipBurst setup required.
npm install -g dashboard-blipburst
FAQ
Yes — it's zero-dependency and runs in any JS runtime. In intercept mode it can globally patch fetch, axios, or Angular's HttpClient.
Pass a seed and get the exact same fault sequence every time — useful for reproducing a flaky CI failure on demand.
No — those mock responses. BlipBurst injects realistic failure modes on top of your real requests, with retry and circuit-breaker logic to test against.
Yes — the companion dashboard-blipburst CLI gives you a live fault feed, a coverage heatmap, and MTTR per fault type.
NestJS (module), Express (middleware), Next.js (API routes, Route Handlers, Middleware), and React (hook) — plus withBlip() / expectRetried() helpers for Vitest and Jest. Anything else works via BlipBurst.interceptFetch(), which patches global fetch.
Yes — the repo ships an AGENTS.md written specifically for coding agents: a decision tree for picking the right adapter, the design principles behind the adapter layout, and a template for adding support for a framework that isn't listed above.
Yes — MIT licensed, free and open source, no paid tier.