@vvpgroup/testing
v1.0.3
Published
VVP Testing SDK — единый способ запускать проверки качества и отправлять отчёты в VVP Test Tower
Readme
@vvpgroup/testing
VVP Testing SDK — единый способ запускать проверки качества во внутренних продуктах VVP и отправлять отчёты в VVP Test Tower.
Установка
npm install @vvpgroup/testing
# или
pnpm add @vvpgroup/testing
# или
yarn add @vvpgroup/testingБыстрый старт
В корне проекта:
npx vvp-test init --add-scriptsКоманда создаст vvp-test.config.ts, tests/regression/ и .env.example.
Задайте переменные окружения:
VVP_TEST_TOWER_URL=https://testtower.158-160-184-98.sslip.io
TEST_TOWER_TOKEN=<токен продукта>Для обратной совместимости SDK также читает PRODUCT_API_TOKEN, а затем
VVP_TEST_TOWER_TOKEN, если TEST_TOWER_TOKEN не задан.
Запустите проверки:
npx vvp-test checkКоманды CLI
| Команда | Назначение |
| --- | --- |
| vvp-test init [--add-scripts] | Инициализация проекта: config, tests/regression, .env.example |
| vvp-test check [--no-submit] [--trigger <type>] | Все проверки + отчёт в Tower |
| vvp-test connect [--attempt <gateKey>]... | Подключение: полный снимок всех проверок и цикл исправлений с Tower |
| vvp-test diagnose [--attempt <gateKey>]... | Диагностика: полный снимок всех проверок без изменения CI-публикации |
| vvp-test run <type> | Одна проверка без отправки |
| vvp-test report | Повторная отправка последнего отчёта |
| vvp-test e2e-summary [--file <path>] | Отдельная отправка инвентаризации E2E, по умолчанию .vvp/e2e-summary.md |
| vvp-test validate-config | Валидация vvp-test.config.ts |
| vvp-test doctor | Диагностика окружения и Tower |
Для connect и diagnose создайте .vvp/manual-interventions.json (вначале достаточно []).
После ответа Tower CLI сохраняет полный снимок в .vvp/diagnostic-response.json, а локальные
счётчики текущих проблем — в .vvp/diagnostic-state.json. Передавайте --attempt <gateKey>
только для проблемы, которую агент действительно пытался исправить. После трёх неудачных
итераций по одной проблеме CLI просит добавить запись { "gateKey": "...", "reasonType": "OTHER", "reason": "собственная причина" };
причина никогда не генерируется автоматически. Каждый следующий запрос снова выполняет все
настроенные проверки и отправляет полный текущий снимок. Обычные check и report продолжают
публиковать отчёты через прежний /api/v1/reports.
Конфигурация
Исследуйте существующие E2E во всех репозиториях и worktree, фактически доступных AI-агенту в окружении продукта, включая другие QA-репозитории. VVP-E2E/projects/<productCode>/ — пример для проверки при наличии доступа, а не граница поиска или prerequisite. Сохраните свободный текст в .vvp/e2e-summary.md. Отсутствие доступа к VVP-E2E останавливает только централизованный запуск и изменения, которым этот доступ нужен; инвентаризация, отправка summary и подготовка артефактов по доступным реализованным тестам продолжаются независимо. До завершения подключения выполните vvp-test e2e-summary; --file задаёт путь относительно корня проекта.
Если реализованные тесты не найдены или реализацию невозможно подтвердить, явно укажите результат и ограничения проверки в summary, отправьте его и передайте человеку только summary с рекомендациями по реализации или доступу. Не создавайте scenario JSON с пустыми или неподтверждёнными сценариями. Только при наличии подтверждённых реализованных сценариев подготовьте отдельный tower-e2e-scenarios.v2.json для предварительного просмотра и импорта человеком: сохраните точные существующие @scenario:<CODE> или предложите стабильные коды, согласуйте tags в пределах разрешённых изменений и используйте безопасные пути относительно исследованного репозитория в testReference. Не переносите и не создавайте тесты ради инвентаризации.
Команда читает UTF-8, применяет trim и проверяет длину 1..20 000 UTF-16 code units. Она отправляет только { summary: string } на POST /api/v1/e2e-summary с токеном продукта, не запускает проверки и не меняет отчёты или диагностическое состояние. HTTP 200 подтверждается полями productId и updatedAt; содержимое summary не выводится. Exit code: 0 при принятии, 1 при ошибке.
SDK экспортирует submitE2eSummary(target, summary, timeoutMs?) и E2eSummarySubmitResult. Результат содержит ok, offline, status, безопасное message, а при успехе — productId и updatedAt. URL остаётся настраиваемым.
import { defineVvpProject } from "@vvpgroup/testing";
export default defineVvpProject({
productId: "MDM",
productName: "Master Data Hub",
checks: {
typecheck: { command: "pnpm typecheck", mandatory: true, blocking: true },
lint: { command: "pnpm lint", mandatory: true, blocking: true },
unit: { command: "pnpm test", mandatory: true, blocking: true },
},
tower: {
enabled: true,
url: process.env.VVP_TEST_TOWER_URL,
token: process.env.TEST_TOWER_TOKEN,
},
});Полный справочник: docs/sdk.md
Использование SDK API
import { defineVvpProject, buildReport, SDK_VERSION } from "@vvpgroup/testing";Лицензия
MIT
