Conversation
App.tsx의 단일 파일 구조를 관심사별로 분리하여 유지보수성과 재사용성을 향상시킴 주요 변경사항: - EventBox: 캘린더 뷰의 이벤트 표시 공통 컴포넌트 생성 - EventForm: 일정 입력 폼 컴포넌트 분리 (왼쪽 패널) - CalendarView: 주간/월간 캘린더 뷰 컴포넌트 분리 (중앙 패널) - EventList: 이벤트 리스트 및 검색 컴포넌트 분리 (오른쪽 패널) - OverlapDialog: 일정 겹침 경고 다이얼로그 컴포넌트 분리 - NotificationStack: 알림 스택 컴포넌트 분리 기술적 개선: - MUI 아이콘 import 방식을 개별 경로로 변경하여 트리 쉐이킹 최적화 - EventForm 타입과 컴포넌트명 충돌 해결 (타입만 import) - 모든 테스트 케이스 호환성 유지 (data-testid, aria-label 보존)
CalendarView에서 EventBox를 드래그앤드롭으로 날짜 수정하는 기능의 명세서 작성 주요 내용: - 반복 일정 처리 방법 정의 - 드래그 완료 후 저장 방식 정의 - 날짜 이동 범위 제한 정의 - 시간 정보 유지 방식 정의 - 겹침 감지 처리 방법 정의 - 드래그 가능 뷰 정의 (주간/월간) - 시각적 피드백 정의
명세서 기반 테스트 전략 및 테스트 케이스 설계 주요 내용: - 통합 테스트 전략 정의 - 주간/월간 뷰 드래그앤드롭 테스트 케이스 (각 5개) - 반복 일정 드래그앤드롭 테스트 케이스 (4개) - 겹침 감지 및 처리 테스트 케이스 (4개) - 시각적 피드백 테스트 케이스 (1개) - 제약사항 테스트 케이스 (1개) - 테스트 파일 구조 및 우선순위 정의
테스트 설계 기반 실제 테스트 파일 생성 (RED 상태) 주요 내용: - App 컴포넌트 레벨 통합 테스트 작성 - @hello-pangea/dnd 드래그 시뮬레이션 헬퍼 함수 구현 - 주간 뷰 드래그앤드롭 테스트 5개 - 월간 뷰 드래그앤드롭 테스트 5개 - 반복 일정 드래그앤드롭 테스트 4개 - 겹침 감지 및 처리 테스트 4개 - 시각적 피드백 테스트 1개 - 제약사항 테스트 1개 기존 테스트 패턴 준수 (medium.integration.spec.tsx)
- 드래그앤드롭으로 이벤트 날짜 수정 기능 구현 - @hello-pangea/dnd 라이브러리 사용 - 주간/월간 뷰에서 드래그앤드롭 지원 - 반복 일정 처리 및 겹침 감지 기능 포함 - 같은 날짜로 드롭 시 업데이트하지 않도록 개선 - 드래그앤드롭은 항상 수정(업데이트)으로 처리 - 달력 날짜 클릭 시 폼 날짜 자동 설정 기능 추가 - 주간/월간 뷰 날짜 셀 클릭 시 해당 날짜가 폼에 자동 입력 - 호버 효과 추가로 클릭 가능 표시
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
과제 3
필수 스펙
기본 과제
필수 스펙 개발과 E2E, 시각적 회귀 테스트를 모두 작성해주세요.
기본과제 제출
심화 과제
테스트 전략 작성해보기의 내용을 참고해서 지금까지 작성했던 프로젝트에 대해 테스트 전략을 구상해보세요.
심화 과제 제출
과제 셀프회고
이번 주차 과제는 하나의 테스트 케이스도 완성하지 못한 채로 제출하게 되어
부끄러운 마음에 PR을 남기고 싶지 않기도 했지만,
오프라인으로 발제에 참여하면서 팀원들과 나눴던 과제 리뷰에서 이야기했던 내용이라도 적어보았습니다.
1, 2주차 때는 발제 내용을 파악하는데 시간을 많이 쏟아 이번 주차는 무조건 첫날부터 코드를 작성한다는 마음으로 시작했는데
.claude 폴더에 있는 오프 코치님의 agent 파일을 활용해보고 싶어서 냅다 일을 시켰다.
팀원들과의 스크럼에서 추가 기능 개발 이전에 리팩터링을 하는게 좋을 것 같다는 의견을 듣고
우선 리팩터링부터 진행하게 한 뒤 확인해보았을 때 문제 없이 동작하길래 바로 다음으로 넘어갔다.
오프 코치님이 QnA에서 이번 과제에 사용하셨다는 DnD 라이브러리를 사용해보면 좋겠다는 생각으로
"캘린더 일정을 마우스로 끌어 다른 날짜나 시간으로 옮기는 기능을 TDD 사이클로 개발해줘
라이브러리는 https://github.com/hello-pangea/dnd 사용해줘"라고 하니
기능 명세 작성, 테스트 설계 작성까지는 잘 해줬지만 테스트를 통합 테스트로 작성하고 확인하고 있어
GREEN 단계에서 도무지 넘어가질 못했는데 DnD에는 통합테스트가 적합하지 않다는 걸 수요일에서야 알게 됐다.
그래서 테스트 코드를 걷어내고 구현된 기능을 테스트 + 디버깅 한 후
날짜 클릭 기능도 개발하게 시키고 검증을 완료한 후 목요일에서야 E2E 테스트를 작성해보게 되었는데,
기본 일정 관리 워크플로우 전반을 검증하는 과정에서도 테스트 별로 목업 데이터를 따로 관리할 수 있다는 생각을 못해서
테스트 수정과 삭제 로직을 검증하는 과정에서 현재 월의 첫번째 이벤트가 반복 일정으로 되어있어
수정/삭제 시 해당 일정만 변경하는 것인지에 대한 alert이 발생한 채로 완료 메세지를 기다리다 timeout이 뜨고 있었다.
알고보니 팀원 분들이 E2E 테스트를 직렬로 실행할 수 있는 config 설정을 공유해주셨는데 이런 부분들을 깨닫기 전에
이미 늦었다 + 자고 싶다는 마음에 포기해버렸다. 이번 주차는 지난 과제들을 제대로 하지 못했으니 '나는 잘 모른다 +
이번 주차도 잘 하지 못할 것이다'라는 생각에 가로막혔던 것 같다.
다음 과제는 처음 시작할 때 해야할 내용을 명확하게 파악하고, 내가 할 수 있는 단위로 쪼개어 차근차근 접근해야겠다.