Skip to main content

Interactive CLI

This is the fastest path if you want to feel the core Hen model from the terminal.

If you already have an OpenAPI spec and want a generated starting point instead of hand-authoring a first file, use hen import to create an editable .hen collection from the contract.

Create hello.hen

name = Hello Hen

---

Fetch todo

GET https://jsonplaceholder.typicode.com/todos/1

# should have status code 200
^ & status == 200

# should have id 1
^ & body.id == 1

# should have userId 1
^ & body.userId == 1

# Capture the userId for use in the next request
& body.userId -> $USER_ID

---

Fetch user

> requires: Fetch todo

GET https://jsonplaceholder.typicode.com/users/{{ USER_ID }}

# should have status code 200
^ & status == 200

# userId should match the one from the previous request
^ & body.id == $USER_ID

# should have a defined username
^ & body.username != null

Run it

Running the collection without a specifier defaults to running all requests, so you can use:

hen run ./hello.hen

This will prompt you to select which request to run.

Select a request.:
0. Fetch todo
> 1. Fetch user

Selecting Fetch user will run both requests, since the second request depends on the first.

✅ [Fetch todo] [should have status code 200]
✅ [Fetch todo] [should have id 1]
✅ [Fetch todo] [should have userId 1]
[ok] #0 Fetch todo (GET https://jsonplaceholder.typicode.com/todos/1) — 200 OK — 321 ms

✅ [Fetch user] [should have status code 200]
✅ [Fetch user] [userId should match the one from the previous request]
✅ [Fetch user] [should have a defined username]
[ok] #1 Fetch user (GET https://jsonplaceholder.typicode.com/users/{{USER_ID}}) — 200 OK — 171 ms

What you just used

  1. Two requests in one collection
  2. Inline assertions
  3. A capture that feeds a later request
  4. One command surface for validation and execution