Автодополнение в IDE (@mockarty/types)
Скрипты perfengine Mockarty — это обычный JavaScript, но писать их
намного проще, когда IDE подсказывает имена функций, параметры и типы.
npm-пакет @mockarty/types содержит TypeScript-описания для всего, что
доступно из скрипта, поэтому VS Code, WebStorm, IntelliJ IDEA, Neovim
(LSP) и любой редактор с поддержкой TypeScript сразу подсвечивают
автодополнение и встроенную документацию.
Что включено
-
Полная стандартная библиотека k6 —
k6,k6/http,k6/ws,
k6/grpc,k6/data,k6/encoding,k6/crypto,k6/metrics,
k6/html,k6/execution,k6/timers. Скрипт пишется как для
обычного k6; Mockarty сам перенаправляет импорты на свою реализацию. -
Расширения Mockarty — дополнительные модули
mockarty/*:Модуль Что добавляет mockarty/httpHTTP-запросы ( get/post/…/batch), JSON-хелперыmockarty/grpcgRPC-клиент (unary-вызовы) mockarty/soapSOAP-хелперы mockarty/wsWebSocket-клиент mockarty/sseКлиент Server-Sent Events mockarty/kafkaKafka producer / consumer mockarty/rabbitmqRabbitMQ publish / consume mockarty/sqlSQL-запросы mockarty/redisRedis-клиент mockarty/mcpMCP-клиент ( connect,listTools,callTool)mockarty/dataОбщие данные ( SharedArray)mockarty/fakerГенераторы синтетических данных mockarty/encodingbase64 / hex-кодирование mockarty/cryptoХеширование / HMAC mockarty/htmlПарсинг HTML / селекторы mockarty/corecheck(),sleep(),group()mockarty/executionКонтекст исполнения VU / сценария mockarty/timerssetTimeout/setIntervalmockarty/metricsCounter,Trend,Rate,Gaugemockarty/allureАннотации Allure ( step,feature,severity)mockarty/dtoDTO-интерфейсы Mockarty (Mock, хранилища) -
Глобальные хелперы — глобальный объект
allureинжектится
автоматически; типизированы и стандартные k6-глобалы (__VU,__ITER).
Установка
Онлайн
npm i --save-dev @mockarty/types
// tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "node",
"strict": true,
"types": ["@mockarty/types"]
},
"include": ["scripts/**/*.ts"]
}
mockarty-cli init создаёт каркас проекта (mockarty.yaml + примеры тестов);
добавьте dev-зависимость @mockarty/types и tsconfig.json выше для автодополнения.
Изолированный контур (без интернета)
На машине с доступом в интернет выполните npm pack @mockarty/types
(получится .tgz), перенесите файл и
установите локально:
npm i --save-dev /path/to/mockarty-types-X.Y.Z.tgz
.tgz полностью самодостаточен, поэтому установка работает без доступа к сети.
Настройка редактора
VS Code
Откройте папку проекта. VS Code сам прочитает tsconfig.json и
автодополнение заработает сразу. Ctrl+Space — показать варианты, F12
— перейти к определению типа.
WebStorm / IntelliJ IDEA
Откройте проект, отметьте папку со скриптами как Resources Root
(File → Mark Directory As). WebStorm подхватит tsconfig.json
автоматически. Если автодополнение не появляется, выполните
File → Invalidate Caches → Invalidate and Restart.
Neovim / Helix / Vim
Установите typescript-language-server:
npm i -g typescript typescript-language-server
LSP сам найдёт @mockarty/types через package.json — никаких
дополнительных настроек не нужно.
Первый скрипт
import * as http from "k6/http";
import { check, sleep } from "k6";
import * as faker from "mockarty/faker";
import * as Allure from "mockarty/allure";
export const options = {
scenarios: {
smoke: { executor: "constant-vus", vus: 5, duration: "30s" },
},
thresholds: {
http_req_duration: ["p(95)<500"],
http_req_failed: ["rate<0.01"],
},
};
export default function (): void {
Allure.feature("signup");
const res = http.post("https://api.example.com/signup", {
email: faker.email(),
name: faker.name(),
});
check(res, {
"status is 201": (r) => r.status === 201,
"is json": (r) => (r.headers["Content-Type"] || "").includes("json"),
});
sleep(1);
}
Сохраните как scripts/signup.ts и запустите:
mockarty-cli perf run scripts/signup.ts
CLI компилирует TypeScript на лету (относительные импорты тоже
собираются в бандл); запускать tsc вручную не нужно.
Профиль нагрузки берётся прямо из export const options скрипта:
применяются vus, duration, iterations, rps, maxVUs, stages,
thresholds и scenarios. Поддержаны все executor’ы (constant-vus,
ramping-vus, per-vu-iterations, shared-iterations,
constant-arrival-rate, ramping-arrival-rate), в том числе несколько
сценариев сразу — они выполняются параллельно, каждый со своей
exec-функцией, env-оверлеем и смещением startTime, а отчёт сливает
их метрики с точными объединёнными перцентилями и разбивкой по
сценариям. Для плоского профиля явные флаги CLI важнее; при нескольких
сценариях действуют профили сценариев. Экспортированная
функция handleSummary(data) вызывается после прогона: каждый ключ
возвращённого объекта записывается в файл (ключи stdout / stderr
печатаются в терминал). Нарушенный порог завершает CLI с кодом 99
(удобно для CI — пайплайн падает на деградации). Флаг --reporter allure
создаёт каталог allure-results/ с результатами по итерациям,
вложениями, контейнером прогона и executor.json.
Обновление типов
Каждый релиз Mockarty публикует соответствующую версию
@mockarty/types. Обновляйте её в один день с CLI:
npm update @mockarty/types
В package.json укажите совместимый диапазон
("@mockarty/types": "^0.2.0"), чтобы новые минорные релизы подтягивали
дополнительные хелперы автоматически. Мажорные версии меняются только
при breaking-изменениях типов.
Решение проблем
- Автодополнение показывает функции k6, но не расширения Mockarty.
Проверьте, что@mockarty/typesуказан вcompilerOptions.typesв
tsconfig.json. Также убедитесь, что в редакторе используется
TypeScript 5.0 и выше — старые версии игнорируютtypesдля
ambient-модулей. Property 'status_text' does not exist on type 'Response'. Версия
@mockarty/typesстарше движка, который вернул ответ — обновите
пакет (npm update @mockarty/types).Cannot find module 'mockarty/faker'. TypeScript должен
загрузить@mockarty/types, чтобы ambient-модули разрешились.
Добавьте пакет вcompilerOptions.typesлибо один раз поставьте
import "@mockarty/types"в начале любого.tsфайла.
Лицензия
@mockarty/types распространяется под лицензией MIT (так же, как
@types/k6, на котором он построен). Сам продукт Mockarty
распространяется по Mockarty Software License Agreement.