QUICK START GUIDE

Up and running in 5 minutes

Hephaestus runs inside Postman as a collection-level script. No npm install, no build step โ€” just paste and run.

โœ“ Postman 10+ โœ“ Newman 6+ No local Node.js required for Postman MIT License
โš™

Prerequisites

You need Postman (free) and optionally Newman for CI runs:

Tip: If you want to use the CLI tools (npm run docs, npm run compare, etc.), run npm install in the repo root once.
1

Create or open your collection

You can start fresh or add Hephaestus to an existing collection.

  1. In Postman, click New โ†’ Collection
  2. Name it (e.g. My API)
  3. Alternatively, import collection/hephaestus-template.postman_collection.json from this repo โ€” it comes pre-wired
Recommended: Use the template collection. It includes the engine-update helper request, a working example folder, and pre-configured collection variables.
2

Load the engine into collection variables

The engine lives in two collection variables: hephaestus.v3.pre and hephaestus.v3.post. The easiest way is to run the included setup request:

  1. Open the ๐Ÿ› ๏ธ Hephaestus System folder in the template collection
  2. Run ๐Ÿ”ง engine-update โ€” it fetches the latest engine from GitHub and saves it to collection variables

Or do it manually via the Collection Variables tab โ€” paste the contents of engine/pre-request.js into hephaestus.v3.pre and engine/post-request.js into hephaestus.v3.post.

Collection โ†’ Pre-request (one-time setup)
// This is already in the template collection's Pre-request script.
// It loads the engine from GitHub on first run.
const version = pm.collectionVariables.get('hephaestus.version') || 'main';
// Engine is auto-loaded by engine-update.js setup request
3

Configure hephaestus.defaults

Open Collection Variables and set hephaestus.defaults to a JSON config. This applies to all requests in the collection.

hephaestus.defaults (collection variable)
{
  "baseUrl": "https://api.example.com",
  "auth": { "enabled": false, "type": "none" },
  "expectedStatus": [200, 201, 202],
  "maxResponseTime": 2000,
  "contentType": "json",
  "snapshot": { "enabled": false, "mode": "non-strict" },
  "secrets": ["token", "password", "secret", "key"],
  "ci": false,
  "logLevel": "normal",
  "softFail": false,
  "envRequired": []
}

Copy the full template from setup/defaults.json in the repo. Use the init wizard to generate it interactively:

Terminal
npm run init   # interactive wizard โ€” generates defaults.json + environment template
4

Add your first request

Every request follows the same pattern: override object in the Pre-request and Test scripts, then eval() to run the engine.

Pre-request Script (copy from templates/method.pre-request.js)
const override = {
  // Optional: override baseUrl for this specific request
  // baseUrl: "https://other-api.example.com",

  // Auth override (if different from defaults)
  // auth: { enabled: true, type: "bearer", token: "{{prod.token}}" },
};

eval(pm.collectionVariables.get("hephaestus.v3.pre"));
Test Script (copy from templates/method.post-request.js)
const override = {

  expectedStatus: 200,
  maxResponseTime: 1000,

  // Check response structure
  assertShape: {
    "data.id":   "number",
    "data.name": "string",
    "error":     "absent",
  },

  // Save a value for the next request
  varsToSave: {
    userId: { path: "data.id", scope: "collection", name: "lastUserId" }
  },

};

eval(pm.collectionVariables.get("hephaestus.v3.post"));
Pro tip: Templates are in templates/. Copy them as starting points for every new request. The engine is the only thing that changes between releases โ€” your override stays the same.
5

Run & verify

Hit Send in Postman. Open the Console (View โ†’ Show Postman Console) to see the Hephaestus output:

Postman Console output
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  HEPHAESTUS v3.8.0  ยท  POST-REQUEST
โ•‘  ๐Ÿ“… 2026-04-07 12:34:56 UTC
โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
โ•‘  ๐Ÿ“‹  GET  Get User
โ•‘  ๐ŸŒ  https://api.example.com/users/42
โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
โ•‘  โœ… STATUS  200 โ€” OK
โ•‘  โฑ   124 ms   ๐Ÿ“ฆ 1.2 KB   ๐Ÿ“„ JSON
โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
โ•‘  ๐Ÿ“ค RESPONSE PREVIEW
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
{ "data": { "id": 42, "name": "John Doe", ... } }
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
โ•‘  ๐Ÿงฉ shape "data.id": number โœ…
โ•‘  ๐Ÿงฉ shape "data.name": string โœ…
โ•‘  ๐Ÿงฉ shape "error": absent โœ…
โ•‘  ๐Ÿ’พ SAVED    'userId' โ†’ collection โœ…
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Check the Test Results tab to see all assertion outcomes. Green = pass. If something fails, you'll see exactly which field and why.

6

Run in CI with Newman

Export your collection and environment from Postman, then run with Newman:

Terminal
# Install Newman once
npm install -g newman

# Run collection
newman run collection.json \
  -e environments/prod.json \
  --reporter-json-export results.json \
  -r json

# View rich summary
npm run summary -- results.json

# Generate HTML report
npm run report -- results.json report.html

# Convert to JUnit XML for CI
npm run ci-to-junit -- results.json junit.xml
Docker alternative: No Newman install needed.
bash scripts/docker-run.sh -c collection.json -e env.json -o reports/

See the full Newman + CI Guide for GitHub Actions, GitLab CI, and Jenkins examples.

What's next?

Now that you're up and running, explore the full feature set: