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

test: 모든 리뷰 페이지 e2e 테스트코드 작성 #219

Merged
merged 1 commit into from
Oct 18, 2024

Conversation

yunchaeney
Copy link
Contributor

@yunchaeney yunchaeney commented Oct 18, 2024

✏️ 작업 내용

페이지 로드 시 정보 확인

  • <h2>모든 리뷰</h2> 가 존재하는지 확인
  • Score 데이터가 3.7인지 확인 (모킹된 데이터)
  • 최초 리뷰 데이터가 10개인지 확인 (서버사이드로 렌더링 된 데이터)

tab, chip 클릭 시 Score 데이터 변경 확인 (모킹된 데이터)

  • [워케이션] 탭 클릭 시 score가 5 인지 확인
  • [달램핏] 탭 클릭 시 score가 3.7 인지 확인
  • [오피스 스트레칭] 칩 클릭 시 score가 3.5 인지 확인
  • [마인드풀니스] 칩 클릭 시 score가 5 인지 확인

지역 필터링 확인 (목데이터는 전부 건대입구 이기 때문에, 건대입구 필터링 시 10개, 다른 아이템은 0개가 되어야 함)

  • [지역] 필터링 클릭 후 [건대입구] 선택 시, 리뷰 데이터가 10개인지 확인
  • [지역] 필터링 클릭 후 [신림] 선택 시, 리뷰 데이터가 0개인지 확인

무한스크롤 테스트

  • 최초 리뷰 데이터가 10개인지 확인 (서버사이드로 렌더링 된 데이터)
  • 스크롤을 가장 아래로 내린 후 (hasMoreRef 를 찾음) 20번째 리뷰 데이터가 나타날 때까지 기다림
  • 총 리뷰 데이터가 20개인지 확인

리뷰 아이템 클릭 시

  • 첫번째 아이템 클릭 시 (목데이터 상 id가 1) 상세페이지로 이동하는지 확인 (url 확인)

📷 스크린샷

✍️ 사용법

꿀팁 ! Codegen 사용하기

2개의 터미널을 열어 각각 npx playwright codegen , npm run dev:test 를 실행합니다.
(dev:test 스크립트로 msw 환경을 실행, codegen 브라우저로 이를 확인)

image

playwright 로 테스트 작성 시 locator(선택자) 가 명확한 것이 중요합니다.
codegen을 통하여 원하는 요소의 선택자를 찾아내거나, 내가 쓴 선택자가 원하는대로 요소를 바라보는지 검증할 수 있습니다.

🎸 기타

playwright 에서 어떤 expect 시에 사용되는 메소드 (Assertions) 는 자동으로 재시도 하는 것과 재시도를 하지 않는 것이 있습니다.
자동으로 재시도 하는 Assertions은 테스트가 통과하거나, 타임아웃 될 때까지 계속해서 재시도하며, 비동기적이므로 await 을 사용합니다. Assertions의 종류는 공식문서 를 참고하세요.

close #181

@yunchaeney yunchaeney added the 🧪 Test 테스트 label Oct 18, 2024
@yunchaeney yunchaeney self-assigned this Oct 18, 2024
@@ -4,6 +4,8 @@ export async function register() {
process.env.NEXT_RUNTIME === 'nodejs'
) {
const { server } = await import('./msw/server');
server.listen();
server.listen({
onUnhandledRequest: 'bypass',
Copy link
Contributor Author

Choose a reason for hiding this comment

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

msw 서버 실행 시, 모킹하지 않은 request에 대한 경고 콘솔을 출력하지 않도록 설정

Copy link
Contributor

@BeMatthewsong BeMatthewsong left a comment

Choose a reason for hiding this comment

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

아직 문법을 잘 몰라서 익숙하지 않은데 잘 참고해보도록 하겠습니다!

Comment on lines +4 to +6
await page.goto('/reviews', { waitUntil: 'networkidle' });

test.slow();
Copy link
Contributor

Choose a reason for hiding this comment

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

오 신기하네요!

Copy link
Contributor

@hakyoung12 hakyoung12 left a comment

Choose a reason for hiding this comment

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

참고 많이 하겠습니다! LGTM!

Copy link
Contributor

@HMRyu HMRyu left a comment

Choose a reason for hiding this comment

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

뭔가 예전 수업시간에 배웠던 cypress 문법하고 비슷한 것 같네요...!

세팅부터 첫 테스트코드 작성까지 너무 고생하셨습니다..!

👍👍

@yunchaeney yunchaeney merged commit d5c8367 into develop Oct 18, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🧪 Test 테스트
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Test: /reviews 페이지 테스트
4 participants