./main.sh http://your.host
finds queries in all .har files in the folder
which have http://your.host in their target
builds queries and runs them -> saves responses -> compares -> reports -> logs failures
*.har -> ./queries.sh ./responses ./expected ./log
...other.host...
...your.host... curl -XPOST ...1 -d '{..1}' {"a":1} {"a":1} Pass Diff at line: 2. query: curl '...'
...your.host... curl -XPOST ...2 -d '{..2}' {"b":1} {"b":2} Fail Response: { "userId": 1, ... }
...your.host... Expected: { "userId": 2, ... }
...other.host...
compare does sanitization both on ./responses and ./expected using ./sanitize
- Grab your favorite web browser save all the network traffic you have recorded in you current tab; and copy your .har file to this folder.
- Run
./main.sh https://yourdomain.here
. - Har.test will filter all the requests made to your domain and replays them in the original order.
- On the first run har.test will generate the
./expected
file based on your .har files;./expected
will be your snapshot but you can edit it; is just simply text. - Discover the jq tutorial and the local
./sanitize
file here in the repo, which serves not only as an example but har.test actively uses it. - Discover the source code main.sh.
- Tip: Don't forget to check out json.test a similar tool for when you don't have .har files.
- Give it a star and fork it, create your private clone, add your
.gitignore
to your needs and link it into your CI flow.
- The output will go to stdout so you could pipe it into a file for example, but there is a more detailed
./log
file. Also, the exit code can be 0 if all test passed, or 1 if any of the tests have failed, so is compatible with the standard CI tools.
- The original goal was to create an easy setup integration test runner and reporter using .har file.
- Small set of dependencies: some common GNU commands plus jq,
- ~100 lines of shell script - lightweight codebase,
- and so its easy to fork and hack it to your own needs.
- jq - stedolan.github.io
- curl - you probably have one already
- diff - same here
- awk - again
- har.test is running each .har file in alphabetical order syncronously
- also, each test cases are processed syncronously
- there is no HTTP response code checking
- there is no option for any kind of timing