test(qa): add local otel smoke harness

This commit is contained in:
Vincent Koc
2026-04-25 19:25:46 -07:00
parent 476bb38527
commit a0ca546997
7 changed files with 583 additions and 0 deletions

View File

@@ -50,6 +50,21 @@ pnpm qa:lab:watch
rebuilds that bundle on change, and the browser auto-reloads when the QA Lab
asset hash changes.
For a local OpenTelemetry trace smoke, run:
```bash
pnpm qa:otel:smoke
```
That script starts a local OTLP/HTTP trace receiver, runs the
`otel-trace-smoke` QA scenario with the `diagnostics-otel` plugin enabled, then
decodes the exported protobuf spans and asserts the release-critical shape:
`openclaw.run`, `openclaw.model.call`, `openclaw.context.assembled`, and
`openclaw.message.delivery` must be present; model calls must not export
`StreamAbandoned` on successful turns; raw diagnostic IDs and
`openclaw.content.*` attributes must stay out of the trace. It writes
`otel-smoke-summary.json` next to the QA suite artifacts.
For a transport-real Matrix smoke lane, run:
```bash

View File

@@ -49,6 +49,10 @@ OpenClaw has three public release lanes:
- Run `pnpm build && pnpm ui:build` before `pnpm release:check` so the expected
`dist/*` release artifacts and Control UI bundle exist for the pack
validation step
- Run `pnpm qa:otel:smoke` when validating release telemetry. It exercises
QA-lab through a local OTLP/HTTP receiver and verifies the exported trace
span names, bounded attributes, and content/identifier redaction without
requiring Opik, Langfuse, or another external collector.
- Run `pnpm release:check` before every tagged release
- Release checks now run in a separate manual workflow:
`OpenClaw Release Checks`