This repository was archived by the owner on Sep 11, 2026. It is now read-only.
Repository navigation
feat(storybook): хвиля 1.1+1.2 — CI Playwright-кеш + фікси канону за пілотом на components - #177
Merged
Merged
Conversation
… + скіл n-storybook) Реалізація ADR «Канон Storybook для Vue-компонентних бібліотек» (#167, #169): - scope: детекція за isVueComponentLibraryPkg + поріг ≥3 .vue, opt-out через .n-rules.json, app-детектор хвилі 2 за прапорцем (інертний) - scaffold: канонічні template .storybook/main.js (фіксований порядок плагінів, viteFinal-фільтр pages/layouts), preview.js (Quasar full install + iconSet/iconMapFn, MSW init), mocks/gql-sse.js (sseSubscription), T0-автофікс - vitest-config: projects [unit, storybook] поверх наявного test-блоку (AST, insert-only, fail-closed) + ізольований vitest.stryker.config - hygiene: undeclared third-party imports у .vue, sassVariables auto-detect - mocking: docs-only рецепти router/tfm/MSW/Pinia/pageDecorator - adopt: посекційна діагностика для ручних впроваджень без сліпого перезапису, circuit breaker на пакет; скіл npm/skills/storybook + дзеркало .cursor/skills - підключення concern-ів до lint-рушія (check:true без lint-блоку був мертвим), наскрізно верифіковано на синтетичному консюмер-репо Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…l version pin Кластер 7 ADR канону Storybook: - npm-module/npm_package_json: allowlist Storybook-devDeps у npm/package.json (обґрунтування — isStorybookRoot() у @7n/test читає саме цей файл) + version pin static map у Rego (НЕ template — T0 deep-merge інжектив би канонічні devDeps у кожен пакет) - bun/package_json: @vitest/browser, playwright, @storybook/addon-vitest у allowed_root_test_deps (test-tooling для vitest-проєкту storybook); Storybook-identity пакети в корінь свідомо не пущені, межа задокументована Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ollo subscription + Pinia) (#169) * docs(adr): brainstorm session — розширення канону Storybook на сторінки (route.params + Apollo subscription + Pinia) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(adr): прототип-верифікація розширення Storybook для сторінок на gt Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ий PR-прогін (Кластер 5) Дослідження: ci-shared — не хаб actions (звичайний консюмер); канонічний механізм — вендоринг composite actions з npm-tarball @7n/rules. Крос-плагінний імпорт скоуп-детекції в ci-github нелегальний, тому concern живе в правилі storybook з requires.capability: ci:github (перше реальне використання capability-гейтингу — спить без плагіна @7n/rules-ci-github). - .github/actions/setup-playwright-chromium: кеш ms-playwright за версією playwright з bun.lock, install лише chromium --with-deps при cache miss - .github/workflows/lint-storybook.yml: матриця по пакетах у скоупі → vitest run --project=storybook - nightly mutation coverage свідомо поза concern-ом (test/stryker_config) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…a/components
Пілот на одному з двох ручних впроваджень-джерел ADR знайшов 2 баги і 3 прогалини:
- viteFinal-фільтр стійкий до VueMacros-стека: resolve/flatten Promise/масивів
плагінів, фільтр vue-трансформерів за сімейством (vite:vue*, vue-macros),
+ vite-plugin-vue-layouts-next / unplugin-vue-router у несумісних
- vitest v4 API: provider: playwright() factory з @vitest/browser-playwright
замість рядка 'playwright' (templates, маркери, fix, тести);
@vitest/browser-playwright доданий у кореневий governance-allowlist
- flat-root layout у detectStoriesGlob: .vue у корені пакета →
'../*.stories.@(js|ts)' (реальний layout components/npm)
- mocking.mdc: рецепт точкового alias-мока одного модуля з критерієм вибору
проти MSW (розмежування скоупів, без суперечності рішенню розширення ADR)
- hasStoriesMarker: storybookTest({ configDir }) без явного include —
легітимний патерн, не порушення
75/75 vitest, 21/21 rego, дельта-лінт чистий.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Що змінено
Продовження #176 — CI-частина Кластера 5 і перша ітерація зворотного зв'язку з реального пілота.
CI-concern
storybook/ci(Playwright-кеш)ci-shared— не хаб спільних actions (звичайний консюмер@7n/rules); канонічний механізм — вендоринг composite actions з npm-tarball. Крос-плагінний імпорт скоуп-детекції вci-githubнелегальний → concern живе в правилі storybook зrequires.capability: ci:github(перше реальне використання capability-гейтингу).setup-playwright-chromiumaction (кешms-playwrightза версією зbun.lock, лише chromium) +lint-storybook.yml(матриця по пакетах у скоупі →vitest run --project=storybook).Фікси канону за пілотом
--adoptна nitra/componentsПілот (read-only діагностика на одному з двох ручних впроваджень-джерел ADR): adopt-модуль без крашів, скоуп-детекція точна, але знайдено 2 баги + 3 прогалини — усі виправлені:
VueMacros-стека (resolve/flatten Promise/масивів, фільтр vue-трансформерів за сімейством) +vite-plugin-vue-layouts-next/unplugin-vue-routerу несумісних — інакше канон відтворював би конфлікт подвійної SFC-трансформації, від якого ручні реалізації тікали.provider: playwright()factory з@vitest/browser-playwrightзамість застарілого рядка; пакет доданий у governance-allowlist..vueу корені пакета — реальний layoutcomponents/npm) уdetectStoriesGlob— без цього згенерований glob знайшов би 0 історій..storybook/mocks/apollo.js) з явним критерієм вибору проти MSW.storybookTest({ configDir })без явногоinclude— легітимний патерн, більше не хибний позитив.Рев'юеру
components(гілкаpilot/storybook-adopt) не закомічені — після релізу цього PR adopt можна ганяти там начисто.npm/package.json, не в корені — кореневий rego-allowlist це не блокує, але якщо повториться в інших пілотах, варта ADR-нотатка.🤖 Generated with Claude Code