Skip to content

Storybook для npm/ компонентів#6

Merged
vitaliytv merged 2 commits into
mainfrom
claude/storybook-integration-4b196b
Jul 20, 2026
Merged

Storybook для npm/ компонентів#6
vitaliytv merged 2 commits into
mainfrom
claude/storybook-integration-4b196b

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Summary

  • Впроваджено Storybook (Vue3 + Vite) для компонентів npm/src/components/: AgentDialog, AuditDialog, BaseDialog, DialogActions, RequestView, StatePill — по одному *.stories.js на компонент, з реалістичними моками (agent-gateway для AgentDialog/AuditDialog, без реального omlx/Tauri виклику).
  • npm/vitest.config.mjs доповнено named vitest-проєктом "storybook" (@storybook/addon-vitest, Playwright Chromium, browser mode) поряд із наявним "unit"-проєктом — точно за контрактом, який очікує @7n/test coverage (--project=storybook / --project=!storybook), щоб з'явився окремий рядок Vue (Storybook) у COVERAGE.md.
  • Виявлено й виправлено конфлікт: @stryker-mutator/vitest-runner не вміє ініціалізувати vitest-конфіг із projects-масивом, що містить browser/Playwright-проєкт — винесено ізольований npm/vitest.stryker.config.mjs (лише unit-налаштування), на який тепер вказує stryker.config.mjs#vitest.configFile; звичайне JS mutation-тестування знову проходить без крашу.
  • npm/package.json#devDependencies отримав Storybook-тулчейн (storybook, @storybook/vue3-vite, @storybook/addon-vitest, @vitest/browser, @vitest/browser-playwright, playwright) — навмисний виняток із загальної конвенції "лише runtime-deps у published package.json": @7n/test's isStorybookRoot() детектує Storybook-workspace саме за цим файлом.
  • npm/package.json#files доповнено "!**/*.stories.*", щоб stories не потрапляли у published tarball.
  • Корінь package.json отримав @7n/test (+ @vitest/coverage-v8, @stryker-mutator/core, @stryker-mutator/vitest-runner) — раніше був відсутній попри те, що coverage-скрипт на нього розраховував.

Test plan

  • cd npm && bunx vitest run --project=unit — 44/44 (без браузера)
  • cd npm && bunx vitest run --project=storybook — 6/6 story-файлів, 14/14 тестів
  • bunx storybook dev -p 6006 — візуальна перевірка в браузері (усі 6 компонентів, включно з AgentDialog/AuditDialog на мокованому agent, і close-popup/іконки через кастомний iconMapFn)
  • bunx @7n/test coverage (з кореня, @7n/test@0.16.1) — рядок Vue (Storybook) з'являється в COVERAGE.md поряд з JS
  • Lint (oxlint/eslint) чистий на всіх нових/змінених файлах

Notes for reviewer

  • COVERAGE.md і npm/reports/coverage-classify.cache.json у diff — артефакти прогону @7n/test coverage під час верифікації; можна прибрати/gitignore-нути окремим коммітом, якщо не потрібні в репо.
  • Косметичний ліміт: іконки sym_o_* без власного iconMapFn показувались би як ligature-текст — виправлено через $q.iconMapFn, що мапить на SVG з @quasar/extras/material-symbols-outlined (задокументовано в preview.js).
  • Окремо готується /n-llm-patch для @7n/rules (виняток *.stories.* з doc-gate) — не входить у цей PR.

🤖 Generated with Claude Code

vitaliytv and others added 2 commits July 18, 2026 20:02
Snapshot of in-progress Storybook setup (stories, .storybook config,
stryker/vitest-browser wiring) before rebasing onto current main.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ACP migration

Resolved conflicts by keeping main's newer stories/preview.js/icon-fix (ACP-updated
AgentDialog mock, more story variants, iconSet+iconMapFn combo for internal Quasar
icons) and layering this branch's unique contribution on top: named vitest project
"storybook" in vitest.config.mjs wired to the @7n/test coverage contract, an
isolated vitest.stryker.config.mjs (Stryker's vitest-runner can't initialize a
config with a browser/Playwright project), and @7n/test + peers in root
devDependencies. Root package.json also picks up main's @nitra/cursor -> @7n/rules
migration while keeping the coverage-related additions.

Verified post-merge: unit (23/23) and storybook (20/20) vitest projects pass,
`bunx 7n-test coverage` produces both JS and Vue (Storybook) rows without the
Stryker crash.
@vitaliytv
vitaliytv merged commit 9ceda43 into main Jul 20, 2026
1 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant