Документация Автодополнение в IDE

Автодополнение в 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/http HTTP-запросы (get/post/…/batch), JSON-хелперы
    mockarty/grpc gRPC-клиент (unary-вызовы)
    mockarty/soap SOAP-хелперы
    mockarty/ws WebSocket-клиент
    mockarty/sse Клиент Server-Sent Events
    mockarty/kafka Kafka producer / consumer
    mockarty/rabbitmq RabbitMQ publish / consume
    mockarty/sql SQL-запросы
    mockarty/redis Redis-клиент
    mockarty/mcp MCP-клиент (connect, listTools, callTool)
    mockarty/data Общие данные (SharedArray)
    mockarty/faker Генераторы синтетических данных
    mockarty/encoding base64 / hex-кодирование
    mockarty/crypto Хеширование / HMAC
    mockarty/html Парсинг HTML / селекторы
    mockarty/core check(), sleep(), group()
    mockarty/execution Контекст исполнения VU / сценария
    mockarty/timers setTimeout / setInterval
    mockarty/metrics Counter, Trend, Rate, Gauge
    mockarty/allure Аннотации Allure (step, feature, severity)
    mockarty/dto DTO-интерфейсы 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.