Show HN: Hurl – Run and test HTTP requests
hurl.dev
hurl.dev
It allows running http requests defined in a plain text format. It can be used to fetch data, or play a scenario (sequence of requests), asserting responses along the way. With its textual format, it is aimed for both devops and developers. With its command-line usage/simple unique binary, it is aimed for both local dev and continuous integration.
We've build Hurl to address our needs of integration tests. We've tried various solutions but all were flawed in some ways: difficult to integrate in a CI, not reliable etc... At the end of the day, we just wanted curl with the possibility to add tests, so we build it. We're using Hurl in our CI/CD from more than one year and are very happy with it!
Currently, releases are available for both Linux and macOS. Though we would like to add more features, our main objective is to keep it small, fast and simple.
Let us know what you think!
I'm actually working on a similar project (also in Rust) but targeting interactive use and differing environments. It's a tool I created for myself because I was tired of hand crafting curl commands and forgetting which env variables are set to what.
It is still very young but I'll link it anyway: https://github.com/mcastorina/repost
Looking at repost, I can see that there is definitely a place for an HTTP runner/tools that can do asserts on response.
For your suggestions, environnement variable support is certainly a good feature (actually, we can inject variable in the command line ex: hurl --variable user=dude file.hurl). Including another file is also a good suggestion. Currently we write tests by hand or sometimes generate the Hurl text file when we want to reuse steps, but a build-in support is a good idea.
POST https://example.net
file,data.bin;Aside: I tried to go through the samples and was having trouble running them successfully.
For the sample, maybe this is not obvious but you have to write the sample in a text file:
$ vi test.hurl
GET https://news.ycombinator.com
HTTP/1.1 200
And then use this file with Hurl:$ hurl test.hurl
man hurl
:) But as English is not our primary language, there must be a lot of typo/bad English