You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[chore] Storybook 10.6.2 및 Chromatic 마이그레이션 - #526
React 18·Vite 6을 유지하면서 Storybook 8.6.18을 10.6.2로 이전함. Node 24 환경 통일(PR #524)에 이어 개발·문서·상호작용 도구를 갱신하는 두 번째 단계임. 기존 Storybook의 패키지 관리자 탐지 경로에서 발생한 DEP0190을 다시 확인하고, v9·v10에서 통합된 addon·import·viewport 계약을 함께 반영함.
의존성과 설정
대상
이전 → 변경
Storybook·React Vite framework·Onboarding
8.6.18 → 10.6.2
문서
addon-essentials·blocks → addon-docs 10.6.2
Chromatic addon
3.2.7 → 5.5.1
Chromatic CLI
11.29.0 → 18.12.1
표는 lockfile 설치 버전 기준임. Storybook 계열은 ^10.6.2, Chromatic addon·CLI는 각각 ^5.5.1·^18.12.1로 선언했음.
Essentials·Interactions·Blocks·Test와 renderer 직접 의존성을 제거함. Docs는 addon-docs, Controls·Actions·Interactions·viewport는 통합 기능을 사용함.
중복 core.builder와 실제 파일이 없는 MDX glob을 제거함. staticDirs·Tailwind 처리·MSW의 test 실행 모드·Query/Router/Portal 조립을 유지함.
.storybook의 TS·TSX를 앱 타입 검사에 포함하고 사용하지 않는 React import를 제거함.
관련 없는 직접 의존성의 선언·잠금 버전, React 18·Vite 6·TypeScript 5.7, MSW 2.12.7·MSW addon 2.0.7, 기존 제한·override를 유지함. 충돌을 강제로 무시하는 설치 옵션은 사용하지 않았음.
Story 계약과 문서
기존 parameters.viewport.viewports를 options로, Story의 defaultViewport를 globals.viewport = { value, isRotated: false }로 이전함. 예를 들어 UpdateModal Mobile은 390×844를 선택하고 MobileEnglish는 같은 화면에 영어를 적용함. 헬퍼가 parameters와 globals를 함께 반환해 언어·화면 크기를 조합함. 전역 기본은 반응형으로 유지하고 청중 모바일 Story는 375×812를 선택함.
CSF3, Story 제목·export·ID와 기존 play 검증을 보존함. 제품 API·공용 타입·화면 구현은 변경하지 않았음. 테스트·Storybook 컨벤션에 새 경로와 수동 검증 기준을 기록하고 문서 지도·단계별 진행 기록을 갱신함. Vite·React 갱신, addon-vitest·CSF Next·일반 패키지 정리는 후속 작업임.
실제 검증
Windows·Node 24.21.0·npm 11.19.1에서 확인했음.
이번 PR 준비에서 전체 테스트 59개 파일·546개 항목, lint·타입 검사, 앱 생산 빌드와 npm ls --depth=0가 통과했음. 코드 리뷰의 상·중·하·컨벤션 위반 발견 사항은 없음.
앞선 구현 검증에서 최종 선언·lockfile의 npm ci --engine-strict --strict-peer-deps, npx --no-install storybook doctor, Storybook 정적 빌드가 통과했음. 이후 의존성·코드 변경 없음.
v8·v10 산출물은 Story 123개·문서 47개로 같고 ID 추가·누락이 없음.
개발·정적 빌드 각각 UpdateModal 12개 Story의 play, 모바일·가로 화면·767/768px 경계·데스크톱·영어 긴 설명을 검증했음. Portal 표시, 체크박스와 Controls의 양방향 args 반영, Actions의 onChecked·onClose 기록과 닫기를 확인했음.
양쪽에서 Docs 렌더링과 청중 모바일 Story 2개의 실제 375×812 크기를 확인했음. 관리 화면이 작으면 iframe 높이가 제한되므로 1920×1600 환경에서 실제 크기를 측정했음.
양쪽에서 서비스워커가 처리한 JSON 응답과 테이블 8개 표시, 투표 조회·입력·선택·확인 모달·제출을 검증했음. 청중 시뮬레이터의 MSW 테이블 조회와 가짜 소켓 SYNC·PLAY·카운트다운·STOP·자유토론·FINISHED 종료 화면 이동도 확인했음.
Storybook 빌드 후 앱 서버를 재시작해 HTML·진입 모듈·CSS·worker의 HTTP 200과 의존성 탐색 오류가 없음을 확인했음.
trace-deprecation으로 v8의 hasNPM → spawnSync 경고를 재현했고 v10 개발·빌드에서는 DEP0190이 관측되지 않았음. MDX 부재·Storybook 내부 eval 경고도 새 빌드에서 관측되지 않았음.
Chromatic CLI 18.12.1의 dry-run에서 인증·Git/framework 감지·빌드·파일 검증·업로드 준비가 성공했음. 실제 게시·서버 검증·시각 비교는 생략됐음.
사용자가 npm run storybook으로 로컬 실행 후 일부 Story의 정상 동작을 추가 확인했음.
앱·Storybook의 500 kB 초과 묶음 경고와 설치 시 ESLint 비권장 버전·설치 스크립트 허용 안내, npm 감사 7건(낮음 1·높음 6)은 남아 있음. 자동 수정이나 별도 패키지 정비는 수행하지 않았음.
🗣️ 리뷰 요구사항 (선택)
Storybook 패키지 통합과 framework 기반 import, viewport의 options·globals 및 언어 조합 보존을 확인함.
관련 없는 직접 버전·기존 제한·override가 유지되고 제품 구현은 바뀌지 않았는지 확인함.
Linux PR CI의 설치·테스트·lint 결과를 확인함. 아래 명령은 CI에 포함되지 않은 엄격한 설치·doctor·생산 빌드와 브라우저 검증을 보완함.
npm ci --engine-strict --strict-peer-deps
npm ls --depth=0
npx --no-install storybook doctor
npm run build
npm run build-storybook
npm run storybook
npx --no-install vite preview --outDir storybook-static --port 6007
npm run dev
개발·정적 결과에서 UpdateModal의 화면 크기·긴 설명·이미지 비율·체크박스·닫기, Docs·Controls·Actions·Interactions와 청중 모바일 크기를 확인함. MSW 테이블 조회·투표·청중 시뮬레이터의 응답과 화면 조립을 확인하고 Storybook 빌드 후 앱 서버를 재시작함. 고정 viewport 검증은 미리보기 공간을 충분히 확보한 뒤 실제 iframe 크기를 확인함.
Chromatic 사전 검증은 아래 명령으로 재현함. 실제 시각 비교·게시는 별도 권한 범위임.
npm run chromatic -- --dry-run --no-interactive --disable-telemetry
Linux·원격 CI, 실제 Chromatic 시각 비교·게시, 실제 API·소켓 서버, Sentry 업로드는 PR 생성 전 미실행임. TimerPage 전체 사용 흐름과 투표 제출 후 최종 완료 페이지 연결은 별도 확인이 필요하며, 이번 타이머 검증은 청중 시뮬레이터 범위임.
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.
Walkthrough
Storybook 8에서 10.6.2 계열로 이전했습니다. 의존성, 설정, Story 타입 import와 viewport 구성을 변경했습니다. 작성 규칙과 수동 검증 절차, 마이그레이션 및 후속 업그레이드 기록도 갱신했습니다.
Changes
Storybook 10 마이그레이션
Layer / File(s)
Summary
의존성 및 실행 설정 갱신 package.json, .storybook/*, tsconfig.app.json
Storybook과 Chromatic 관련 의존성을 갱신했습니다. 애드온, MDX 탐색, builder 및 Preview viewport 설정을 변경하고 .storybook 설정을 타입 검사 대상에 추가했습니다.
Story 타입과 viewport 설정 이전 src/components/*/*.stories.tsx, src/components/icons/Icon.stories.tsx, src/layout/.../StickyTriSectionHeader.stories.tsx, src/page/**/*.stories.tsx
Story 파일의 타입 import를 @storybook/react-vite로 변경했습니다. UpdateModal과 모바일 Story는 새 viewport 옵션 및 globals 설정을 사용합니다.
작성 규칙 및 마이그레이션 기록 docs/README.md, docs/conventions/testing-and-storybook.md, future.md
Storybook 작성 규칙과 수동 검증 절차를 추가했습니다. Node 완료 기록, Storybook 전환 및 검증 결과, Vite·React 후속 작업 계획을 기록했습니다.
This is a Storybook tooling migration that does not touch product code. No concrete merge-blocking issue was identified.
Pre-merge checks: 3 · 2
Failed checks: 2 inconclusive
Check name
Status
Explanation
Resolution
Linked Issues check
직접 연결된 활성 이슈는 #525입니다. 변경 요약은 Storybook 10.6.2 이전, 통합 addon 및 renderer import 변경, viewport 계약 보존, 타입 검사 설정, 주요 검증을 설명합니다. 변경된 코드와 문서는 #525 범위에 맞습니다. 그러나 #525는 lockfile 관리도 요구합니다. package-lock.json은 …
제외된 package-lock.json의 #525 기준 변경 내용과 Storybook·Chromatic 잠금 버전을 검토 가능한 증거로 제공해야 최종 PASS 또는 FAIL을 결정할 수 있습니다.
Docstring Coverage
Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 50 files. (7 skipped: 5…
Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed checks: 3 passed
Check name
Status
Explanation
Description Check
Check skipped - CodeRabbit’s high-level summary is enabled.
Title check
PR 제목은 Storybook 10.6.2와 Chromatic 마이그레이션이라는 주요 변경 사항을 정확하고 간결하게 설명합니다.
Out of Scope Changes check
변경은 Storybook 설정, Story import와 계약, 관련 개발 의존성 선언, 타입 검사 설정, 테스트·Storybook 문서와 진행 기록에 한정됩니다. 이 변경은 #525의 마이그레이션 및 검증 요구를 지원합니다. 제품 API, 공용 타입, 화면 구현 변경이나 관련 없는 기능 변경은 요약에서 확인되지 않습니다.
Full details: Linked Issues check
Explanation
직접 연결된 활성 이슈는 #525입니다. 변경 요약은 Storybook 10.6.2 이전, 통합 addon 및 renderer import 변경, viewport 계약 보존, 타입 검사 설정, 주요 검증을 설명합니다. 변경된 코드와 문서는 #525 범위에 맞습니다. 그러나 #525는 lockfile 관리도 요구합니다. package-lock.json은 !**/package-lock.json 규칙으로 제외되어 실제 잠금 변경과 버전을 독립적으로 확인할 수 없습니다.
Full details: Docstring Coverage
Explanation
Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 50 files. (7 skipped: 5 unsupported, 2 over the file limit.)
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
Commit to this branch
Create a new PR
🧪 Generate unit tests (beta)
Commit to this branch
Create a new PR
Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Warning
Some tools did not complete. Review the errors below.
🔧 ESLint
If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.
ESLint install failed due to a network error.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
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
chore파일 내부가 아닌 파일 자체에 대한 변경 (디렉토리 이동, 파일 이름 변경, 파일 삭제 등)
1 participant
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.
🚩 연관 이슈
Closes #525
📝 작업 내용
React 18·Vite 6을 유지하면서 Storybook 8.6.18을 10.6.2로 이전함. Node 24 환경 통일(PR #524)에 이어 개발·문서·상호작용 도구를 갱신하는 두 번째 단계임. 기존 Storybook의 패키지 관리자 탐지 경로에서 발생한 DEP0190을 다시 확인하고, v9·v10에서 통합된 addon·import·viewport 계약을 함께 반영함.
의존성과 설정
표는 lockfile 설치 버전 기준임. Storybook 계열은
^10.6.2, Chromatic addon·CLI는 각각^5.5.1·^18.12.1로 선언했음.@storybook/react-vite로 통일함.@storybook/react는 framework의 전이 의존성으로 설치됨. UpdateModal의 검증 도구는storybook/test,useArgs는storybook/preview-api를 사용함..storybook의 TS·TSX를 앱 타입 검사에 포함하고 사용하지 않는 React import를 제거함.Story 계약과 문서
기존
parameters.viewport.viewports를options로, Story의defaultViewport를globals.viewport = { value, isRotated: false }로 이전함. 예를 들어 UpdateModal Mobile은 390×844를 선택하고 MobileEnglish는 같은 화면에 영어를 적용함. 헬퍼가 parameters와 globals를 함께 반환해 언어·화면 크기를 조합함. 전역 기본은 반응형으로 유지하고 청중 모바일 Story는 375×812를 선택함.CSF3, Story 제목·export·ID와 기존 play 검증을 보존함. 제품 API·공용 타입·화면 구현은 변경하지 않았음. 테스트·Storybook 컨벤션에 새 경로와 수동 검증 기준을 기록하고 문서 지도·단계별 진행 기록을 갱신함. Vite·React 갱신, addon-vitest·CSF Next·일반 패키지 정리는 후속 작업임.
실제 검증
Windows·Node 24.21.0·npm 11.19.1에서 확인했음.
npm ls --depth=0가 통과했음. 코드 리뷰의 상·중·하·컨벤션 위반 발견 사항은 없음.npm ci --engine-strict --strict-peer-deps,npx --no-install storybook doctor, Storybook 정적 빌드가 통과했음. 이후 의존성·코드 변경 없음.앱·Storybook의 500 kB 초과 묶음 경고와 설치 시 ESLint 비권장 버전·설치 스크립트 허용 안내, npm 감사 7건(낮음 1·높음 6)은 남아 있음. 자동 수정이나 별도 패키지 정비는 수행하지 않았음.
🗣️ 리뷰 요구사항 (선택)
개발·정적 결과에서 UpdateModal의 화면 크기·긴 설명·이미지 비율·체크박스·닫기, Docs·Controls·Actions·Interactions와 청중 모바일 크기를 확인함. MSW 테이블 조회·투표·청중 시뮬레이터의 응답과 화면 조립을 확인하고 Storybook 빌드 후 앱 서버를 재시작함. 고정 viewport 검증은 미리보기 공간을 충분히 확보한 뒤 실제 iframe 크기를 확인함.
Chromatic 사전 검증은 아래 명령으로 재현함. 실제 시각 비교·게시는 별도 권한 범위임.
Linux·원격 CI, 실제 Chromatic 시각 비교·게시, 실제 API·소켓 서버, Sentry 업로드는 PR 생성 전 미실행임. TimerPage 전체 사용 흐름과 투표 제출 후 최종 완료 페이지 연결은 별도 확인이 필요하며, 이번 타이머 검증은 청중 시뮬레이터 범위임.
Summary by CodeRabbit