← 글 목록

notes

Chromatic 설정 가이드

Chromatic 설정·Storybook 연동과 시각적 회귀 테스트 운영 메모.

이 문서는 모노레포 프로젝트에서 Chromatic을 설정하고 사용하는 방법을 설명합니다.

## 목차
- [사전 준비](#사전-준비)
- [설치 및 설정](#설치-및-설정)
- [GitHub 연동](#github-연동)
- [CI/CD 설정](#cicd-설정)
- [사용 방법](#사용-방법)
- [트러블슈팅](#트러블슈팅)

###  Chromatic 계정 생성
1. [Chromatic 웹사이트](https://www.chromatic.com/)에 접속
2. GitHub 계정으로 회원가입
3. 무료 또는 유료 플랜 선택

###  Repo 설정 
1. 반영할 프로젝트 레포지토리에 크로마틱 oauth 세팅
### create chromtic 
1. oauth 세팅시 해당과 같이 프로젝트항목이 노출됨
2. 반영할 프로젝트를 선택후 순차대로 진행 

# 세팅완료
1. 세팅완료후 정상적으로 빌드 되는지, 스토리북에 정상출력되는지 확인 



### 2. 프로젝트 요구사항
- Node.js 14.x 이상
- Storybook 6.x 이상
- Git 저장소

## 설치 및 설정

### 1. Chromatic CLI 설치
```bash
# UI 패키지에 Chromatic 설치
pnpm --filter @monorepo/ui add -D chromatic
```

### 2. 프로젝트 토큰 설정
1. Chromatic 웹사이트에서 새 프로젝트 생성
2. 제공된 프로젝트 토큰 복사
3. 환경 변수 설정:
   ```bash
   # .env 파일에 추가
   CHROMATIC_PROJECT_TOKEN=your_project_token
   ```

### 3. package.json 스크립트 추가
```json
{
  "scripts": {
    "chromatic": "chromatic --exit-zero-on-changes",
    "chromatic:ci": "chromatic --auto-accept-changes"
  }
}
```

## GitHub 연동

### 1. GitHub Actions 설정
`.github/workflows/chromatic.yml` 파일 생성:

```yaml
name: Chromatic
on: push

jobs:
  chromatic:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      
      - uses: pnpm/action-setup@v2
        with:
          version: 8
      
      - name: Install dependencies
        run: pnpm install
      
      - name: Publish to Chromatic
        uses: chromaui/action@v1
        with:
          projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
          workingDir: packages/ui
```

### 2. GitHub Secrets 설정
1. GitHub 저장소 Settings > Secrets and variables > Actions 접속
2. 'New repository secret' 클릭
3. Name: `CHROMATIC_PROJECT_TOKEN`
4. Value: Chromatic 프로젝트 토큰 입력

## 사용 방법

### 로컬에서 실행
```bash
# Storybook 실행
pnpm --filter @monorepo/ui storybook

# Chromatic에 배포
pnpm --filter @monorepo/ui chromatic
```

### UI 변경사항 검토
1. PR 생성 시 자동으로 Chromatic 빌드 실행
2. GitHub PR에 추가되는 Chromatic 링크 확인
3. 변경사항 검토 및 승인/거부

### 스냅샷 테스트
- 컴포넌트 변경 시 자동으로 스냅샷 비교
- 시각적 회귀 테스트 자동화
- 의도하지 않은 UI 변경 방지

## 트러블슈팅

### 일반적인 문제 해결
1. **빌드 실패**
   - 의존성 설치 확인
   - Node.js 버전 확인
   - 프로젝트 토큰 확인

2. **스토리 로드 실패**
   - Storybook 설정 확인
   - 컴포넌트 경로 확인
   - 필요한 의존성 설치 확인

3. **CI/CD 파이프라인 오류**
   - GitHub Actions 설정 확인
   - 환경 변수 설정 확인
   - 작업 디렉토리 경로 확인

### 모범 사례
1. **커밋 메시지 규칙**
   ```
   feat(ui): 새로운 버튼 컴포넌트 추가
   fix(ui): 버튼 스타일 수정
   chore(ui): Chromatic 설정 업데이트
   ```

2. **브랜치 전략**
   - feature/* : 새로운 기능 개발
   - fix/* : 버그 수정
   - chore/* : 설정 변경

3. **PR 템플릿**
   ```markdown
   ## 변경사항
   - [ ] UI 컴포넌트 수정
   - [ ] Storybook 문서 업데이트
   - [ ] Chromatic 스냅샷 확인

   ## 스크린샷
   [스크린샷 추가]

   ## Chromatic 링크
   [Chromatic 링크 추가]
   ```

## 참고 자료
- [Chromatic 공식 문서](https://www.chromatic.com/docs/)
- [Storybook 공식 문서](https://storybook.js.org/)
- [GitHub Actions 문서](https://docs.github.com/en/actions)