Skip to content

[E2E] Verify cloudflared tunnel URL actually serves the OpenClaw dashboard #2636

@hunglp6d

Description

@hunglp6d

Problem Statement

Current coverage gap

test/e2e/test-deployment-services.sh verifies the cloudflared tunnel control plane only:

  1. nemoclaw tunnel start runs without error
  2. nemoclaw status surfaces a public URL
  3. 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:

  1. Issue curl against the tunnel URL with retries.
  2. Accept strict HTTP 200 only.
  3. 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

  • I searched existing issues and this is not a duplicate
  • This is a design proposal, not a "please build this" request

Metadata

Metadata

Assignees

No one assigned

    Labels

    NV QABugs found by the NVIDIA QA TeamUATIssues flagged for User Acceptance Testing.VDRLinked to VDR findingenhancementNew feature or requeststatus: triageFor new items that haven't been reviewed yet.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions