Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 34 additions & 2 deletions integ-tests/dev-server.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ describe('integration: dev server', () => {
});

it.skipIf(!hasNpm || !hasGit || !hasUv)(
'starts dev server and responds to health check',
'starts dev server, responds to health check, and emits telemetry',
async () => {
expect(projectPath, 'Project should have been created').toBeTruthy();

Expand All @@ -98,12 +98,21 @@ describe('integration: dev server', () => {
devProcess = spawn('node', [cliPath, 'dev', '--port', String(port), '--logs'], {
cwd: projectPath,
stdio: 'pipe',
env: { ...process.env, INIT_CWD: undefined },
env: { ...process.env, INIT_CWD: undefined, ...telemetry.env },
});

const serverReady = await waitForServer(port, 20000);
expect(serverReady, 'Dev server should respond to ping within 20s').toBeTruthy();

// Verify telemetry was emitted for the server startup (before blocking)
telemetry.assertMetricEmitted({
command: 'dev',
dev_action: 'server',
ui_mode: 'terminal',
exit_reason: 'success',
});
telemetry.clearEntries();

// Invoke the running server and verify telemetry
const invokeResult = await runCLI(['dev', 'hello', '--port', String(port)], projectPath, {
env: telemetry.env,
Expand Down Expand Up @@ -135,4 +144,27 @@ describe('integration: dev server', () => {
},
30000
);

it.skipIf(!hasNpm || !hasGit || !hasUv)(
'exits with error when runtime not found and emits failure telemetry',
async () => {
expect(projectPath, 'Project should have been created').toBeTruthy();

telemetry.clearEntries();
const result = await runCLI(['dev', '--logs', '--runtime', 'nonexistent-agent'], projectPath, {
env: telemetry.env,
});

expect(result.exitCode).toBe(1);
expect(result.stderr).toContain('nonexistent-agent');
expect(result.stderr).toContain('not found');

telemetry.assertMetricEmitted({
command: 'dev',
dev_action: 'server',
exit_reason: 'failure',
});
},
15000
);
});
Loading
Loading