Quick Start
Generate a coverage report using the Swagger Petstore API.
Installation
curl -sL https://cli.tracecov.sh/install/ | sh
uv pip install tracecov
Connect to Your API
Now let's set up TraceCov to track requests to the Petstore API:
First, save your API traffic as JSON. Create a file traffic.json:
{
"interactions": [
{
"request": {
"method": "POST",
"url": "https://petstore3.swagger.io/api/v3/pet",
"headers": {"Content-Type": "application/json"},
"body": "{\"id\": 123456, \"name\": \"fluffy\", \"status\": \"available\"}"
},
"response": {"status_code": 200}
},
{
"request": {
"method": "GET",
"url": "https://petstore3.swagger.io/api/v3/pet/123456",
"headers": {}
},
"response": {"status_code": 200}
}
]
}
Then generate the coverage report:
tracecov report https://petstore3.swagger.io/api/v3/openapi.json traffic.json
import tracecov
import requests
# Download the OpenAPI specification
response = requests.get("https://petstore3.swagger.io/api/v3/openapi.json")
schema = response.json()
# Create a coverage tracker
coverage = tracecov.CoverageMap.from_dict(schema, base_path="/api/v3")
# Set up a tracked session
session = coverage.requests.track_session(requests.Session())
# Make API requests
fluffy = {
"id": 123456,
"name": "fluffy",
"photoUrls": [],
"tags": [{"id": 1, "name": "cute"}],
"status": "available"
}
session.post("https://petstore3.swagger.io/api/v3/pet", json=fluffy)
session.get("https://petstore3.swagger.io/api/v3/pet/123456")
# Generate a coverage report
coverage.save_report(output_file="coverage.html")
View the Report
Open coverage.html in your browser:
The report shows coverage at multiple levels:
| Color | Meaning |
|---|---|
| 🟢 Green | Fully covered |
| 🟡 Yellow | Partially covered (e.g., valid inputs tested, but not invalid) |
| 🔴 Red | Not covered |
Expand any operation to see which parameters and JSON Schema keywords have been tested.
Next Steps
- Integration guides - Connect to your test suite
- Coverage concepts - Understand how coverage is calculated