Hurl is a simple http client built on top of libcurl with Rust.
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.
This looks really great. I like that everything is defined in plaintext, but is there a way to link in other files? It might help clear up some clutter for large payloads. Environment variables might be good for using secrets more securely as well.
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.
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.
Yeah I saw the file option. I think it will be nifty when we have to do large request payloads, but ideally for example the sample, `echo GET http://httpbin.org/get | hurl` we could do something like: `hurl -i echo GET http://httpbin.org/get`. I understand its a bit subjective :)
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!