by flykespice on 6/20/25, 3:55 AM with 105 comments
by dm03514 on 6/20/25, 1:26 PM
For my uses it's great that it has both test suite mode and individual invocation mode. I use it to execute a test suite of HTTP requests against a service in CI.
I'm not a super big fan of the configuration language, the blocks are not intuitive and I found some lacking in the documentation assertions that are supported.
Overall the tool has been great, and has been extremely valuable.
I started using interface testing when working on POCs. I found this helps with LLM-assisted development. Tests are written to directly exercise the HTTP methods, it allows for fluidity and evolution of the implementations as the project is evolving.
I also found the separation of testing very helpful, and it further enforces the separation between interface and implementation. Before hurl, the tests I wrote would be written in the test framework of the language the service is written in. The hurl-based tests really help to enforce the "client" perspective. There is no backdoor data access or anything, just strict separation betwen interface, tests and implementation :)
by 1a527dd5 on 6/20/25, 7:13 AM
We had a test suite using Runscope, I hated that changes weren't versioned controlled. Took a little grunt work and I converted them in Hurl (where were you AI?) and got rid of Runscope.
Now we can see who made what change when and why. It's great.
by jicea on 6/20/25, 5:13 AM
by perrygeo on 6/20/25, 12:48 PM
Worth mentioning that using Hurl in Rust specifically gives you a nice bonus feature: integration with cargo test tooling. Since Hurl is written in Rust, you can hook into hurl-the-library and reuse your .hurl files directly in your test suite. Demo: https://github.com/perrygeo/axum-hurl-test
by hliyan on 6/20/25, 12:04 PM
[1] https://github.com/Orange-OpenSource/hurl?tab=readme-ov-file...
by twodave on 6/20/25, 12:52 PM
by 3eb7988a1663 on 6/20/25, 3:56 PM
There is probably something to be said for keeping a hard boundary between the backend and testing code, but this would require more effort to create and maintain. I would still need to run the native test suite, so reaching out to an external tool feels a little weird. Unless it was just to ensure an API was fully generic enough for people to run their own clients against it.
by chvid on 6/20/25, 5:14 AM
https://marketplace.visualstudio.com/items?itemName=humao.re...
Which is a banger VS Code extension for all sorts of http xyz testing.
by kalli on 6/20/25, 9:24 AM
One annoying thing I've found in testing these tools is that a standard hasn't emerged for using the results of one request as input for another in the syntax of `.http` files. These three tools for instance have three different ways of doing it:
* hurl uses `[Captures]`
* Vscode-restclient does it by referencing request names in a variable declaration (like: `@token = {{loginAPI.response.body.token}}`).
* While httpyac uses `@ref` syntax.
From a quick round of testing it seems like using the syntax for one might break the other tools.
[1]: https://hurl.dev/docs/capturing-response.html
[2]: https://github.com/Huachao/vscode-restclient
[3]: https://httpyac.github.io/guide/metaData.html#ref-and-forcer...
by a57721 on 6/20/25, 8:09 AM
It gives you full control of constructing requests and assertions because test scenarios may include arbitrary JavaScript.
by mdtrooper on 6/20/25, 8:43 AM
by the_arun on 6/20/25, 5:20 AM
by manithree on 6/20/25, 3:01 PM
Kinda niche, but I wrapped libhurl to make it really easy to make an AWS Lambda availability monitor out of a hurl file https://gitlab.com/manithree/hurl_lambda
by Thaxll on 6/20/25, 1:06 PM
https://github.com/Orange-OpenSource/hurl/blob/master/Cargo....
by sanix-darker on 6/23/25, 1:22 AM
by laerus on 6/20/25, 4:48 AM
by yoavm on 6/20/25, 12:26 PM
by mikmoila on 6/21/25, 9:40 PM
by infogulch on 6/20/25, 3:35 PM
It would be nice to have fancy-regex; today I tried to write a regex to match a case like this ~ <link href="/assets/reset.css\\?hash=(.*)" integrity="\\1" rel="stylesheet"> ~ but the regex crate (and thus hurl asserts) can't do backreferences so I guess I'll just live without checking that these two substrings match.
I wish there was some way to test streamed updates / SSE. Basically, open a connection and wait, then run some other http requests, then assert the accumulated stream from the original connection. https://github.com/Orange-OpenSource/hurl/discussions/2636
by lelanthran on 6/20/25, 7:56 AM
The deficiencies in huel with client state management is not easy to fix.
What I'd like is full client state control with better variable management and use.
For my last project I used Python to write the tests, which appears to work well initially. Dunno how well it will hold up for ongoing maintenance.
by cyri on 6/20/25, 2:42 PM
We used it very often a couple of years ago. Will try hurl.
by zoidb on 6/20/25, 5:26 AM
by antisceptic on 6/20/25, 5:29 AM
I don't really feel the need for a curl replacement. In the past I've used httpie which is pretty slick but I end up falling back to writing tests in python using requests library.
Maybe I'm not the target audience here, but I should still say something nice I guess. It's nice that it's written in Rust, and open source tooling is in need of fresh projects ever since everyone started bunkering up against the AI monolith scraping all their work. We should celebrate this kind of project, I just wish I had a use for it.
by gabesullice on 6/20/25, 5:48 AM
by johns on 6/20/25, 5:04 PM
by renegat0x0 on 6/20/25, 2:02 PM
You make GET request to server with any of supported crawlers and obtain result in JSON
https://github.com/rumca-js/crawler-buddy/
Supports request, selenium, Httpx, curl cffi, etc
by globular-toast on 6/20/25, 8:20 AM
What about test isolation? Are people using something else to "prime" the service before/after running these tests?
by zackify on 6/20/25, 2:38 PM
by jorgeleo on 6/20/25, 12:43 PM
by kqr on 6/20/25, 5:21 PM
Sounds a lot like Emacs' restclient-mode, and I can absolutely see the appeal for those which don't already have an Emacs session open.
by genericspammer on 6/20/25, 7:06 AM
by ninetyninenine on 6/20/25, 1:23 PM
I don’t think the DSL is significantly easier than a PL and it’s more limited to?
Is it because of raw speed or ease of reading the DSL?
by jcmfernandes on 6/20/25, 2:47 PM
by WhitneyLand on 6/20/25, 12:46 PM
“Get data from the last log entry in <file> and post it to <url>”
by the_arun on 6/20/25, 5:33 AM
by epalm on 6/20/25, 9:57 AM
by davidcalloway on 6/20/25, 5:17 AM
by wiradikusuma on 6/20/25, 3:00 PM
by deepsun on 6/20/25, 7:18 PM
by kaan_keskin on 6/20/25, 6:39 AM
by lambda-science on 6/20/25, 9:32 AM
by molszanski on 6/20/25, 8:02 AM
by QuiCasseRien on 6/20/25, 7:31 AM
première fois que je vois qqch de cool sortir d'orange.
by blueflow on 6/20/25, 10:55 AM