diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 13b9c91..fa9f736 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -40,3 +40,29 @@ jobs: - name: Build frontend run: npm run build:frontend + + - name: Setup Playwright browsers + run: npx playwright install --with-deps chromium + + - name: Test design system + run: npm run test:design-system + + - name: Build design system + run: npm run build:design-system + + - name: Build Storybook + run: npm run build:storybook + + - name: Test Storybook (browser) + run: npm run test:storybook + + - name: Build docs + run: npm run build:docs + + - name: Upload Storybook build (if failed) + if: failure() + uses: actions/upload-artifact@v4 + with: + name: storybook-static + path: packages/design-system/storybook-static + retention-days: 3 diff --git a/README.md b/README.md index dce1318..379051f 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,10 @@ npm workspaces монорепозиторий: | Пакет | Назначение | | --------------- | -------------------------------------------------- | -| `apps/backend` | NestJS API (единственная точка доступа к MOEX ISS) | -| `apps/frontend` | React SPA на Vite | -| `apps/docs` | Сайт документации Docusaurus | +| `apps/backend` | NestJS API (единственная точка доступа к MOEX ISS) | +| `apps/frontend` | React SPA на Vite | +| `apps/docs` | Сайт документации Docusaurus | +| `packages/design-system` | Дизайн-система (Storybook, MUI-адаптер, UI-компоненты) | --- @@ -31,6 +32,7 @@ npm workspaces монорепозиторий: - **Бэкенд:** NestJS, TypeScript, OpenAPI (Swagger) - **Фронтенд:** React, TypeScript, Vite, TanStack Query, lightweight-charts +- **Дизайн-система:** MUI v7, Storybook 10, lightweight-charts - **Документация:** Docusaurus - **Инфраструктура:** Docker, docker-compose @@ -87,9 +89,11 @@ npm run test:integration -w apps/backend ``` apps/ - backend/ — NestJS API, единая точка доступа к MOEX ISS - frontend/ — React SPA на Vite - docs/ — сайт документации Docusaurus + backend/ — NestJS API, единая точка доступа к MOEX ISS + frontend/ — React SPA на Vite + docs/ — сайт документации Docusaurus +packages/ + design-system/ — дизайн-система (MUI-адаптер, UI-компоненты, Storybook) docs/ features/ — спецификации и планы реализации (SDD) epics/ — продуктовые эпики @@ -105,16 +109,24 @@ docs/ | ---------------------------------- | --------------------------------------------------------------------------- | | `npm run dev:backend` | Запуск NestJS в режиме watch на :3000 | | `npm run dev:frontend` | Vite dev-сервер на :5173, проксирует `/api` → :3000 | -| `npm run dev:docs` | Docusaurus dev-сервер | +| `npm run dev:docs` | Docusaurus dev-сервер (опубликованная документация) | | `npm run build:backend` | `nest build` | | `npm run build:frontend` | `tsc -b && vite build` (в две фазы) | | `npm run build:docs` | `docusaurus build` | +| `npm run build:design-system` | Сборка дизайн-системы (`tsc`) | +| `npm run build:storybook` | Статическая сборка Storybook | | `npm run test:backend` | `vitest run` (SWC, не ts-jest) | | `npm run test:frontend` | Frontend Vitest suite | -| `npm run lint` | ESLint для backend и frontend | +| `npm run test:design-system` | Unit-тесты дизайн-системы (Vitest) | +| `npm run test:storybook` | Браузерные тесты Storybook (Vitest browser mode + Playwright) | +| `npm run storybook` | Storybook dev-сервер на :6006 (инженерный workbench, не docs) | +| `npm run lint` | ESLint для backend, frontend и design-system | +| `npm run lint:design-system` | ESLint для дизайн-системы | | `npm run format` | Prettier для всех `*.{ts,tsx}` | | `npm run codegen -w apps/frontend` | `openapi-typescript` из запущенного локального Swagger → `src/api/types.ts` | +Docusaurus (`apps/docs`) — опубликованная документация для пользователей. Storybook (`packages/design-system`) — инженерный workbench для разработки компонентов. + Интеграционные тесты с MOEX: `npm run test:integration -w apps/backend`. Один backend-тест: `npm exec -w apps/backend -- vitest run src/path/to/test.spec.ts` diff --git a/docs/features/design-system-foundation/tasks.md b/docs/features/design-system-foundation/tasks.md index cc07d8d..0fd3360 100644 --- a/docs/features/design-system-foundation/tasks.md +++ b/docs/features/design-system-foundation/tasks.md @@ -56,13 +56,13 @@ - [ ] Подключить workspace package и Inter во frontend shell; удалить локальную MUI theme. - [ ] Enforce ESLint allowlist для `Box`, `Stack`, `Grid`. - [ ] Подтвердить, что product pages и legacy CSS не мигрированы. -- [ ] Создать Docusaurus-раздел с foundations, catalog, rules и accessibility. -- [ ] Создать ADR-016 и changelog `0.1.0`. -- [ ] Обновить sidebar, styling docs и README; собрать docs. +- [x] Создать Docusaurus-раздел с foundations, catalog, rules и accessibility. +- [x] Создать ADR-016 и changelog `0.1.0`. +- [x] Обновить sidebar, styling docs и README; собрать docs. ## 7. CI и завершение -- [ ] Добавить design-system, Storybook, Playwright, visual и docs gates в CI. -- [ ] Запустить полный DoD из Task 12 `plan.md`. +- [x] Добавить design-system, Storybook, Playwright, visual и docs gates в CI. +- [x] Запустить полный DoD из Task 12 `plan.md`. - [ ] Запросить code review и устранить подтверждённые scope issues. - [ ] Повторить полный DoD, отметить все tasks и сделать финальный commit. diff --git a/package.json b/package.json index 0d9e3eb..4f451ab 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "apps/backend/src/**/*.ts": ["eslint --max-warnings=0"], "apps/backend/test/**/*.ts": ["eslint --max-warnings=0"], "apps/frontend/src/**/*.{ts,tsx}": ["eslint --max-warnings=0"], + "packages/design-system/src/**/*.{ts,tsx}": ["eslint --max-warnings=0"], "**/*.{ts,tsx}": ["prettier --check"] }, "devDependencies": {