Files
playbook/antigravity-awesome-skills/skills/postman-newman-automation/SKILL.md
T
2026-07-01 16:02:41 +00:00

312 lines
8.2 KiB
Markdown

---
name: postman-newman-automation
description: Generate Newman CLI commands, configuration files, Jenkins pipeline scripts, and shell automation for running Postman collections in CI/CD or local environments. Use this skill whenever the user wants to run Postman collections from the command line, automate API tests, integrate...
risk: unknown
source: https://github.com/LambdaTest/agent-skills/tree/main/api-skill/postman/postman-to-newman
source_repo: LambdaTest/agent-skills
source_type: community
date_added: 2026-07-01
license: MIT
license_source: https://github.com/LambdaTest/agent-skills/blob/main/LICENSE
---
# Postman Newman Automation
## When to Use
Use this skill when you need generate Newman CLI commands, configuration files, Jenkins pipeline scripts, and shell automation for running Postman collections in CI/CD or local environments. Use this skill whenever the user wants to run Postman collections from the command line, automate API tests, integrate...
Generates **Newman CLI** commands, **shell scripts**, and **Jenkins pipeline** configs
for running Postman collections in automated environments.
---
## Newman Basics
Newman is Postman's CLI runner. Install with:
```bash
npm install -g newman
# Optional HTML reporter:
npm install -g newman-reporter-htmlextra
```
### Core Command Structure
```bash
newman run <collection> \
--environment <env-file> \
--globals <globals-file> \
--iteration-count <n> \
--iteration-data <csv-or-json> \
--reporters <reporter-list> \
--reporter-htmlextra-export <output.html> \
--reporter-junit-export <results.xml> \
--timeout-request <ms> \
--delay-request <ms> \
--bail \
--color on
```
---
## Step 1 — Gather Requirements
Ask or infer from context:
| Parameter | Question |
|---|---|
| Collection source | File path, URL, or Postman API UID? |
| Environment | File path or inline variables? |
| Reporter(s) | CLI only, HTML report, JUnit XML? |
| Fail behavior | Stop on first failure (`--bail`) or run all? |
| Iterations | Single run or data-driven (CSV/JSON)? |
| Target | Local shell, Jenkins, or both? |
---
## Step 2 — Generate Newman Command
### Basic run (local)
```bash
newman run collection.json \
--environment environment.json \
--reporters cli,htmlextra \
--reporter-htmlextra-export reports/report.html \
--bail
```
### Run from Postman API (by UID)
```bash
newman run "https://api.getpostman.com/collections/<UID>?apikey={{POSTMAN_API_KEY}}" \
--environment environment.json \
--reporters cli,junit \
--reporter-junit-export results/junit.xml
```
### Data-driven run (CSV)
```bash
newman run collection.json \
--iteration-data test-data.csv \
--iteration-count 5 \
--reporters cli,htmlextra \
--reporter-htmlextra-export reports/data-driven-report.html
```
### With environment variable overrides (no file needed)
```bash
newman run collection.json \
--env-var "base_url=https://staging.api.example.com" \
--env-var "token=abc123" \
--reporters cli
```
---
## Step 3 — Shell Script
Generate a reusable shell script:
```bash
#!/bin/bash
set -e
# Configuration
COLLECTION="./collection.json"
ENVIRONMENT="./environment.json"
REPORT_DIR="./reports"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
# Ensure report directory exists
mkdir -p "$REPORT_DIR"
echo "Running Newman collection: $COLLECTION"
newman run "$COLLECTION" \
--environment "$ENVIRONMENT" \
--reporters cli,htmlextra,junit \
--reporter-htmlextra-export "$REPORT_DIR/report_$TIMESTAMP.html" \
--reporter-junit-export "$REPORT_DIR/junit_$TIMESTAMP.xml" \
--timeout-request 10000 \
--bail
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
echo "✅ All tests passed."
else
echo "❌ Tests failed. Check report: $REPORT_DIR/report_$TIMESTAMP.html"
exit $EXIT_CODE
fi
```
---
## Step 4 — Jenkins Pipeline
### Declarative Jenkinsfile (preferred)
```groovy
pipeline {
agent any
environment {
POSTMAN_ENV = credentials('postman-environment-file') // Jenkins credential ID
}
stages {
stage('Install Newman') {
steps {
sh 'npm install -g newman newman-reporter-htmlextra'
}
}
stage('Run API Tests') {
steps {
sh """
newman run collection.json \\
--environment ${POSTMAN_ENV} \\
--reporters cli,htmlextra,junit \\
--reporter-htmlextra-export reports/report.html \\
--reporter-junit-export reports/junit.xml \\
--timeout-request 10000 \\
--bail
"""
}
}
}
post {
always {
// Archive HTML report
publishHTML(target: [
allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'reports',
reportFiles: 'report.html',
reportName: 'Newman API Test Report'
])
// Archive JUnit results
junit 'reports/junit.xml'
}
failure {
echo 'API tests failed! Check the Newman report.'
}
}
}
```
### Scripted Jenkinsfile (if declarative not available)
```groovy
node {
stage('Install Newman') {
sh 'npm install -g newman newman-reporter-htmlextra'
}
stage('Run API Tests') {
try {
sh """
newman run collection.json \\
--environment environment.json \\
--reporters cli,junit \\
--reporter-junit-export reports/junit.xml \\
--bail
"""
} catch (err) {
currentBuild.result = 'FAILURE'
throw err
} finally {
junit 'reports/junit.xml'
}
}
}
```
### Jenkins with environment variables (no credentials file)
```groovy
environment {
BASE_URL = 'https://api.example.com'
API_TOKEN = credentials('api-token-secret')
}
steps {
sh """
newman run collection.json \\
--env-var "base_url=${BASE_URL}" \\
--env-var "token=${API_TOKEN}" \\
--reporters cli,junit \\
--reporter-junit-export results/junit.xml
"""
}
```
---
## Step 5 — Reporter Reference
| Reporter | Install | Flag | Output |
|---|---|---|---|
| `cli` | built-in | `--reporters cli` | Terminal output |
| `junit` | built-in | `--reporters junit` | JUnit XML (for Jenkins) |
| `htmlextra` | `npm i -g newman-reporter-htmlextra` | `--reporters htmlextra` | Rich HTML report |
| `json` | built-in | `--reporters json` | Raw JSON results |
Multiple reporters: `--reporters cli,htmlextra,junit`
---
## Step 6 — Output
Provide based on what the user needs:
1. **Newman command** — ready to paste in terminal
2. **Shell script** (`run-tests.sh`) — with exit code handling
3. **Jenkinsfile** — declarative or scripted based on context
4. **Setup notes** — Node.js version requirement (≥14), npm install commands
5. **Report locations** — where output files will be written
---
## Common Flags Quick Reference
| Flag | Purpose |
|---|---|
| `--bail` | Stop run on first test failure |
| `--timeout-request 5000` | Per-request timeout in ms |
| `--delay-request 200` | Delay between requests in ms |
| `--iteration-count 3` | Run collection N times |
| `--folder "Folder Name"` | Run only a specific folder |
| `--env-var "k=v"` | Inline environment variable |
| `--suppress-exit-code` | Always exit 0 (don't fail CI) |
| `--verbose` | Show full request/response details |
| `--color off` | Disable color (useful for logs) |
---
## After Completing the Newman Commands
Once the CLI command output is delivered, ask the user:
"Would you like me to generate API documentation for this design? (yes/no)"
If the user says **yes**:
- Check if the API Documentation skill is available in the installed skills list
- If the skill **is available**:
- Read and follow the instructions in the API Documentation skill
- Use the API design output above as the input
- Deliver the documentation as plain text output
- If the skill **is NOT available**:
- Inform the user: "It looks like the API Documentation skill isn't installed.
You can install it and re-run.
If the user says **no**:
- End the task here
---
## Limitations
- Use this skill only when the task clearly matches its upstream source and local project context.
- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.