Ports the CLI, TUI, and launcher from v1.5 into v2 behind a single `mcp-inspector` entrypoint (launcher → web/cli/tui). Includes the `mcp-inspector --web --dev` launcher fix (Vite alias resolution + prod-server double-start), the root `postinstall` install cascade with simplified CI, and spec/AGENTS docs (no-workspaces rationale, Development setup). Closes #1246. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
import { expect } from "vitest";
|
|
import type { CliResult } from "./cli-runner.js";
|
|
|
|
function formatCliOutput(result: CliResult): string {
|
|
const out = result.stdout?.trim() || "(empty)";
|
|
const err = result.stderr?.trim() || "(empty)";
|
|
return `stdout: ${out}\nstderr: ${err}`;
|
|
}
|
|
|
|
/**
|
|
* Assert that CLI command succeeded (exit code 0)
|
|
*/
|
|
export function expectCliSuccess(result: CliResult) {
|
|
expect(
|
|
result.exitCode,
|
|
`CLI exited with code ${result.exitCode}. ${formatCliOutput(result)}`,
|
|
).toBe(0);
|
|
}
|
|
|
|
/**
|
|
* Assert that CLI command failed (non-zero exit code)
|
|
*/
|
|
export function expectCliFailure(result: CliResult) {
|
|
expect(
|
|
result.exitCode,
|
|
`CLI unexpectedly exited with code ${result.exitCode}. ${formatCliOutput(result)}`,
|
|
).not.toBe(0);
|
|
}
|
|
|
|
/**
|
|
* Assert that output contains expected text
|
|
*/
|
|
export function expectOutputContains(result: CliResult, text: string) {
|
|
expect(result.output).toContain(text);
|
|
}
|
|
|
|
/**
|
|
* Assert that output contains valid JSON
|
|
* Uses stdout (not stderr) since JSON is written to stdout and warnings go to stderr
|
|
*/
|
|
export function expectValidJson(result: CliResult) {
|
|
expect(() => JSON.parse(result.stdout)).not.toThrow();
|
|
return JSON.parse(result.stdout);
|
|
}
|
|
|
|
/**
|
|
* Assert that output contains JSON with error flag
|
|
*/
|
|
export function expectJsonError(result: CliResult) {
|
|
const json = expectValidJson(result);
|
|
expect(json.isError).toBe(true);
|
|
return json;
|
|
}
|
|
|
|
/**
|
|
* Assert that output contains expected JSON structure
|
|
*/
|
|
export function expectJsonStructure(result: CliResult, expectedKeys: string[]) {
|
|
const json = expectValidJson(result);
|
|
expectedKeys.forEach((key) => {
|
|
expect(json).toHaveProperty(key);
|
|
});
|
|
return json;
|
|
}
|