Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Chip 컴포넌트 테스트 작성 #88

Merged
merged 45 commits into from
Jul 25, 2024
Merged

Conversation

eugene028
Copy link
Collaborator

@eugene028 eugene028 commented Jul 19, 2024

🎉 변경 사항

  • Chip 컴포넌트에 대한 테스트 코드를 작성했어요.(토글, 랜더링, 외부 컨트롤)
  • 테스트 코드를 작성함에 있어서 Chip 컴포넌트에 접근성 관련된 스펙을 빼먹은 것들이 있어 몇가지 추가했어요!

🙏 여기는 꼭 봐주세요!

@ghdtjgus76
Switch 컴포넌트와 Chip 컴포넌트가 유사한게 굉장히 많아서 코드를 많이 참고했는데요,
확인해보니 testing library의 fireEvent에 대한 사용을 많이 하셨더라구요,
어떤 아티클을 읽어보니까 , fireEvent에서 userEvent로 마이그레이션을 하시길래 그 이유를 찾아보았습니다.

  • fireEvent.click은 단순히 클릭 이벤트만 일으키지만, userEvent.click은 어떤 element에서 발생한 이벤트인지 체크하여, 클릭이벤트가 호출될 때 브라우저에서 발생하는 모든 이벤트들을 함께 발생시켜준다.(DOM Event 형식으로 발생)
  • rtl 공식 홈페이지에서도 이렇게 추천하고 있기도 하구영!
스크린샷 2024-07-19 오후 12 19 12
  • MultiGroup, Switch 코드 수정한 적 없는데 a11y 테스트 자꾸 실패하는 중.. 원인 파악 필요

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

@eugene028
Copy link
Collaborator Author

아마 저번에 스토리북 버전 업하면서 문서화 부분이 바뀐 거 같습니다... 그래서 지금 기존에 작성했던 스토리 파일에서 에러가 발생하는 거 같네요

크악 원인이 그거였군용

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

@eugene028
Copy link
Collaborator Author

eugene028 commented Jul 24, 2024

image 충격사실.. 저는 로컬에서도 같은 에러가 뜹니다. 심지어 Chip 쪽에서도 떠서 혹시 몰라서 아래 발생하는 스토리북 에러를 해결하니까 Chip쪽은 해결된 것 같아용. 다른 에러 뜨는 컴포넌트들도 스토리북에서 에러가 발생하는 문제가 공통적으로 있네요..?! 요 부분 의심되어서 한번 고쳐보시는건 어떨런쥐 (MultiGroup, Switch) @ghdtjgus76 image

호오오 자세히 알려주셔서 감사해요! 스토리북 에러 터지는 곳 문서화도 고쳐두었어용
693c414

Copy link
Contributor

@eugene028
Copy link
Collaborator Author

왜인지는 모르겠다만 오늘 테스트해보니까 로컬에서도 에러 발생하는 거 확인했습니다! 그래서 checkbox, switch는 고쳐뒀는데, chip은 유진님이 한 번 보시고 고치는게 나을 거 같아서 일단 놔뒀습니다...

checkbox, switch 관련해서 에러 나는 부분은 aria-checked를 checked로 변경하니까 해결됐고,

chip은 role을 아래처럼 변경해주면 되는 거 같긴 해요 role={clickable ? "checkbox" : undefined}

fireEvent 관련해서는 곧 userEvent로 마이그레이션해보도록 하겠습니다...!

그리고 jest 테스트 실패는 체크박스, 스위치, 멀티 그룹에서 발생하는데 스위치랑 멀티 그룹은 aria-checked를 checked로 변경한 부분만 반영해두면 돼서 일단 그 부분은 제가 올린 텍스트 필드 PR에 반영해두긴 했습니다 이 PR은 웹 접근성 관련 에러만 처리한 후에 머지하고 제 PR에서 테스트 관련 실패 부분 반영해두면 될 거 같아요

오홍 알겟습니다 확인해보니까 Chip은 jest 테스트 PASS여서 a11y 부분 고쳐두겠습니당

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

Copy link
Contributor

@eugene028
Copy link
Collaborator Author

eugene028 commented Jul 24, 2024

리뷰 남겨주신 여러분께 감사의 말씀을 전하며 리뷰 요청 살포시 드립니다 ... 🥹 @ghdtjgus76 @SeieunYoo @hamo-o
(Chip 관련 테스트 에러는 모두 해결해둔 상황이고, 나머지 Test 고치기는 서현님이 다음 PR에서 이어서 해주시기로 했습니동)
image

Copy link
Member

@hamo-o hamo-o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고많으셨습니다......... 코멘트 수가 보여주는 노력의 흔적 😶‍🌫️

disabled = true,
}: {
label: string;
isChecked: boolean;
ischecked: boolean;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p5; 여기 수정에 맞게 스토리북쪽에서도 변경 부탁드려용

image

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ask;
ischecked 라는 네이밍으로 바꾼 이유가 있으실까요?! 카멜케이스로 유지하는 게 좋을 것 같아서요!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스크린샷 2024-07-25 오후 4 58 32
 return (
      <Component
        ischecked
        aria-checked={clickable ? ischecked : undefined}
        aria-disabled={disabled}
        aria-label={`chip ${ischecked ? "activated" : "inactivated"}`}
        data-selected={ischecked}
...

aria 표준 지키려면 role이 checkbox일때 aria-checked를 쓰기보다는 ischecked라는 값을 컴포넌트에 그대로 전달해주어야 하더라구요~ 🥹 그동안 진행햇던 test에서 warning이 떠서 고냥 고쳐두었어용

Copy link
Collaborator

@SeieunYoo SeieunYoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

엄청난 커밋수,, 수고 많으셨습니동👍🙏

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p5;
사소하지만 다른 스토리북 컴포넌트와의 확장자 tsx로 맞추면 좋을 것 같아요!

disabled = true,
}: {
label: string;
isChecked: boolean;
ischecked: boolean;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ask;
ischecked 라는 네이밍으로 바꾼 이유가 있으실까요?! 카멜케이스로 유지하는 게 좋을 것 같아서요!

Copy link
Contributor

Copy link
Contributor

@eugene028 eugene028 merged commit 4a45ee6 into main Jul 25, 2024
2 of 3 checks passed
@eugene028 eugene028 deleted the feature/chip-test branch July 25, 2024 08:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants