Перейти к основному содержимому

Настройка

Приоритет настройки: аргументы CLI > файл конфигурации > значения по умолчанию. Результат — объект CliConfig, возвращаемый resolveConfig.

CliConfig​

Основной тип конфигурации. Все поля, кроме specPath, необязательны.

ПолеТипПо умолчаниюОписание
specPathstringобязательноПуть или URL http(s):// к JSON-спецификации OpenAPI 3.2
serverUrlstring(из спецификации)Переопределить базовый URL сервера из спецификации
outputDirstring"./openapi-cli-report"Каталог для файлов отчётов
formatsReportFormat[]["json","cli","html"]Форматы создаваемых отчётов
filterFilterConfigundefinedФильтр тестируемых операций
concurrencynumber5Максимум одновременных запросов; целое число от 1 до 100
timeoutnumber30000Тайм-аут запроса в мс, целое число от 1 до 600000; также применяется при загрузке удалённой спецификации
proxystringundefinedURL HTTP(S)-прокси, например http://proxy:8080
tlsTlsConfigundefinedНастройка TLS и сертификатов
headersRecord<string, string>undefinedДополнительные заголовки для каждого запроса
authAuthConfigundefinedНастройка аутентификации
variablesRecord<string, string>undefinedПодставляемые переменные Postman {{name}}
failOnErrorbooleantrueТолько CLI: ненулевой код после провала тестов; вызывающий код библиотеки проверяет отчёт
envFilestringundefinedПуть к файлу .env с одной парой KEY=VALUE на строку
grpcReflectionbooleanавтоматическиgRPC: сначала явная конфигурация, затем расширение операции; иначе включено при отсутствии путей proto
grpcProtoPathsstring[]undefinedgRPC: пути к файлам .proto или каталогам
mcpTransport"streamable-http" | "stdio""streamable-http"MCP: транспорт операций MCP
mcpCommandstringundefinedMCP stdio: запускаемая команда
mcpArgsstring[]undefinedMCP stdio: аргументы команды
mcpCwdstringundefinedMCP stdio: рабочий каталог

ReportFormat — объединение "json" | "cli" | "html".

Расширенные параметры выполнения​

Следующие поля также входят в CliConfig. requester, maxEvents, maxStreamMs и maxResponseSize можно задать в JSON-файле. После разрешения конфигурации передайте signal, httpRuntime и resolveTransport непосредственно в runTests() из кода: это объекты времени выполнения, а не JSON-конфигурация.

interface AdvancedRuntimeOptions {
requester?: {
followRedirects?: boolean;
maxRedirects?: number;
disableCookies?: boolean;
protocolVersion?: "http1" | "http2" | "auto";
};
maxEvents?: number;
maxStreamMs?: number;
maxResponseSize?: number;
signal?: AbortSignal;
httpRuntime?: { certificates?: unknown; fileResolver?: unknown };
resolveTransport?: (target: { protocol: string; url?: string }) => Promise<
Pick<CliConfig, "proxy" | "tls" | "httpRuntime">
>;
}

requester управляет HTTP-перенаправлениями, cookies и выбором протокола. Для HTTP/SSE значение maxEvents по умолчанию равно 50, а maxStreamMs при отсутствии заменяется на timeout; maxResponseSize передаётся среде выполнения запросов. gRPC использует maxStreamMs как срок завершения потока, затем timeout, затем 30000 мс. signal отменяет запуск; httpRuntime обеспечивает обработку HTTP-сертификатов и файлов; resolveTransport определяет параметры транспорта для каждой цели.

DEFAULT_CONFIG​

Объект встроенных значений по умолчанию, экспортируемый библиотекой:

export const DEFAULT_CONFIG: Required<
Pick<
CliConfig,
"outputDir" | "formats" | "concurrency" | "timeout" | "failOnError" | "grpcReflection" | "mcpTransport"
>
> = {
outputDir: "./openapi-cli-report",
formats: ["json", "cli", "html"],
concurrency: 5,
timeout: 30000,
failOnError: true,
grpcReflection: true,
mcpTransport: "streamable-http",
};

FilterConfig​

