fix(rc5): harden frontend runtime and diagnostics
This commit is contained in:
@@ -18,9 +18,12 @@ 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
|
||||
|
||||
@@ -36,9 +39,12 @@ HYSTERIA_BIN=/usr/local/bin/hysteria ./tools/test/e2e-hysteria.sh
|
||||
|
||||
## Почему контракты панели проверяет Bun, а не vitest
|
||||
|
||||
Проверяемые модули (`SvgIcon/symbol.ts`, `constants/branding.ts`, словари
|
||||
локализации) намеренно чистые: ни Vite, ни DOM в них нет, поэтому их можно
|
||||
выполнить вне браузера уже закреплённым в `versions.env` Bun.
|
||||
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` — а его порог считается по
|
||||
|
||||
@@ -918,7 +918,8 @@ build tooling исполняется на build-машине и порождае
|
||||
| Шаг сборки | Что запускается |
|
||||
| --- | --- |
|
||||
| `run_orchestrator_tests` | `bun x tsc --noEmit`, `bun test` |
|
||||
| `bundle_ui` | `pnpm run typecheck` до сборки bundle |
|
||||
| `run_frontend_tests` | dependency-free контракты панели |
|
||||
| `bundle_ui` | после frozen install: `bun test test/i18n-runtime.test.ts`, затем `pnpm run typecheck` и bundle |
|
||||
| `run_admin_tests` | `go vet ./...`, `go test ./...` |
|
||||
|
||||
Приёмка проверяет:
|
||||
@@ -926,9 +927,13 @@ build tooling исполняется на build-машине и порождае
|
||||
- отключающей тесты переменной нет ни в одном модуле сборки, ни в README/docs
|
||||
(место для истории — `CHANGELOG.md`);
|
||||
- `metadata/package.env` содержит `tests_gate=true`;
|
||||
- общий frontend-флаг выставляется только после ранних контрактов и
|
||||
runtime-компиляции всех сообщений RU/EN;
|
||||
- runtime-gate стоит между frozen install и typecheck/build, использует
|
||||
`vue-i18n` из lock-графа и считает ошибкой compiler diagnostics;
|
||||
- утверждение о прогоне выставляется **после** самого прогона, а не до него;
|
||||
- `write_metadata` отказывается писать метаданные, если хотя бы один из двух
|
||||
прогонов не подтверждён.
|
||||
- `write_metadata` отказывается писать метаданные, если хотя бы одна из
|
||||
обязательных групп проверок не подтверждена.
|
||||
|
||||
## A12. Приёмка проверяет код, а не упоминания
|
||||
|
||||
|
||||
Reference in New Issue
Block a user