smoke-test
Smoke Test
Section titled “Smoke Test”HARD GATE — Do NOT run smoke-test against a URL that hasn’t been deployed yet. Always run
deployfirst, thensmoke-test.HARD GATE — A failed smoke test means the deployment is broken. Do NOT mark a deploy as successful until all smoke checks pass.
Validate a deployed application is healthy by running HTTP checks against live URLs. Each check asserts HTTP status, optional body signal (regex), and optional response-time threshold.
Configuration
Section titled “Configuration”Smoke checks live in smoke-checks.yaml at the project root:
base_url: "https://example.com"checks: - name: "Homepage" path: "/" expected_status: 200 content_signal: "welcome|ok" max_response_time_ms: 3000| Field | Required | Default | Description |
|---|---|---|---|
name |
Yes | — | Human-readable check name |
path |
Yes | / |
URL path relative to base_url |
method |
No | GET |
HTTP method |
expected_status |
No | 200 |
Expected HTTP status code |
content_signal |
No | — | Regex or string in response body |
max_response_time_ms |
No | — | Fail if slower than threshold (ms) |
Ad-hoc single-URL mode: DEPLOY_URL=https://host bash scripts/run-smoke.sh
Process
Section titled “Process”1. Load checks
Section titled “1. Load checks”SMOKE_CHECKS_FILE="${SMOKE_CHECKS_FILE:-smoke-checks.yaml}"BASE_URL="${DEPLOY_URL:-$BASE_URL}"test -f "$SMOKE_CHECKS_FILE" || test -n "$BASE_URL" || { echo "ERROR: no checks file or URL"; exit 1; }2. Run each check
Section titled “2. Run each check”bash scripts/run-smoke.sh "${DEPLOY_URL:-}" "${SMOKE_CHECKS_FILE:-smoke-checks.yaml}"The runner performs curl requests per check, records pass/fail per assertion, and prints a summary.
3. Assert results
Section titled “3. Assert results”- Any HTTP status mismatch → FAIL
- Missing
content_signalwhen configured → FAIL - Response time over
max_response_time_ms→ FAIL - Exit code non-zero → deployment not healthy
4. Generate report
Section titled “4. Generate report”Capture stdout from run-smoke.sh as evidence. Persist to specs/verifications/smoke-<date>.log for release-branch.
Integration with deploy skill
Section titled “Integration with deploy skill”DEPLOY_URL="$DEPLOY_URL" bash scripts/run-smoke.shVerify arc
Section titled “Verify arc”Part of ★ VERIFY ★: verify-work → validate-contracts → smoke-test → run-evals → audit-code
Verify
Section titled “Verify”→ verify: test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && ! grep -q 'See \[REFERENCE.md\](REFERENCE.md)$' skills/smoke-test/SKILL.md && echo OK