ПолеТипОписание
methodsstring[]Тестировать только эти HTTP-методы, например ["get","post"]; в файлах используйте нижний регистр, ввод CLI нормализуется
pathsstring[]Тестировать только пути, соответствующие одному из регулярных выражений; при некорректном выражении выполняется поиск подстроки
tagsstring[]Тестировать только операции с любым из этих тегов
operationIdsstring[]Тестировать только точные значения operationId

Фильтр без ключей преобразуется в undefined: выполняются все операции.

TlsConfig​

ПолеТипОписание
caCertstringПуть к набору сертификатов CA в формате PEM
clientCertstringПуть к клиентскому сертификату PEM для mTLS
clientKeystringПуть к закрытому ключу клиента PEM для mTLS
strictSSLbooleanПропустить проверку TLS-сертификата при false; небезопасно
pfxstringПуть к набору сертификатов PFX; gRPC требует PEM
passphrasestringПарольная фраза для зашифрованных материалов сертификата

Примечание: параметр CLI --insecure соответствует tls.strictSSL = false, то есть отключает проверку.

AuthConfig​

ПолеТипОписание
typeAuthConfig["type"]Схема аутентификации; поддерживаемые имена указаны ниже
parametersRecord<string, string | number | boolean>Параметры конкретной схемы для среды выполнения запросов
tokenstringТокен Bearer для type: "bearer"
usernamestringИмя пользователя для type: "basic"
passwordstringПароль для type: "basic"
keystringИмя API-ключа для type: "apikey"
valuestringЗначение API-ключа для type: "apikey"
in"header" | "query"Место передачи API-ключа

Поддерживаемые значения type: bearer, basic, apikey, none, digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap и edgegrid. Доступность и обязательные параметры зависят от протокола и среды выполнения запросов; одного имени недостаточно для настройки аутентификации.

Параметр CLI --bearer сейчас создаёт только { type: "bearer", token }. Более подробные настройки basic / apikey задаются в файле конфигурации.

JSON-файл конфигурации​

Файл содержит обычный JSON, соответствующий Partial<CliConfig>. Передайте его через --config <path> / -c. Аргументы CLI всегда имеют приоритет над значениями файла.

{
"specPath": "./openapi.json",
"serverUrl": "https://api.staging.example.com",
"outputDir": "./reports",
"formats": ["json", "html"],
"concurrency": 10,
"timeout": 15000,
"failOnError": true,
"proxy": "http://proxy.corp:8080",
"tls": {
"strictSSL": true,
"caCert": "./ca-bundle.pem",
"clientCert": "./client.crt",
"clientKey": "./client.key"
},
"headers": {
"X-API-Key": "${API_KEY}",
"X-Environment": "staging"
},
"auth": {
"type": "bearer",
"token": "${BEARER_TOKEN}"
},
"variables": {
"host": "api.staging.example.com"
},
"filter": {
"methods": ["get", "post"],
"tags": ["v2", "public"],
"paths": ["^/api/v2"],
"operationIds": ["getUser", "createUser"]
},
"grpcReflection": true,
"grpcProtoPaths": ["./proto"],
"mcpTransport": "streamable-http",
"mcpCommand": "npx",
"mcpArgs": ["-y", "@modelcontextprotocol/server-everything"],
"mcpCwd": "./mcp-servers"
}

Отсутствие файла вызывает Config file not found: <path>, а некорректный JSON — Invalid config file (must be JSON).

Подстановка переменных окружения​

После загрузки файла .env через --env / envFile ссылки ${VAR_NAME} подставляются в следующие строковые поля:

  • serverUrl
  • proxy
  • Значения headers
  • auth.token
  • Значения variables

Пример:

openapi-cli --spec openapi.json \
--server 'https://${API_HOST}/v1' \
--header 'Authorization: Bearer ${BEARER_TOKEN}'

Поведение .env: существующие записи process.env не перезаписываются; обрамляющие одинарные и двойные кавычки удаляются; пустые строки и комментарии # игнорируются; отсутствующий файл молча пропускается.

Создание конфигурации в коде​

import { resolveConfig, DEFAULT_CONFIG } from "@powerduck/openapi-cli";

const config = resolveConfig({
spec: "./openapi.json",
server: "https://api.staging.example.com",
concurrency: 10,
method: "get",
});

resolveConfig выбрасывает "No OpenAPI spec path provided...", если спецификация не задана, и Invalid proxy URL: <url>, если proxy не является корректным URL.