Files
houseplan-card/test/user-guide-parity.test.mjs
T
Sergey Matyuninandclaude[bot] 85cba3d8b4 docs: синхронизировать английское руководство (#668)
Английская версия догнана до структуры и содержания русского руководства. Структурный гейт защищает H2-H4 и маркер актуальной версии от нового рассинхрона.

Issue: #668
User-Visible: no
2026-09-27 09:18:50 +00:00

37 lines
1.5 KiB
JavaScript

import assert from 'node:assert/strict';
import { readFileSync } from 'node:fs';
import test from 'node:test';
import {
guideHeadingProfile,
guideParityErrors,
guideVersion,
} from '../scripts/user-guide-parity.mjs';
const read = (path) => readFileSync(new URL(`../${path}`, import.meta.url), 'utf8');
test('#668: English and Russian user guides keep the same structure and version', () => {
const english = read('docs/USER-GUIDE.md');
const russian = read('docs/USER-GUIDE.ru.md');
assert.deepEqual(guideParityErrors(english, russian), []);
assert.equal(guideHeadingProfile(english).filter(({ section }) => section).length, 23);
assert.equal(guideVersion(english, 'en'), guideVersion(russian, 'ru'));
});
test('#668: removing a subsection makes the parity guard fail', () => {
const english = '## 1. One\n### Detail\n## 2. Two\n';
const russian = '## 1. Один\n## 2. Два\n';
assert.match(guideParityErrors(english, russian).join('\n'), /heading profiles differ/);
});
test('#668: changing a subsection level makes the parity guard fail', () => {
const english = '## 1. One\n### Detail\n';
const russian = '## 1. Один\n#### Деталь\n';
assert.match(guideParityErrors(english, russian).join('\n'), /heading profiles differ/);
});
test('#668: different guide version markers make the parity guard fail', () => {
const english = 'Current for **v1.2.3**.\n';
const russian = 'Актуально для **v1.2.4**.\n';
assert.match(guideParityErrors(english, russian).join('\n'), /current versions differ/);
});