Problem Statement
Current coverage gap
test/e2e/test-deployment-services.sh verifies the cloudflared tunnel control plane only:
nemoclaw tunnel start runs without error
nemoclaw status surfaces a public URL
nemoclaw tunnel stop removes the URL from status
It does not issue any HTTP request against the public URL. A tunnel could:
- Publish a URL into
status while the data plane is broken (cloudflared crashes after start)
- Route to a stale or wrong origin and return non-dashboard content
- Be reachable but return a Cloudflare error page (e.g. HTTP 530 "origin unreachable")
…and nightly tests would still report green.
Why it matters
The cloudflared tunnel is the only mechanism for accessing the OpenClaw dashboard from outside the host. Silent regressions in tunnel-to-origin routing would surface only as user-reported "the public URL doesn't work" tickets, with no nightly signal pointing to the cause.
Proposed Design
Split TC-DEPLOY-01 into three sub-tests
Inside the existing test_deploy_01_start_stop() function in test/e2e/test-deployment-services.sh:
| Sub-TC |
Asserts |
Status |
| TC-DEPLOY-01a |
nemoclaw tunnel start surfaces a public URL in status |
Existing (renamed) |
| TC-DEPLOY-01b |
Tunnel URL serves the OpenClaw dashboard (HTTP 200 + content markers) |
NEW |
| TC-DEPLOY-01c |
nemoclaw tunnel stop removes the URL from status |
Existing (renamed) |
TC-DEPLOY-01b probe spec
After the URL is captured from nemoclaw status:
- Issue
curl against the tunnel URL with retries.
- Accept strict HTTP 200 only.
- On 200, grep the response body for
<title>OpenClaw Control</title> or <openclaw-app (verified-stable markers from a live probe of the running dashboard).
Pass / Fail / Skip behavior
| Scenario |
Outcome |
| HTTP 200 + dashboard markers present |
PASS |
| HTTP 200 but body lacks markers |
FAIL (logs first 200 bytes for diagnostics) |
| HTTP non-200 after all retries |
FAIL ("unexpected status: $code") |
tunnel_url empty |
SKIP |
Alternatives Considered
No response
Category
enhancement: feature
Checklist
Problem Statement
Current coverage gap
test/e2e/test-deployment-services.shverifies the cloudflared tunnel control plane only:nemoclaw tunnel startruns without errornemoclaw statussurfaces a public URLnemoclaw tunnel stopremoves the URL fromstatusIt does not issue any HTTP request against the public URL. A tunnel could:
statuswhile the data plane is broken (cloudflared crashes after start)…and nightly tests would still report green.
Why it matters
The cloudflared tunnel is the only mechanism for accessing the OpenClaw dashboard from outside the host. Silent regressions in tunnel-to-origin routing would surface only as user-reported "the public URL doesn't work" tickets, with no nightly signal pointing to the cause.
Proposed Design
Split TC-DEPLOY-01 into three sub-tests
Inside the existing
test_deploy_01_start_stop()function intest/e2e/test-deployment-services.sh:nemoclaw tunnel startsurfaces a public URL instatusnemoclaw tunnel stopremoves the URL fromstatusTC-DEPLOY-01b probe spec
After the URL is captured from
nemoclaw status:curlagainst the tunnel URL with retries.<title>OpenClaw Control</title>or<openclaw-app(verified-stable markers from a live probe of the running dashboard).Pass / Fail / Skip behavior
tunnel_urlemptyAlternatives Considered
No response
Category
enhancement: feature
Checklist