45 lines
2.5 KiB
Markdown
45 lines
2.5 KiB
Markdown
# Модуль: Тестирование
|
|
|
|
**Ответственность**: защищает слои библиотеки, единственный root entrypoint, public examples, PDF semantics и визуальную стабильность.
|
|
**Расположение**: `.template/development/tests/`
|
|
|
|
## Публичный интерфейс
|
|
|
|
| Символ или файл | Тип | Описание |
|
|
|-----------------|-----|----------|
|
|
| `run-tests.py` | CLI | Полный release gate |
|
|
| `manifest.json` | fixture manifest | Compile, semantic, negative и visual expectations |
|
|
| `check_architecture()` | static check | Направление Typst imports |
|
|
| `check_workspace()` | static check | Root surface, docs, VS Code, private settings и public examples |
|
|
| `snapshots/` | visual baseline | Утверждённые страницы стабильных renderer fixtures |
|
|
|
|
## Зависимости
|
|
|
|
| Компонент | Что использует |
|
|
|-----------|----------------|
|
|
| Typst 0.15.1+ | Компиляция и PDF generation |
|
|
| Poppler | Text extraction, links и PNG rendering |
|
|
| Pillow | Pixel diff snapshots |
|
|
| `docs/examples/` | Public executable documentation |
|
|
|
|
## Инварианты
|
|
|
|
- Корень не содержит `document.typ`, `draft.typ` и `clean-copy.typ`.
|
|
- `docs/` видим и содержит обязательную public navigation.
|
|
- Все четыре документа и formatting guide компилируются.
|
|
- Generic profile fixtures проверяют `final`, `draft` и `clean-copy` без root entrypoint duplication.
|
|
- Безопасный private settings example содержит всех сотрудников с отключёнными PNG.
|
|
- Unit tests проверяют public directory, private offsets и отсутствие подписи.
|
|
- Public company profiles не содержат настоящих sign/stamp.
|
|
- Snapshot изменяется только после ручного visual review.
|
|
|
|
## Намеренно НЕ обрабатывает
|
|
|
|
- Юридическую корректность договоров.
|
|
- Инженерную достоверность example values.
|
|
- Установку сторонних extensions.
|
|
|
|
## Заметки для агента
|
|
|
|
> Public example является production-facing documentation: его compile failure блокирует выпуск так же, как regression renderer. Для layout changes сначала просмотрите rendered pages, затем осознанно обновите snapshots.
|