test: добавляет Vitest и CI-workflow по образцу request-portal

Покрыты чистые функции бизнес-логики: validateFeedback (обязательность полей
по видам обращения, минимальная длина текста, анонимность) и
getAppealFieldsConfig (согласованность конфига — обязательное поле не может
быть скрыто). React-компоненты пока не тестируются: сначала нужно решить,
куда форма отправляет данные, иначе тесты придётся сразу переписывать.

vite.config.ts: defineConfig теперь из 'vitest/config' — один файл конфига
на сборку и тесты вместо двух рассинхронизирующихся. globals: true и
environment: 'node', т.к. тестируется логика, а не DOM.

.gitea/workflows/test.yml — тот же принцип, что в request-portal (push в
main, PR, ретраи npm install), но npm run ci вместо heft test: здесь нет
SPFx/Jest, и деплой пока не добавлен — куда разворачивать dist/, не решено.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-21 09:45:05 +05:00
parent 05cd491769
commit 3cf46fa55c
8 changed files with 626 additions and 10 deletions
+10 -1
View File
@@ -1,4 +1,5 @@
import { defineConfig } from 'vite';
/// <reference types="vitest/config" />
import { defineConfig } from 'vitest/config';
import react from '@vitejs/plugin-react';
import { fileURLToPath, URL } from 'node:url';
@@ -12,5 +13,13 @@ export default defineConfig({
server: {
port: 3000,
open: true
},
test: {
// globals: true — describe/it/expect доступны без импорта, как привычно по Jest.
globals: true,
// Тестируем чистую логику (валидация, конфиг полей), а не React-компоненты,
// поэтому DOM не нужен — node-окружение быстрее jsdom.
environment: 'node',
include: ['src/**/*.test.ts']
}
});