Skip to content

Commit 372254e

Browse files
committed
refactor: extract standalone assertTelemetry helper
1 parent 77a64ed commit 372254e

4 files changed

Lines changed: 13 additions & 14 deletions

File tree

integ-tests/add-remove-resources.test.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createAuditContext } from '../src/test-utils/audit.js';
1+
import { assertTelemetry, createAuditContext } from '../src/test-utils/audit.js';
22
import { createTestProject, readProjectConfig, runCLI } from '../src/test-utils/index.js';
33
import type { TestProject } from '../src/test-utils/index.js';
44
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
@@ -42,10 +42,7 @@ describe('integration: add and remove resources', () => {
4242
expect(found, `Memory "${memoryName}" should be in config`).toBe(true);
4343

4444
// Verify telemetry
45-
const entries = audit.readEntries();
46-
const memEntry = entries.find(e => e.attrs.command === 'add.memory');
47-
expect(memEntry).toBeDefined();
48-
expect(memEntry!.attrs).toMatchObject({ command: 'add.memory', exit_reason: 'success' });
45+
assertTelemetry(audit.readEntries(), { command: 'add.memory', exit_reason: 'success' });
4946
});
5047

5148
it('adds a memory with EPISODIC strategy and verifies reflectionNamespaces', async () => {
@@ -114,10 +111,7 @@ describe('integration: add and remove resources', () => {
114111
expect(found, `Credential "${credentialName}" should be in config`).toBe(true);
115112

116113
// Verify telemetry
117-
const entries = audit.readEntries();
118-
const credEntry = entries.find(e => e.attrs.command === 'add.credential');
119-
expect(credEntry).toBeDefined();
120-
expect(credEntry!.attrs).toMatchObject({
114+
assertTelemetry(audit.readEntries(), {
121115
command: 'add.credential',
122116
exit_reason: 'success',
123117
credential_type: 'api-key',

integ-tests/help.test.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createAuditContext } from '../src/test-utils/audit.js';
1+
import { assertTelemetry, createAuditContext } from '../src/test-utils/audit.js';
22
import { spawnAndCollect } from '../src/test-utils/cli-runner.js';
33
import { runCLI } from '../src/test-utils/index.js';
44
import { readdirSync } from 'node:fs';
@@ -63,9 +63,7 @@ describe('help modes telemetry', () => {
6363

6464
const entries = audit.readEntries();
6565
expect(entries).toHaveLength(1);
66-
expect(entries[0]!.attrs).toMatchObject({
67-
'service.name': 'agentcore-cli',
68-
'agentcore-cli.mode': 'cli',
66+
assertTelemetry(entries, {
6967
command_group: 'help',
7068
command: 'help.modes',
7169
exit_reason: 'success',

src/test-utils/audit.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { globSync } from 'glob';
22
import { mkdtempSync, readFileSync, rmSync } from 'node:fs';
33
import { tmpdir } from 'node:os';
44
import { join } from 'node:path';
5+
import { expect } from 'vitest';
56

67
export interface TelemetryEntry {
78
value: number;
@@ -42,3 +43,9 @@ export function createAuditContext(): AuditContext {
4243
},
4344
};
4445
}
46+
47+
/** Assert that at least one telemetry entry was emitted matching the given attrs. */
48+
export function assertTelemetry(entries: TelemetryEntry[], expected: Record<string, string | number | boolean>): void {
49+
const match = entries.find(e => Object.entries(expected).every(([k, v]) => String(e.attrs[k]) === String(v)));
50+
expect(match, `No telemetry entry matching ${JSON.stringify(expected)}`).toBeDefined();
51+
}

src/test-utils/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
export { runCLI, spawnAndCollect, cleanSpawnEnv, type RunResult } from './cli-runner.js';
7-
export { createAuditContext, type AuditContext, type TelemetryEntry } from './audit.js';
7+
export { createAuditContext, assertTelemetry, type AuditContext, type TelemetryEntry } from './audit.js';
88
export { exists } from './fs-helpers.js';
99
export { hasCommand, hasAwsCredentials, prereqs } from './prereqs.js';
1010
export { createTestProject, type TestProject, type CreateTestProjectOptions } from './project-factory.js';

0 commit comments

Comments
 (0)