dev->main#607
Conversation
로딩 상태 스켈레톤 전환 및 queryKey 버그 수정
스터디 개설 e2e 추가
- claude.yml: @claude 멘션 시 PR/이슈에서 코드 수정·커밋 푸시·코멘트가 가능하도록 contents/pull-requests/issues write 권한 부여. 프론트엔드 작업에 필요한 npm/yarn/pnpm/npx 도구 허용. - claude-code-review.yml: PR open/reopen/ready 시점에만 자동 리뷰가 돌도록 트리거 축소(synchronize 제외, Max 쿼터 절약). 프론트엔드 확장자(ts/tsx/js/jsx/css/scss)와 주요 설정 파일에만 paths 필터 적용해 불필요한 리뷰 실행 방지. - 두 워크플로우 모두 마지막에 SLACK_FRONT_CHANNEL_ID 채널로 실행 결과 알림 step 추가. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…-actions chore: Claude Code Action 워크플로우 추가
- /design-to-dev 명령어 추가 (Figma → 컴포넌트 + 스토리 + 시각 비교) - ci.yml에 Playwright E2E job 추가 (E2E_AUTH_JSON secret으로 인증 테스트 지원) - chromatic.yml에 PR 트리거 추가 (머지 전 비주얼 회귀 감지) - PR 템플릿에 디자인 비교 섹션 추가 - lint-staged에서 yml 파일을 biome 대상에서 제외 (biome은 yml 미지원) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
E2E_AUTH_JSON을 step-level env에서 job-level env로 올려 if 조건 평가 시 env 변수가 확실히 주입되도록 수정. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
OAuth 기반 프로젝트 특성상 CI에서 auth 세션 자동 갱신 불가. @auth 태그 컨벤션 도입 후 CI는 --grep-invert @auth로 실행. 인증 필요 테스트는 로컬에서 auth.json 세팅 후 전체 실행. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
E2E_AUTH_JSON secret 유무에 따라 전체/비인증 스위트 분기. JSON 유효성 즉시 검증 및 7일 이내 만료 쿠키 경고 추가. 주석 의도와 실제 동작 불일치 해소.
page.waitForTimeout(1500) 고정 대기를 제거하고,
clickStudyCreateButton 내 trigger.waitFor({ state: 'visible' }) 에 위임한다.
비로그인 UI 테스트도 toBeHidden({ timeout }) 자체 재시도로 충분하므로 제거.
Co-authored-by: Jeong Ha Seung <HA-SEUNG-JEONG@users.noreply.github.com>
@storybook/experimental-nextjs-vite 프레임워크가 public/ 디렉토리를 자동으로 static dir에 등록하는데, main.ts에서도 staticDirs: ['../public']로 중복 등록되어 Promise.all 내에서 두 복사 작업이 storybook-static/images/를 동시에 생성하다 EEXIST 에러가 발생함. Co-authored-by: Jeong Ha Seung <HA-SEUNG-JEONG@users.noreply.github.com>
FE 개발 워크플로우 및 CI E2E 인증 정비
Co-authored-by: Dongjoo Yun <dongjooyun@users.noreply.github.com>
…02-0207 fix: 랜딩 카피 문구 GPT → AI 수정
- design-to-dev: Figma 컴포넌트 → src/components + Storybook - dev-start: Figma 페이지 → src/app + API 매핑 + DTO 검증 - staging-verify: 글로벌 스킬 repo 내 복사, 영문 본문으로 재작성 - 룰/커맨드: 두 스킬 본문 참조 자료 git 추적
- 만료 시 process.exit(1) → AUTH_EXPIRED=true + exit 0으로 변경 → 만료 시에도 비인증 스위트가 fallback 실행되도록 보장 - Run E2E 스텝 조건에 AUTH_EXPIRED 게이트 추가 - Playwright 아티팩트 업로드를 security 잡 → e2e 잡으로 이동 → playwright-report/는 e2e 잡 러너에서만 생성됨 - Upload 조건을 if: failure() → if: !cancelled() 로 변경 → 성공/실패 모두 trace 보존
- size별 icon-label gap variant 추가 (xs/s=4px, m/l=6px) - color별 disabled 토큰 분리 + cursor-not-allowed - 자동 아이콘 크기 매핑 (ICON_SIZE_MAP) - text-disabled-strong 토큰 신설 - FigmaFullSpec 스토리 추가 (96 variant 절대좌표 매트릭스) - design-to-dev 워크플로우에 self-approve 금지/Symbol≠Asset 가드 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- RoleBadge 대소문자 불일치 수정 (Builder → BUILDER) - UserAvatar 컴포넌트로 교체 + role badge 분리 - 조회 수 Eye 아이콘 제거 - 날짜 형식 변경 (2025.05.30 → 5월 30일) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
클래스 UX 개선 — 프로필 모달/스켈레톤/QnA
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
로그인/로그아웃 리다이렉트, 역할 뱃지, 피드 마크다운 버그 수정
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- MenuTarget union 타입 제거, 최상위 8 state + 7 mutation hook을 QuestionSection / AnswerItem으로 분산 - useEffect state 리셋 → key prop 대체로 qnaId 변경 시 자동 초기화 - DeleteConfirm 공통 컴포넌트 추출로 중복 패턴 통합 - 질문 ⋮ 메뉴 구현 공백 해소 (canEdit / canDelete / canReport 활용) - qa/[id]/page.tsx: 리액션 아이콘 fill-current 누락 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- figma-design.md: 병렬 일괄 호출 → 단계적 도구 사용 패턴으로 변경, Code Connect 섹션 추가 - figma-pre-code-gate.md: Gate E 조건 명확화 (truncation 시에만 전체 노드 테이블 작성) - figma-verification.md: 신규 추가 — 구현 후 Path A/B 검증 규칙 (브라우저 툴 → 코드 레벨 감사) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… 컴포넌트로 교체 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SVG 아이콘 컴포넌트 중앙화
- LockIcon/LockOpenIcon은 className만 수락하므로 span[role=img aria-label]로 감싸
getByRole('img', { name: '잠금' }) 셀렉터 통과
- study-helpers clickStudyCreateButton: isAuthReady false 상태 클릭 방지를
위해 toBeEnabled 대기 추가, dialog waitForSelector timeout 5s→15s (dynamic
import chunk 로드 여유 확보)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
beforeEach에서 스테이징 실행 시 accessToken expires를 현재 시각 +1시간으로 재설정해 isAuthenticated=false 오류로 인한 테스트 실패 방지. create.spec.ts는 비로그인 UI describe를 건드리지 않도록 @auth 블록 내부에만 적용. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
span[role=img] 마크업이 아직 develop에 미배포된 상태에서 CI가 실패하는 순환 의존 문제를 .or() 폴백으로 해소. 구 코드: 레슨 링크 내 첫 번째 div로 배지 존재 확인 신 코드: span[role=img]가 있으면 우선 매칭, 없으면 폴백 사용 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
analytics 단기 쿠키(ANONCHK 등)가 min expiry를 끌어내려 유효한 세션도 expired로 판정되던 문제 수정. refresh_token(zeroone.it.kr)만 체크해 실제 인증 유효성 판단. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
isVerificationLoading 중 클릭을 무시(silent return)하던 로직을 pendingOpen 패턴으로 대체. 로딩 완료 후 자동으로 개설 모달 오픈. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
본인인증 상태 로딩 중 첫 클릭이 무시되는 staging 타이밍 이슈 대응. expect.toPass로 최대 20s 내 재클릭하여 dialog 등장 보장. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
class E2E 테스트 추가 및 버그 수정
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedToo many files! This PR contains 215 files, which is 65 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (85)
📒 Files selected for processing (215)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
🌱 연관된 이슈
☘️ 작업 내용
🍀 참고사항
🎨 디자인 비교 (UI 컴포넌트 PR에만 작성)
비교 결과
스크린샷 (선택)