Skip to main content

Programmatic API

testpilot-ai can be used as a library in your own tools and scripts.

Installation

npm install @amit641/testpilot-ai

Generate Tests

import { generateTests, resolveConfig } from '@amit641/testpilot-ai';

const config = resolveConfig({
provider: 'openai',
model: 'gpt-4o',
});

const result = await generateTests('src/utils.ts', config);

console.log(`Generated ${result.testCount} tests`);
console.log(`Written to: ${result.testFile}`);
console.log(`Duration: ${result.duration}ms`);
console.log(`Tokens used: ${result.tokensUsed}`);

Analyze a File

import { analyzeFile } from '@amit641/testpilot-ai';

const analysis = analyzeFile('src/utils.ts');

console.log(`File: ${analysis.fileName}`);
console.log(`Language: ${analysis.language}`);
console.log(`Exports: ${analysis.exports.length}`);

for (const exp of analysis.exports) {
console.log(` ${exp.kind}: ${exp.name}`);
if (exp.parameters) {
for (const param of exp.parameters) {
console.log(` - ${param.name}: ${param.type ?? 'any'}`);
}
}
}

Resolve Config

import { resolveConfig } from '@amit641/testpilot-ai';

// Merges: defaults < config file < package.json < your overrides
const config = resolveConfig({
provider: 'anthropic',
framework: 'jest',
edgeCases: false,
});

Dry Run (No File Write)

import { generateTests, resolveConfig } from '@amit641/testpilot-ai';

const config = resolveConfig({ provider: 'openai' });

const result = await generateTests('src/utils.ts', config, {
dryRun: true,
onChunk: (text) => process.stdout.write(text),
});

// result.testFile shows where it would have been written
// but no file was created

Streaming Callback

import { generateTests, resolveConfig } from '@amit641/testpilot-ai';

const config = resolveConfig({ provider: 'openai' });

const result = await generateTests('src/utils.ts', config, {
onChunk: (chunk) => {
// Called for each streamed text chunk
process.stdout.write(chunk);
},
});

Framework Detection

import { detectFramework, getFrameworkInfo } from '@amit641/testpilot-ai';

const framework = detectFramework({
devDependencies: { vitest: '^2.0.0' },
});
// → 'vitest'

const info = getFrameworkInfo('vitest');
console.log(info.runCommand); // 'npx vitest run'

Types

All types are exported for TypeScript usage:

import type {
AutotestConfig,
AutotestResult,
AnalyzedFile,
ExportedSymbol,
GeneratedTest,
TestFramework,
TestCategory,
ParameterInfo,
ImportStatement,
SymbolKind,
} from '@amit641/testpilot-ai';