Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set up E2E test harness for CLI applications with process spawning and assertions.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -52% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -13% | 0% |
Set up E2E test harness for CLI applications.
typescriptimport { spawn, SpawnOptions } from 'child_process'; interface CLIResult { stdout: string; stderr: string; exitCode: number | null; } export async function runCLI(args: string[], options?: SpawnOptions): Promise<CLIResult> { return new Promise((resolve) => { const proc = spawn('node', ['./dist/index.js', ...args], { env: { ...process.env, NO_COLOR: '1' }, ...options, }); let stdout = ''; let stderr = ''; proc.stdout?.on('data', (data) => { stdout += data; }); proc.stderr?.on('data', (data) => { stderr += data; }); proc.on('close', (exitCode) => { resolve({ stdout, stderr, exitCode }); }); }); } export function expectOutput(result: CLIResult) { return { toContain: (text: string) => expect(result.stdout).toContain(text), toMatchSnapshot: () => expect(result.stdout).toMatchSnapshot(), toExitWith: (code: number) => expect(result.exitCode).toBe(code), }; }
Other measured skills in the registry, with their headline benchmark lift.