fix(rc5): harden frontend runtime and diagnostics

This commit is contained in:
2026-09-08 05:22:06 +05:00
parent 079094591b
commit b7e478f014
26 changed files with 707 additions and 169 deletions
+21 -2
View File
@@ -1345,14 +1345,20 @@ $piped_matcher"
|| fail "acceptance: прогон тестов оркестратора не фиксируется результатом"
grep -q 'ADMIN_TESTS_PASSED' tools/build/lib/package.sh \
|| fail "acceptance: прогон тестов админки не фиксируется результатом"
grep -q 'FRONTEND_CONTRACT_TESTS_PASSED' tools/build/lib/package.sh \
|| fail "acceptance: ранние контракты панели не фиксируются результатом"
grep -q 'FRONTEND_RUNTIME_TESTS_PASSED' tools/build/lib/package.sh \
|| fail "acceptance: runtime-компиляция локализации не фиксируется результатом"
grep -q 'FRONTEND_TESTS_PASSED' tools/build/lib/package.sh \
|| fail "acceptance: прогон контрактных тестов панели не фиксируется результатом"
|| fail "acceptance: общий результат тестов панели не фиксируется"
"$BUN_BIN" -e '
const source = require("node:fs").readFileSync("tools/build/lib/package.sh", "utf8");
for (const [fn, flag] of [
["run_orchestrator_tests()", "ORCHESTRATOR_TESTS_PASSED=\"true\""],
["run_admin_tests()", "ADMIN_TESTS_PASSED=\"true\""],
["run_frontend_tests()", "FRONTEND_TESTS_PASSED=\"true\""]
["run_frontend_tests()", "FRONTEND_CONTRACT_TESTS_PASSED=\"true\""],
["bundle_ui()", "FRONTEND_RUNTIME_TESTS_PASSED=\"true\""],
["bundle_ui()", "FRONTEND_TESTS_PASSED=\"true\""]
]) {
const start = source.indexOf(fn);
if (start < 0) throw new Error("не найдена функция " + fn);
@@ -1366,6 +1372,19 @@ $piped_matcher"
if (set < 0) throw new Error(fn + ": результат прогона не фиксируется");
if (set < run) throw new Error(fn + ": результат объявляется раньше, чем получен");
}
const bundleStart = source.indexOf("bundle_ui()");
const bundleRest = source.slice(bundleStart);
const bundleEnd = bundleRest.search(/\n\}[\r\n]/);
const bundle = bundleEnd < 0 ? bundleRest : bundleRest.slice(0, bundleEnd);
const install = bundle.indexOf("install --frozen-lockfile");
const runtime = bundle.indexOf("test test/i18n-runtime.test.ts");
const typecheck = bundle.indexOf("run typecheck");
const build = bundle.indexOf("run build:prod");
if (install < 0 || runtime < 0) throw new Error("runtime i18n gate не найден в bundle_ui");
if (!(install < runtime && runtime < typecheck && typecheck < build)) {
throw new Error("порядок frontend gate обязан быть install -> i18n runtime -> typecheck -> build");
}
' || fail "acceptance: утверждение о пройденных тестах обязано следовать за прогоном"
# Детектор гонок — часть прогона админки, а не пожелание.