✅
CLI Comprehensive Test Suite
/app/tests/cli-comprehensive-test.yaml
critical
10 Steps
Duration: 55ms
Success Rate: 100%
✅
Successful Steps
10
100% success rate
❌
Failed Steps
0
0% of total
⏭️
Skipped Steps
0
0% of total
🔗
HTTP Requests
10
100% requests
🔄
Iterações
0
0 steps com iterações
📊 Execution Timeline
| # | Status | Step Name | Type | Duration | Started At | Details |
|---|---|---|---|---|---|---|
| 1 | ✅ | Test basic execution (no flags) GET /get | request | 28ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 2 | ✅ | Test environment variable resolution GET /headers | request | 4ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 3 | ✅ | Test priority filtering compatibility GET /status/200 | request | 1ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 4 | ✅ | Test tag filtering compatibility GET /json | request | 1ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 5 | ✅ | Test node filtering compatibility GET /user-agent | request | 3ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 6 | ✅ | Test verbose output compatibility POST /post | request | 3ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 7 | ✅ | Test silent mode compatibility GET /ip | request | 2ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 8 | ✅ | Test detailed mode compatibility PUT /put | request | 2ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 9 | ✅ | Test dry-run compatibility GET /get | request | 3ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
| 10 | ✅ | Test logging flag compatibility GET /cache/60 | request | 2ms | 19/10/2025, 10:28:37 |
✅ Request completed successfully
|
🌐 HTTP Requests Debug Info
✅
Test basic execution (no flags)
Step #1
28ms
cURL Command
curl -X GET -H 'X-Test-Purpose: CLI basic execution test' "http://httpbin/get"📤 Request
Method: GET
URL:
http://httpbin/get Base URL:
http://httpbin Request Headers
X-Test-Purpose: CLI basic execution test📥 Response
Status Code: 200
Duration: 28ms
Size: 280 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 345
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"args": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Host": "httpbin",
"User-Agent": "axios/1.12.1",
"X-Test-Purpose": "CLI basic execution test"
},
"origin": "172.18.0.3",
"url": "http://httpbin/get"
} 📊
Total
2
assertions
✅
Passed
2
assertions
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
✓
body.headers."X-Test-Purpose".equals
PASSED
✓ Match
Condição
body.headers."X-Test-Purpose".equals equals CLI basic execution test
Assertion passou conforme esperado
Valor recebido: CLI basic execution test
Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test environment variable resolution
Step #2
4ms
cURL Command
curl -X GET -H 'X-Environment: testing' -H 'X-CLI-Test: CLI comprehensive test execution' "http://httpbin/headers"📤 Request
Method: GET
URL:
http://httpbin/headers Base URL:
http://httpbin Request Headers
X-Environment: testing
X-CLI-Test: CLI comprehensive test execution📥 Response
Status Code: 200
Duration: 4ms
Size: 251 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 308
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Host": "httpbin",
"User-Agent": "axios/1.12.1",
"X-Cli-Test": "CLI comprehensive test execution",
"X-Environment": "testing"
}
} 📊
Total
3
assertions
✅
Passed
3
assertions
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
✓
body.headers."X-Environment".equals
PASSED
✓ Match
Condição
body.headers."X-Environment".equals equals testing
Assertion passou conforme esperado
Valor recebido: testing
✓
body.headers."X-Cli-Test".equals
PASSED
✓ Match
Condição
body.headers."X-Cli-Test".equals equals CLI comprehensive test execution
Assertion passou conforme esperado
Valor recebido: CLI comprehensive test execution
Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test priority filtering compatibility
Step #3
1ms
cURL Command
curl -X GET "http://httpbin/status/200"📤 Request
Method: GET
URL:
http://httpbin/status/200 Base URL:
http://httpbin 📥 Response
Status Code: 200
Duration: 1ms
Size: 0 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: text/html; charset=utf-8
access-control-allow-origin: *
access-control-allow-credentials: true
content-length: 0 📊
Total
1
assertions
✅
Passed
1
assertion
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test tag filtering compatibility
Step #4
1ms
cURL Command
curl -X GET "http://httpbin/json"📤 Request
Method: GET
URL:
http://httpbin/json Base URL:
http://httpbin 📥 Response
Status Code: 200
Duration: 1ms
Size: 274 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 429
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"slideshow": {
"author": "Yours Truly",
"date": "date of publication",
"slides": [
{
"title": "Wake up to WonderWidgets!",
"type": "all"
},
{
"items": [
"Why <em>WonderWidgets</em> are great",
"Who <em>buys</em> WonderWidgets"
],
"title": "Overview",
"type": "all"
}
],
"title": "Sample Slide Show"
}
} 📊
Total
2
assertions
✅
Passed
2
assertions
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
✓
body.slideshow.exists
PASSED
✓ Match
Condição
body.slideshow.exists equals true
Assertion passou conforme esperado
Valor recebido: true
Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test node filtering compatibility
Step #5
3ms
cURL Command
curl -X GET "http://httpbin/user-agent"📤 Request
Method: GET
URL:
http://httpbin/user-agent Base URL:
http://httpbin 📥 Response
Status Code: 200
Duration: 3ms
Size: 29 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 35
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"user-agent": "axios/1.12.1"
} 📊
Total
1
assertions
✅
Passed
1
assertion
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
Captured Variables
{
"user_agent_value": "axios/1.12.1"
}Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test verbose output compatibility
Step #6
3ms
cURL Command
curl -X POST -H 'Content-Type: application/json' -d '{"message":"Testing verbose CLI output","timestamp":"2024-01-01T00:00:00Z","test_type":"verbose_compatibility"}' "http://httpbin/post"📤 Request
Method: POST
URL:
http://httpbin/post Base URL:
http://httpbin Request Headers
Content-Type: application/jsonRequest Body
{
"message": "Testing verbose CLI output",
"timestamp": "2024-01-01T00:00:00Z",
"test_type": "verbose_compatibility"
}📥 Response
Status Code: 200
Duration: 3ms
Size: 567 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 682
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"args": {},
"data": "{\"message\":\"Testing verbose CLI output\",\"timestamp\":\"2024-01-01T00:00:00Z\",\"test_type\":\"verbose_compatibility\"}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Content-Length": "111",
"Content-Type": "application/json",
"Host": "httpbin",
"User-Agent": "axios/1.12.1"
},
"json": {
"message": "Testing verbose CLI output",
"test_type": "verbose_compatibility",
"timestamp": "2024-01-01T00:00:00Z"
},
"origin": "172.18.0.3",
"url": "http://httpbin/post"
} 📊
Total
3
assertions
✅
Passed
3
assertions
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
✓
body.json.message.equals
PASSED
✓ Match
Condição
body.json.message.equals equals Testing verbose CLI output
Assertion passou conforme esperado
Valor recebido: Testing verbose CLI output
✓
body.json.test_type.equals
PASSED
✓ Match
Condição
body.json.test_type.equals equals verbose_compatibility
Assertion passou conforme esperado
Valor recebido: verbose_compatibility
Captured Variables
{
"verbose_test_url": "http://httpbin/post",
"verbose_response_time": null
}Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test silent mode compatibility
Step #7
2ms
cURL Command
curl -X GET "http://httpbin/ip"📤 Request
Method: GET
URL:
http://httpbin/ip Base URL:
http://httpbin 📥 Response
Status Code: 200
Duration: 2ms
Size: 23 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 29
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"origin": "172.18.0.3"
} 📊
Total
2
assertions
✅
Passed
2
assertions
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
✓
body.origin.exists
PASSED
✓ Match
Condição
body.origin.exists equals true
Assertion passou conforme esperado
Valor recebido: true
Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test detailed mode compatibility
Step #8
2ms
cURL Command
curl -X PUT -H 'Content-Type: application/json' -d '{"operation":"CLI detailed mode test","data":{"nested_field":"test_value","array_field":[1,2,3]}}' "http://httpbin/put"📤 Request
Method: PUT
URL:
http://httpbin/put Base URL:
http://httpbin Request Headers
Content-Type: application/jsonRequest Body
{
"operation": "CLI detailed mode test",
"data": {
"nested_field": "test_value",
"array_field": [
1,
2,
3
]
}
}📥 Response
Status Code: 200
Duration: 2ms
Size: 537 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 703
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"args": {},
"data": "{\"operation\":\"CLI detailed mode test\",\"data\":{\"nested_field\":\"test_value\",\"array_field\":[1,2,3]}}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Content-Length": "97",
"Content-Type": "application/json",
"Host": "httpbin",
"User-Agent": "axios/1.12.1"
},
"json": {
"data": {
"array_field": [
1,
2,
3
],
"nested_field": "test_value"
},
"operation": "CLI detailed mode test"
},
"origin": "172.18.0.3",
"url": "http://httpbin/put"
} 📊
Total
3
assertions
✅
Passed
3
assertions
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
✓
body.json.operation.equals
PASSED
✓ Match
Condição
body.json.operation.equals equals CLI detailed mode test
Assertion passou conforme esperado
Valor recebido: CLI detailed mode test
✓
body.json.data.nested_field.equals
PASSED
✓ Match
Condição
body.json.data.nested_field.equals equals test_value
Assertion passou conforme esperado
Valor recebido: test_value
Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test dry-run compatibility
Step #9
3ms
cURL Command
curl -X GET "http://httpbin/get"📤 Request
Method: GET
URL:
http://httpbin/get Base URL:
http://httpbin 📥 Response
Status Code: 200
Duration: 3ms
Size: 236 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 294
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"args": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Host": "httpbin",
"User-Agent": "axios/1.12.1"
},
"origin": "172.18.0.3",
"url": "http://httpbin/get"
} 📊
Total
1
assertions
✅
Passed
1
assertion
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
} ✅
Test logging flag compatibility
Step #10
2ms
cURL Command
curl -X GET "http://httpbin/cache/60"📤 Request
Method: GET
URL:
http://httpbin/cache/60 Base URL:
http://httpbin 📥 Response
Status Code: 200
Duration: 2ms
Size: 241 bytes
Response Headers
server: gunicorn/19.9.0
date: Sun, 19 Oct 2025 10:28:37 GMT
connection: keep-alive
content-type: application/json
content-length: 299
cache-control: public, max-age=60
access-control-allow-origin: *
access-control-allow-credentials: trueResponse Body
{
"args": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Host": "httpbin",
"User-Agent": "axios/1.12.1"
},
"origin": "172.18.0.3",
"url": "http://httpbin/cache/60"
} 📊
Total
2
assertions
✅
Passed
2
assertions
📈
Success Rate
100%
success
✓
status_code
PASSED
✓ Match
Condição
status_code equals 200
Assertion passou conforme esperado
Valor recebido: 200
✓
headers.cache-control.exists
PASSED
✓ Match
Condição
headers.cache-control.exists equals true
Assertion passou conforme esperado
Valor recebido: true
Captured Variables
{
"log_test_etag": null,
"log_test_cache": "public, max-age=60"
}Available Variables
{
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}📄 Raw Suite Data
Complete Suite Data
{
"node_id": "cli-comprehensive-test",
"suite_name": "CLI Comprehensive Test Suite",
"file_path": "/app/tests/cli-comprehensive-test.yaml",
"priority": "critical",
"start_time": "2025-10-19T10:28:37.449Z",
"end_time": "2025-10-19T10:28:37.504Z",
"duration_ms": 55,
"status": "success",
"steps_executed": 10,
"steps_successful": 10,
"steps_failed": 0,
"success_rate": 100,
"steps_results": [
{
"step_id": "step-1-test-basic-execution-no-flags",
"qualified_step_id": "cli-comprehensive-test::step-1-test-basic-execution-no-flags",
"step_name": "Test basic execution (no flags)",
"status": "success",
"duration_ms": 28,
"request_details": {
"method": "GET",
"url": "/get",
"headers": {
"X-Test-Purpose": "CLI basic execution test"
},
"base_url": "http://httpbin",
"full_url": "http://httpbin/get",
"curl_command": "curl -X GET -H 'X-Test-Purpose: CLI basic execution test' \"http://httpbin/get\"",
"raw_request": "GET /get HTTP/1.1\r\nHost: httpbin\r\nX-Test-Purpose: CLI basic execution test\r\n\r\n",
"raw_url": "{{base_url}}/get"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "345",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"args": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Host": "httpbin",
"User-Agent": "axios/1.12.1",
"X-Test-Purpose": "CLI basic execution test"
},
"origin": "172.18.0.3",
"url": "http://httpbin/get"
},
"size_bytes": 280,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 345\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"args\": {},\n \"headers\": {\n \"Accept\": \"application/json, text/plain, */*\",\n \"Accept-Encoding\": \"gzip, compress, deflate, br\",\n \"Connection\": \"keep-alive\",\n \"Host\": \"httpbin\",\n \"User-Agent\": \"axios/1.12.1\",\n \"X-Test-Purpose\": \"CLI basic execution test\"\n },\n \"origin\": \"172.18.0.3\",\n \"url\": \"http://httpbin/get\"\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
},
{
"field": "body.headers.\"X-Test-Purpose\".equals",
"expected": "CLI basic execution test",
"actual": "CLI basic execution test",
"passed": true,
"message": "OK"
}
],
"captured_variables": {},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-2-test-environment-variable-resolution",
"qualified_step_id": "cli-comprehensive-test::step-2-test-environment-variable-resolution",
"step_name": "Test environment variable resolution",
"status": "success",
"duration_ms": 4,
"request_details": {
"method": "GET",
"url": "/headers",
"headers": {
"X-Environment": "testing",
"X-CLI-Test": "CLI comprehensive test execution"
},
"base_url": "http://httpbin",
"full_url": "http://httpbin/headers",
"curl_command": "curl -X GET -H 'X-Environment: testing' -H 'X-CLI-Test: CLI comprehensive test execution' \"http://httpbin/headers\"",
"raw_request": "GET /headers HTTP/1.1\r\nHost: httpbin\r\nX-Environment: testing\r\nX-CLI-Test: CLI comprehensive test execution\r\n\r\n",
"raw_url": "{{base_url}}/headers"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "308",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Host": "httpbin",
"User-Agent": "axios/1.12.1",
"X-Cli-Test": "CLI comprehensive test execution",
"X-Environment": "testing"
}
},
"size_bytes": 251,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 308\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"headers\": {\n \"Accept\": \"application/json, text/plain, */*\",\n \"Accept-Encoding\": \"gzip, compress, deflate, br\",\n \"Connection\": \"keep-alive\",\n \"Host\": \"httpbin\",\n \"User-Agent\": \"axios/1.12.1\",\n \"X-Cli-Test\": \"CLI comprehensive test execution\",\n \"X-Environment\": \"testing\"\n }\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
},
{
"field": "body.headers.\"X-Environment\".equals",
"expected": "testing",
"actual": "testing",
"passed": true,
"message": "OK"
},
{
"field": "body.headers.\"X-Cli-Test\".equals",
"expected": "CLI comprehensive test execution",
"actual": "CLI comprehensive test execution",
"passed": true,
"message": "OK"
}
],
"captured_variables": {},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-3-test-priority-filtering-compatibility",
"qualified_step_id": "cli-comprehensive-test::step-3-test-priority-filtering-compatibility",
"step_name": "Test priority filtering compatibility",
"status": "success",
"duration_ms": 1,
"request_details": {
"method": "GET",
"url": "/status/200",
"base_url": "http://httpbin",
"full_url": "http://httpbin/status/200",
"curl_command": "curl -X GET \"http://httpbin/status/200\"",
"raw_request": "GET /status/200 HTTP/1.1\r\nHost: httpbin\r\n\r\n",
"raw_url": "{{base_url}}/status/200"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "text/html; charset=utf-8",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true",
"content-length": "0"
},
"body": "",
"size_bytes": 0,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: text/html; charset=utf-8\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\ncontent-length: 0\r\n\r\n"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
}
],
"captured_variables": {},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-4-test-tag-filtering-compatibility",
"qualified_step_id": "cli-comprehensive-test::step-4-test-tag-filtering-compatibility",
"step_name": "Test tag filtering compatibility",
"status": "success",
"duration_ms": 1,
"request_details": {
"method": "GET",
"url": "/json",
"base_url": "http://httpbin",
"full_url": "http://httpbin/json",
"curl_command": "curl -X GET \"http://httpbin/json\"",
"raw_request": "GET /json HTTP/1.1\r\nHost: httpbin\r\n\r\n",
"raw_url": "{{base_url}}/json"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "429",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"slideshow": {
"author": "Yours Truly",
"date": "date of publication",
"slides": [
{
"title": "Wake up to WonderWidgets!",
"type": "all"
},
{
"items": [
"Why <em>WonderWidgets</em> are great",
"Who <em>buys</em> WonderWidgets"
],
"title": "Overview",
"type": "all"
}
],
"title": "Sample Slide Show"
}
},
"size_bytes": 274,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 429\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"slideshow\": {\n \"author\": \"Yours Truly\",\n \"date\": \"date of publication\",\n \"slides\": [\n {\n \"title\": \"Wake up to WonderWidgets!\",\n \"type\": \"all\"\n },\n {\n \"items\": [\n \"Why <em>WonderWidgets</em> are great\",\n \"Who <em>buys</em> WonderWidgets\"\n ],\n \"title\": \"Overview\",\n \"type\": \"all\"\n }\n ],\n \"title\": \"Sample Slide Show\"\n }\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
},
{
"field": "body.slideshow.exists",
"expected": true,
"actual": true,
"passed": true,
"message": "OK"
}
],
"captured_variables": {},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-5-test-node-filtering-compatibility",
"qualified_step_id": "cli-comprehensive-test::step-5-test-node-filtering-compatibility",
"step_name": "Test node filtering compatibility",
"status": "success",
"duration_ms": 3,
"request_details": {
"method": "GET",
"url": "/user-agent",
"base_url": "http://httpbin",
"full_url": "http://httpbin/user-agent",
"curl_command": "curl -X GET \"http://httpbin/user-agent\"",
"raw_request": "GET /user-agent HTTP/1.1\r\nHost: httpbin\r\n\r\n",
"raw_url": "{{base_url}}/user-agent"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "35",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"user-agent": "axios/1.12.1"
},
"size_bytes": 29,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 35\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"user-agent\": \"axios/1.12.1\"\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
}
],
"captured_variables": {
"user_agent_value": "axios/1.12.1"
},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-6-test-verbose-output-compatibility",
"qualified_step_id": "cli-comprehensive-test::step-6-test-verbose-output-compatibility",
"step_name": "Test verbose output compatibility",
"status": "success",
"duration_ms": 3,
"request_details": {
"method": "POST",
"url": "/post",
"headers": {
"Content-Type": "application/json"
},
"body": {
"message": "Testing verbose CLI output",
"timestamp": "2024-01-01T00:00:00Z",
"test_type": "verbose_compatibility"
},
"base_url": "http://httpbin",
"full_url": "http://httpbin/post",
"curl_command": "curl -X POST -H 'Content-Type: application/json' -d '{\"message\":\"Testing verbose CLI output\",\"timestamp\":\"2024-01-01T00:00:00Z\",\"test_type\":\"verbose_compatibility\"}' \"http://httpbin/post\"",
"raw_request": "POST /post HTTP/1.1\r\nHost: httpbin\r\nContent-Type: application/json\r\nContent-Length: 111\r\n\r\n{\"message\":\"Testing verbose CLI output\",\"timestamp\":\"2024-01-01T00:00:00Z\",\"test_type\":\"verbose_compatibility\"}",
"raw_url": "{{base_url}}/post"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "682",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"args": {},
"data": "{\"message\":\"Testing verbose CLI output\",\"timestamp\":\"2024-01-01T00:00:00Z\",\"test_type\":\"verbose_compatibility\"}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Content-Length": "111",
"Content-Type": "application/json",
"Host": "httpbin",
"User-Agent": "axios/1.12.1"
},
"json": {
"message": "Testing verbose CLI output",
"test_type": "verbose_compatibility",
"timestamp": "2024-01-01T00:00:00Z"
},
"origin": "172.18.0.3",
"url": "http://httpbin/post"
},
"size_bytes": 567,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 682\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"args\": {},\n \"data\": \"{\\\"message\\\":\\\"Testing verbose CLI output\\\",\\\"timestamp\\\":\\\"2024-01-01T00:00:00Z\\\",\\\"test_type\\\":\\\"verbose_compatibility\\\"}\",\n \"files\": {},\n \"form\": {},\n \"headers\": {\n \"Accept\": \"application/json, text/plain, */*\",\n \"Accept-Encoding\": \"gzip, compress, deflate, br\",\n \"Connection\": \"keep-alive\",\n \"Content-Length\": \"111\",\n \"Content-Type\": \"application/json\",\n \"Host\": \"httpbin\",\n \"User-Agent\": \"axios/1.12.1\"\n },\n \"json\": {\n \"message\": \"Testing verbose CLI output\",\n \"test_type\": \"verbose_compatibility\",\n \"timestamp\": \"2024-01-01T00:00:00Z\"\n },\n \"origin\": \"172.18.0.3\",\n \"url\": \"http://httpbin/post\"\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
},
{
"field": "body.json.message.equals",
"expected": "Testing verbose CLI output",
"actual": "Testing verbose CLI output",
"passed": true,
"message": "OK"
},
{
"field": "body.json.test_type.equals",
"expected": "verbose_compatibility",
"actual": "verbose_compatibility",
"passed": true,
"message": "OK"
}
],
"captured_variables": {
"verbose_test_url": "http://httpbin/post",
"verbose_response_time": null
},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-7-test-silent-mode-compatibility",
"qualified_step_id": "cli-comprehensive-test::step-7-test-silent-mode-compatibility",
"step_name": "Test silent mode compatibility",
"status": "success",
"duration_ms": 2,
"request_details": {
"method": "GET",
"url": "/ip",
"base_url": "http://httpbin",
"full_url": "http://httpbin/ip",
"curl_command": "curl -X GET \"http://httpbin/ip\"",
"raw_request": "GET /ip HTTP/1.1\r\nHost: httpbin\r\n\r\n",
"raw_url": "{{base_url}}/ip"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "29",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"origin": "172.18.0.3"
},
"size_bytes": 23,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 29\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"origin\": \"172.18.0.3\"\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
},
{
"field": "body.origin.exists",
"expected": true,
"actual": true,
"passed": true,
"message": "OK"
}
],
"captured_variables": {},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-8-test-detailed-mode-compatibility",
"qualified_step_id": "cli-comprehensive-test::step-8-test-detailed-mode-compatibility",
"step_name": "Test detailed mode compatibility",
"status": "success",
"duration_ms": 2,
"request_details": {
"method": "PUT",
"url": "/put",
"headers": {
"Content-Type": "application/json"
},
"body": {
"operation": "CLI detailed mode test",
"data": {
"nested_field": "test_value",
"array_field": [
1,
2,
3
]
}
},
"base_url": "http://httpbin",
"full_url": "http://httpbin/put",
"curl_command": "curl -X PUT -H 'Content-Type: application/json' -d '{\"operation\":\"CLI detailed mode test\",\"data\":{\"nested_field\":\"test_value\",\"array_field\":[1,2,3]}}' \"http://httpbin/put\"",
"raw_request": "PUT /put HTTP/1.1\r\nHost: httpbin\r\nContent-Type: application/json\r\nContent-Length: 97\r\n\r\n{\"operation\":\"CLI detailed mode test\",\"data\":{\"nested_field\":\"test_value\",\"array_field\":[1,2,3]}}",
"raw_url": "{{base_url}}/put"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "703",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"args": {},
"data": "{\"operation\":\"CLI detailed mode test\",\"data\":{\"nested_field\":\"test_value\",\"array_field\":[1,2,3]}}",
"files": {},
"form": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Content-Length": "97",
"Content-Type": "application/json",
"Host": "httpbin",
"User-Agent": "axios/1.12.1"
},
"json": {
"data": {
"array_field": [
1,
2,
3
],
"nested_field": "test_value"
},
"operation": "CLI detailed mode test"
},
"origin": "172.18.0.3",
"url": "http://httpbin/put"
},
"size_bytes": 537,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 703\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"args\": {},\n \"data\": \"{\\\"operation\\\":\\\"CLI detailed mode test\\\",\\\"data\\\":{\\\"nested_field\\\":\\\"test_value\\\",\\\"array_field\\\":[1,2,3]}}\",\n \"files\": {},\n \"form\": {},\n \"headers\": {\n \"Accept\": \"application/json, text/plain, */*\",\n \"Accept-Encoding\": \"gzip, compress, deflate, br\",\n \"Connection\": \"keep-alive\",\n \"Content-Length\": \"97\",\n \"Content-Type\": \"application/json\",\n \"Host\": \"httpbin\",\n \"User-Agent\": \"axios/1.12.1\"\n },\n \"json\": {\n \"data\": {\n \"array_field\": [\n 1,\n 2,\n 3\n ],\n \"nested_field\": \"test_value\"\n },\n \"operation\": \"CLI detailed mode test\"\n },\n \"origin\": \"172.18.0.3\",\n \"url\": \"http://httpbin/put\"\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
},
{
"field": "body.json.operation.equals",
"expected": "CLI detailed mode test",
"actual": "CLI detailed mode test",
"passed": true,
"message": "OK"
},
{
"field": "body.json.data.nested_field.equals",
"expected": "test_value",
"actual": "test_value",
"passed": true,
"message": "OK"
}
],
"captured_variables": {},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-9-test-dry-run-compatibility",
"qualified_step_id": "cli-comprehensive-test::step-9-test-dry-run-compatibility",
"step_name": "Test dry-run compatibility",
"status": "success",
"duration_ms": 3,
"request_details": {
"method": "GET",
"url": "/get",
"base_url": "http://httpbin",
"full_url": "http://httpbin/get",
"curl_command": "curl -X GET \"http://httpbin/get\"",
"raw_request": "GET /get HTTP/1.1\r\nHost: httpbin\r\n\r\n",
"raw_url": "{{base_url}}/get"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "294",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"args": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Host": "httpbin",
"User-Agent": "axios/1.12.1"
},
"origin": "172.18.0.3",
"url": "http://httpbin/get"
},
"size_bytes": 236,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 294\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"args\": {},\n \"headers\": {\n \"Accept\": \"application/json, text/plain, */*\",\n \"Accept-Encoding\": \"gzip, compress, deflate, br\",\n \"Connection\": \"keep-alive\",\n \"Host\": \"httpbin\",\n \"User-Agent\": \"axios/1.12.1\"\n },\n \"origin\": \"172.18.0.3\",\n \"url\": \"http://httpbin/get\"\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
}
],
"captured_variables": {},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
},
{
"step_id": "step-10-test-logging-flag-compatibility",
"qualified_step_id": "cli-comprehensive-test::step-10-test-logging-flag-compatibility",
"step_name": "Test logging flag compatibility",
"status": "success",
"duration_ms": 2,
"request_details": {
"method": "GET",
"url": "/cache/60",
"base_url": "http://httpbin",
"full_url": "http://httpbin/cache/60",
"curl_command": "curl -X GET \"http://httpbin/cache/60\"",
"raw_request": "GET /cache/60 HTTP/1.1\r\nHost: httpbin\r\n\r\n",
"raw_url": "{{base_url}}/cache/60"
},
"response_details": {
"status_code": 200,
"headers": {
"server": "gunicorn/19.9.0",
"date": "Sun, 19 Oct 2025 10:28:37 GMT",
"connection": "keep-alive",
"content-type": "application/json",
"content-length": "299",
"cache-control": "public, max-age=60",
"access-control-allow-origin": "*",
"access-control-allow-credentials": "true"
},
"body": {
"args": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, compress, deflate, br",
"Connection": "keep-alive",
"Host": "httpbin",
"User-Agent": "axios/1.12.1"
},
"origin": "172.18.0.3",
"url": "http://httpbin/cache/60"
},
"size_bytes": 241,
"raw_response": "HTTP/1.1 200 OK\r\nserver: gunicorn/19.9.0\r\ndate: Sun, 19 Oct 2025 10:28:37 GMT\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ncontent-length: 299\r\ncache-control: public, max-age=60\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\n\r\n{\n \"args\": {},\n \"headers\": {\n \"Accept\": \"application/json, text/plain, */*\",\n \"Accept-Encoding\": \"gzip, compress, deflate, br\",\n \"Connection\": \"keep-alive\",\n \"Host\": \"httpbin\",\n \"User-Agent\": \"axios/1.12.1\"\n },\n \"origin\": \"172.18.0.3\",\n \"url\": \"http://httpbin/cache/60\"\n}"
},
"assertions_results": [
{
"field": "status_code",
"expected": 200,
"actual": 200,
"passed": true,
"message": "OK"
},
{
"field": "headers.cache-control.exists",
"expected": true,
"actual": true,
"passed": true,
"message": "OK"
}
],
"captured_variables": {
"log_test_etag": null,
"log_test_cache": "public, max-age=60"
},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
}
}
],
"variables_captured": {},
"available_variables": {
"api_base_url": "http://localhost:8080",
"test_environment": "testing"
},
"suite_yaml_content": "node_id: \"cli-comprehensive-test\"\nsuite_name: \"CLI Comprehensive Test Suite\"\ndescription: \"Tests all documented CLI options and flags to ensure they work as documented\"\nbase_url: \"{{httpbin_url}}\"\n\nmetadata:\n priority: \"critical\"\n tags: [\"cli\", \"system\", \"regression\", \"smoke\"]\n estimated_duration_ms: 5000\n description: \"Validates that all documented CLI features are properly implemented\"\n\nvariables:\n cli_test_marker: \"CLI comprehensive test execution\"\n test_environment: \"testing\"\n\nsteps:\n - name: \"Test basic execution (no flags)\"\n request:\n method: \"GET\"\n url: \"/get\"\n headers:\n X-Test-Purpose: \"CLI basic execution test\"\n assert:\n status_code: 200\n body:\n headers:\n X-Test-Purpose:\n equals: \"CLI basic execution test\"\n metadata:\n description: \"Verifies basic CLI execution works without any flags\"\n\n - name: \"Test environment variable resolution\"\n request:\n method: \"GET\"\n url: \"/headers\"\n headers:\n X-Environment: \"{{test_environment}}\"\n X-CLI-Test: \"{{cli_test_marker}}\"\n assert:\n status_code: 200\n body:\n headers:\n X-Environment:\n equals: \"testing\"\n X-Cli-Test:\n equals: \"CLI comprehensive test execution\"\n metadata:\n description: \"Tests that --environment flag enables proper variable resolution\"\n\n - name: \"Test priority filtering compatibility\"\n request:\n method: \"GET\"\n url: \"/status/200\"\n assert:\n status_code: 200\n metadata:\n priority: \"critical\"\n description: \"This step should be included when filtering by critical priority\"\n\n - name: \"Test tag filtering compatibility\"\n request:\n method: \"GET\"\n url: \"/json\"\n assert:\n status_code: 200\n body:\n slideshow:\n exists: true\n metadata:\n tags: [\"tag-filter-test\", \"json\"]\n description: \"This step should be included when filtering by tag-filter-test tag\"\n\n - name: \"Test node filtering compatibility\"\n request:\n method: \"GET\"\n url: \"/user-agent\"\n assert:\n status_code: 200\n capture:\n user_agent_value: \"body.\\\"user-agent\\\"\"\n metadata:\n description: \"This step should be included when filtering by this suite's node_id\"\n\n - name: \"Test verbose output compatibility\"\n request:\n method: \"POST\"\n url: \"/post\"\n headers:\n Content-Type: \"application/json\"\n body:\n message: \"Testing verbose CLI output\"\n timestamp: \"2024-01-01T00:00:00Z\"\n test_type: \"verbose_compatibility\"\n assert:\n status_code: 200\n body:\n json:\n message:\n equals: \"Testing verbose CLI output\"\n test_type:\n equals: \"verbose_compatibility\"\n capture:\n verbose_test_url: \"body.url\"\n verbose_response_time: \"response_time_ms\"\n metadata:\n description: \"Complex step that generates verbose output for CLI testing\"\n\n - name: \"Test silent mode compatibility\"\n request:\n method: \"GET\"\n url: \"/ip\"\n assert:\n status_code: 200\n body:\n origin:\n exists: true\n metadata:\n description: \"Simple step suitable for silent mode CLI testing\"\n\n - name: \"Test detailed mode compatibility\"\n request:\n method: \"PUT\"\n url: \"/put\"\n headers:\n Content-Type: \"application/json\"\n body:\n operation: \"CLI detailed mode test\"\n data:\n nested_field: \"test_value\"\n array_field: [1, 2, 3]\n assert:\n status_code: 200\n body:\n json:\n operation:\n equals: \"CLI detailed mode test\"\n data:\n nested_field:\n equals: \"test_value\"\n metadata:\n description: \"Step with complex data suitable for detailed mode testing\"\n\n - name: \"Test dry-run compatibility\"\n request:\n method: \"GET\"\n url: \"/get\" # Removido delay de 1s\n assert:\n status_code: 200\n metadata:\n description: \"Step that would take time - perfect for dry-run testing\"\n\n - name: \"Test logging flag compatibility\"\n request:\n method: \"GET\"\n url: \"/cache/60\"\n assert:\n status_code: 200\n headers:\n cache-control:\n exists: true\n capture:\n log_test_etag: \"headers.etag\"\n log_test_cache: \"headers.\\\"cache-control\\\"\"\n metadata:\n description: \"Step that generates data suitable for log file verification\""
}