API リファレンス
@powerduck/openapi-cli のバッチランナー、シナリオランナー、設定、アサーション、レポート生成機能の API リファレンスです。以下のエクスポートはパッケージのルートから利用できます。
エクスポート一覧
| エクスポート | 種別 | 説明 |
|---|---|---|
runTests | 関数 | 収集したすべての操作を実行し、TestReport を返します |
resolveConfig | 関数 | 引数、設定ファイル、既定値から CliConfig を構築します |
loadSpec | 非同期関数 | ローカルパスまたはリモート URL から仕様を読み込み、参照を解決します |
isRemoteSpec | 関数 | 仕様のパスが http(s):// で始まるかを判定します |
DEFAULT_CONFIG | 定数 | 組み込みの既定値 |
runDeclarativeAssertions | 関数 | レスポンスに対して DeclarativeAssertion の配列を評価します |
extractAssertions | 関数 | 操作から x-tests の宣言的アサーションを取り出します |
extractPostmanScripts | 関数 | 操作から Postman テストスクリプトの文字列を取り出します |
resolveJsonPath | 関数 | 簡易 JSONPath リゾルバー(ドット記法と配列インデック スに対応) |
generateJsonReport | 関数 | report.json をディスクに書き込み、ファイルパスを返します |
generateCliReport | 関数 | 色付きの CLI レポート文字列を生成します(出力はしません) |
printCliReport | 関数 | CLI レポートを標準出力に表示し、その文字列を返します |
generateHtmlReport | 関数 | report.html をディスクに書き込み、ファイルパスを返します |
CliArgs | 型 | CLI 引数と設定の解決に使用する入力の構造 |
DeclarativeAssertion | 型 | 1 件の宣言的アサーションのオブジェクト |
CliConfig | 型 | 中心となる設定インターフェース |
TestReport | 型 | runTests が返す完全なレポート |
TestResult | 型 | 1 操作のテスト結果 |
TestSummary | 型 | 成功・失敗の集計 |
AssertionResult | 型 | 1 件のアサーションの結果 |
ReportFormat | 型 | "json" | "cli" | "html" |
ProtocolName | 型 | "http" | "sse" | "websocket" | "graphql" | "grpc" | "mcp" |
TestStatus | 型 | "passed" | "failed" | "skipped" | "error" |
AuthConfig | 型 | 認証設定 |
TlsConfig | 型 | TLS・証明書の設定 |
FilterConfig | 型 | 操作フィルター |
collectOperations | 関数 | バッチフィルターを適用して操作を収集します |
executeStep | 非同期関数 | ステップごとの設定を適用して 1 操作を実行します |
buildSummary | 関数 | テスト結果から件数と成功率を計算します |
formatAssertionError | 関数 | アサーションエラーを読みやすい文字列に変換します |
buildImplicitAssertions | 関数 | プロトコル別の既定のアサーションを生成します |
runScenario | 非同期関数 | 共有変数とデータ駆動の反復を使って、ステップを順番に実行します |
resolveSteps | 関数 | リクエスト送信前にシナリオ内のすべての参照を解決します |
applyExtracts | 関数 | レスポンスの値を文字列変数に抽出します |
stepRef | 関数 | ステップの参照を正規化します |
ScenarioDefinition, ScenarioStep, ScenarioStepRequest, ScenarioExtract | 型 | シナリオの入力と抽出の定義 |
ScenarioStatus, ScenarioStepResult, ScenarioEvent, ScenarioEventType, ScenarioReport, RunScenarioOptions | 型 | シナリオの結果、リアルタイムイベント、実行オプション |
runTests
runTests(config: CliConfig): Promise<TestReport>
loadSpec で仕様を読み込み、config.filter に従って操作を収集し、同時実行数を制限して実行します(min(config.concurrency ?? 5, queue.length))。宣言的アサーションと Postman アサーションを実行し、ユーザー定義のアサーションがない場合はプロトコルに応じた暗黙のアサーションを追加します。結果をパス、メソッドの順に並べ替え、TestReport を返します。
返される TestReport の構造は次のとおりです。
interface TestReport {
summary: TestSummary;
results: TestResult[];
config: CliConfig;
generatedAt: string; // ISO timestamp
version: string; // runner version string
}
resolveConfig
resolveConfig(args: CliArgs): CliConfig
args(CLI オプション)、任意の JSON 設定ファイル(args.config)、DEFAULT_CONFIG を統合します。解決後の envFile があれば読み込み、serverUrl、proxy、ヘッダーの値、auth.token、変数の値に含まれる ${ENV_VAR} 参照を展開します。仕様が指定されていない場合は "No OpenAPI spec path provided..."、proxy を解析できない場合は Invalid proxy URL: <url> をスローします。
CliArgs は CLI オプションに対応します。
interface CliArgs {
spec?: string;
server?: string;
output?: string;
format?: string;
method?: string;
path?: string;
tag?: string;
operationId?: string;
concurrency?: number;
timeout?: number;
proxy?: string;
ca?: string;
cert?: string;
key?: string;
insecure?: boolean;
header?: string[];
bearer?: string;
variable?: string[];
config?: string;
env?: string;
failOnError?: boolean;
grpcReflection?: boolean;
grpcProto?: string[];
mcpTransport?: string;
mcpCommand?: string;
mcpArgs?: string;
mcpCwd?: string;
}
loadSpec
loadSpec(config: CliConfig): Promise<unknown>
config.specPath を読み取ります。isRemoteSpec が真なら HTTP(S) で取得し、最大 5 回のリダイレクトに追従して config.timeout を適用し、User-Agent: @powerduck/openapi-cli を送信します。それ以外はローカルファイルを読み込みます。内容は JSON として解析され、paths オブジェクトを持つオブジェクトである必要があります。その後、内部の $ref の解決を試みます。失敗した場合、仕様は変更されません。
isRemoteSpec
isRemoteSpec(specPath: string): boolean
前後の空白を除いた specPath が /^https?:\/\//i に一致すると true を返します。
DEFAULT_CONFIG
const DEFAULT_CONFIG = {
outputDir: "./openapi-cli-report",
formats: ["json", "cli", "html"],
concurrency: 5,
timeout: 30000,
failOnError: true,
grpcReflection: true,
mcpTransport: "streamable-http",
};
アサーションエンジン
runDeclarativeAssertions
runDeclarativeAssertions(
assertions: DeclarativeAssertion[],
ctx: { status?: number; headers?: Record<string,string>; body?: unknown; bodyText?: string; durationMs: number },
): AssertionResult[]
レスポンスのコンテキストに対して各宣言的アサーションを評価します。評価中のエラーは失敗した AssertionResult として記録されます。
extractAssertions
extractAssertions(operation: any, pathItem?: any): DeclarativeAssertion[]
パス項目、操作の順で両方の x-tests 配列を収集し、name と assert の両方を持つオブジェクトだけを残します。
extractPostmanScripts
extractPostmanScripts(operation: any): string | undefined
operation["x-postman-scripts"].test があれば、その文字列を返します。
resolveJsonPath
resolveJsonPath(obj: unknown, path: string): unknown
先頭の $. または $