DEV Community

Liudas
Liudas

Posted on

Bruno vs Rentgen — same cURL, very different consequences

There is a moment every developer knows.

You take a cURL. Maybe from Swagger. Maybe from logs. Maybe you copied it from the browser like a civilized person. You paste it into Bruno, press “Send”, and it works.

  1. Beautiful response.

At this point, someone leans back in their chair and says: “Looks good. Tested.”

And that, right there, is how bugs quietly book their flight to production.

Bruno is not the problem here. Bruno is actually very good. It does exactly what you expect: you send requests, organize them, keep things in Git, build collections, run flows. It’s clean, fast, doesn’t try to be smarter than you, which is already better than half the tools out there.

But here’s the uncomfortable bit.

Bruno does exactly what you tell it to do.

No more.

So if you didn’t think about removing a required field, it won’t happen. If you didn’t try sending a string instead of a number, nobody will. If you didn’t check what happens when the payload is slightly broken, the API will happily keep that secret until production introduces it to you at full speed.

This is where Rentgen walks in like an annoying inspector who doesn’t trust your “looks fine” attitude.

Because Rentgen starts where Bruno stops.

Not when the request fails. That would be too easy. It starts when the request works — which is precisely when most teams stop thinking. Rentgen takes that same perfectly working cURL and begins doing the things nobody bothers to do manually. It removes fields, breaks formats, stretches values, messes with enums, and generally behaves like the worst possible client your API will ever meet.

And suddenly, things get interesting.

That clean 200 becomes a 500. Validation disappears. Errors make no sense. Status codes start behaving like they were picked randomly by a drunk intern. Nothing catastrophic, nothing dramatic — just a collection of small, embarrassing problems that were always there, quietly waiting.

This is the part nobody likes to admit.

Most API bugs are not genius-level failures. They are laziness, assumptions, and the belief that “it worked once” somehow means “it works”.

It doesn’t.

What it means is that one very specific request, under very polite conditions, did not explode.

Congratulations.

Bruno helps you operate the API. Rentgen questions whether the API deserves to exist in its current state.

They are not competitors. They are different stages of reality.

You use Bruno to get things working. You use Rentgen to see how quickly they stop working.

And if you skip that second part, you end up with automated tests that confidently prove that your happy path still works, while everything else burns quietly in the background.

The sensible workflow is painfully simple. Get your request working in your client. Run it through something that doesn’t trust you. Fix what breaks. Only then write automation.

Anything else is just optimism with better tooling.

If you want the original version without the sarcasm, it’s here: https://rentgen.io/api-stories/Bruno-vs-Rentgen-same-cURL-different-job.html

Same cURL.

Very different outcome.

Top comments (0)