Testing & CI

Make outbound HTTP in your test suite boring again

Tests that reach real third-party APIs fail for reasons unrelated to your code. A relay gives CI one stable endpoint, one key per pipeline and a record showing exactly what a red build requested.

Where it goes wrong

Flaky suites usually blame the network: a fetch with no timeout, a sandbox endpoint that rate-limits, a credential pasted into a workflow file. Debugging then means reproducing a request nobody wrote down.

What Backfire handles

  • One endpoint and one key per CI pipeline, revocable without touching test code.
  • Enforced timeouts turn a hung dependency into a failed assertion instead of a stuck job.
  • Every call is logged with status and duration, so a failing run has evidence attached.
  • Refused calls — blocked target, bad key, rate limit — cost nothing.

The request

example
const CALLS = [];

async function callUpstream(path) {
  const envelope = await (await fetch('https://backfireapi.base44.app/functions/forward', {
    method: 'POST',
    headers: { Authorization: `Bearer ${process.env.BACKFIRE_KEY}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ url: path, method: 'GET', timeout_ms: 5000 }),
  })).json();

  CALLS.push({ path, result: envelope.ok ? envelope.upstream.status : envelope.error.code });
  if (!envelope.ok) throw new Error(envelope.error.code);
  return envelope.body;
}

afterAll(() => console.log(CALLS)); // what this run actually requested

All use cases

Questions about this

Keep reading

Try it with 5,000 free trips.

No card, no subscription, and the balance never expires.