From f59cb4d6d71a4145e2c7ff2aa07e8954a962155e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 10 May 2026 02:41:18 +0100 Subject: [PATCH] test: tighten diagnostics span option assertions --- .../diagnostics-otel/src/service.test.ts | 42 +++++++------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/extensions/diagnostics-otel/src/service.test.ts b/extensions/diagnostics-otel/src/service.test.ts index 02fba01e2b8..f7bb41437a6 100644 --- a/extensions/diagnostics-otel/src/service.test.ts +++ b/extensions/diagnostics-otel/src/service.test.ts @@ -205,6 +205,11 @@ function createTraceOnlyContext(endpoint: string): OpenClawPluginServiceContext return createOtelContext(endpoint, { traces: true }); } +function startedSpanOptions(name: string) { + const call = telemetryState.tracer.startSpan.mock.calls.find(([spanName]) => spanName === name); + return call?.[1] as { attributes?: Record; startTime?: unknown } | undefined; +} + async function emitAndCaptureLog( event: Omit[0], { type: "log.record" }>, "type">, options: { trusted?: boolean } = {}, @@ -366,33 +371,16 @@ describe("diagnostics-otel service", () => { expect(spanNames).toContain("openclaw.webhook.processed"); expect(spanNames).toContain("openclaw.message.processed"); expect(spanNames).toContain("openclaw.session.stuck"); - const webhookSpanCall = telemetryState.tracer.startSpan.mock.calls.find( - (call) => call[0] === "openclaw.webhook.processed", - ); - expect(webhookSpanCall?.[1]).toEqual({ - attributes: expect.not.objectContaining({ - "openclaw.chatId": expect.anything(), - }), - startTime: expect.any(Number), - }); - const messageSpanCall = telemetryState.tracer.startSpan.mock.calls.find( - (call) => call[0] === "openclaw.message.processed", - ); - expect(messageSpanCall?.[1]).toEqual({ - attributes: expect.objectContaining({ - "openclaw.channel": "telegram", - "openclaw.outcome": "completed", - "openclaw.reason": "unknown", - }), - startTime: expect.any(Number), - }); - expect(messageSpanCall?.[1]).toEqual({ - attributes: expect.not.objectContaining({ - "openclaw.chatId": expect.anything(), - "openclaw.messageId": expect.anything(), - }), - startTime: expect.any(Number), - }); + const webhookSpanOptions = startedSpanOptions("openclaw.webhook.processed"); + expect(webhookSpanOptions?.attributes).not.toHaveProperty("openclaw.chatId"); + expect(webhookSpanOptions?.startTime).toBeTypeOf("number"); + const messageSpanOptions = startedSpanOptions("openclaw.message.processed"); + expect(messageSpanOptions?.attributes?.["openclaw.channel"]).toBe("telegram"); + expect(messageSpanOptions?.attributes?.["openclaw.outcome"]).toBe("completed"); + expect(messageSpanOptions?.attributes?.["openclaw.reason"]).toBe("unknown"); + expect(messageSpanOptions?.attributes).not.toHaveProperty("openclaw.chatId"); + expect(messageSpanOptions?.attributes).not.toHaveProperty("openclaw.messageId"); + expect(messageSpanOptions?.startTime).toBeTypeOf("number"); emitDiagnosticEvent({ type: "log.record",