Files
HY2XS_flamy/docs/testing/11-1-how-to-run.md
T

2.8 KiB

Как запускать тесты

Часть набора проверок HY2XS. Карта всех частей — docs/testing/README.md.

Цель набора

Зафиксировать checklist для двухслойной схемы «builder layer + runtime/target layer».

Команды

# Юнит-тесты и типы оркестратора
cd orchestrator && bun install --frozen-lockfile && bun run check && bun test

# Тесты и статический анализ HY2XS admin
cd apps && go vet ./... && go test ./...

# Проверка типов и сборка frontend
cd apps/frontend && pnpm install --frozen-lockfile && pnpm run verify

# Dependency-free контракты панели
bun test tools/test/frontend-sprite.test.ts tools/test/frontend-contract.test.ts

# Runtime-компиляция всех RU/EN-сообщений реальным vue-i18n
cd apps/frontend && bun test test/i18n-runtime.test.ts

# Сверка среды разработки с versions.env (ничего не меняет)
./tools/dev/doctor.sh

# Полный E2E с реальным клиентом Hysteria (Debian 13 amd64; нужен Go)
HYSTERIA_BIN=/usr/local/bin/hysteria ./tools/test/e2e-hysteria.sh

# Production-сборка: прогоняет тесты, резолвер и compatibility gate
./tools/build/build.sh

build.sh останавливается, если падают тесты оркестратора, контрактные тесты панели, тесты админки или compatibility gate.

Почему контракты панели проверяет Bun, а не vitest

Dependency-free модули (SvgIcon/symbol.ts, frontend constants и словари локализации) намеренно чистые: ни Vite, ни DOM в них нет. Отдельный i18n-runtime.test.ts запускается после pnpm install, потому что обязан использовать именно vue-i18n из frozen lock-графа. Он обходит каждую строку обоих словарей и считает отказом и исключение, и compiler diagnostics в console.error.

Vitest с jsdom не вычисляет currentColor и визуальной корректности всё равно не доказал бы, зато привёл бы в граф pnpm audit — а его порог считается по ВСЕМУ lock-файлу frontend — сотню транзитивных зависимостей ради нулевой дополнительной гарантии.

Визуальная часть остаётся ручной и фиксируется в отчёте приёмки, см. docs/acceptance/README.md.