Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

README.md

GitHub code size in bytes

har.test

API integration test runner and reporter using .har files

How it works

./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

Intro

  1. 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.
  2. Run ./main.sh https://yourdomain.here.
  3. Har.test will filter all the requests made to your domain and replays them in the original order.
  4. 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.
  5. 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.
  6. Discover the source code main.sh.
  7. Tip: Don't forget to check out json.test a similar tool for when you don't have .har files.
  8. Give it a star and fork it, create your private clone, add your .gitignore to your needs and link it into your CI flow.

Output

  • 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.

Goal

  • The original goal was to create an easy setup integration test runner and reporter using .har file.

Advantages

  • 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.

Dependencies

  • jq - stedolan.github.io
  • curl - you probably have one already
  • diff - same here
  • awk - again

Limitations that might change in the future

  • 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

References and similar or other .har tools

Similar tool without .har

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.