CLI E2E Test Harness

SkillDev tools

Set up E2E test harness for CLI applications with process spawning and assertions.

Use CLI E2E Test Harness in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add CLI E2E Test Harness and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the CLI E2E Test Harness skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

CLI E2E Test HarnessStart free

What this skill tells your AI

The instructions your AI receives, as published by a5c-ai/babysitter in library/specializations/cli-mcp-development/skills/cli-e2e-test-harness/SKILL.md and read by Ahel’s review.

Set up E2E test harness for CLI applications.

Generated Patterns

import { 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),
  };
}

Target Processes

  • cli-unit-integration-testing
  • mcp-server-testing-suite

Signals

GitHub stars
2k
Forks
113
Last commit
Sep 2026
Advanced
Item type
skill
Key
cli-e2e-test-harness
Source
github.com/a5c-ai/babysitter