인프런 커뮤니티 질문&답변

전상원님의 프로필 이미지

작성한 질문수

실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트

5.3. 서버 요청 가로채기

5.2 테스트에서 상품 이름 사용, 로그인 세션 질문

해결된 질문

24.06.27 15:28 작성

·

99

0

Q1. 장바구니, 구매 버튼 클릭 시 해당 상품의 이름을 cy.findByText('Handmade Cotton Fish 장바구니 추가 완료!').should('exist) 상품 이름을 직접 입력하는데, (통합 테스트에서 모킹 데이터를 사용한다면 모킹 데이터는 직접 설정하기 때문에 가능하지만), 실제 api를 사용하면 첫번째 상품 데이터가 변경할 수도 있기 때문에 실패할 수도 있기 때문에 다르게 작성해야 하지 않을까요?? 질문 드립니다

 

Q2. 로그인을 커스텀 커맨드에서 설정해서 session을 사용해 설정해서 테스트할 때, 웹에서는 로그인 성공/실패 여부는 확인할 수 없는 것 아닌가요??

로그인이 실패하게 되면 로그인 관련 테스트는 모두 실패하게 되는데 그냥 이 결과로 로그인 성공/실패 확인을 하는 건가요??

답변 1

0

코드 조커, 오프님의 프로필 이미지
코드 조커, 오프
지식공유자

2024. 06. 27. 16:28

Q1. 장바구니, 구매 버튼 클릭 시 해당 상품의 이름을 cy.findByText('Handmade Cotton Fish 장바구니 추가 완료!').should('exist) 상품 이름을 직접 입력하는데, (통합 테스트에서 모킹 데이터를 사용한다면 모킹 데이터는 직접 설정하기 때문에 가능하지만), 실제 api를 사용하면 첫번째 상품 데이터가 변경할 수도 있기 때문에 실패할 수도 있기 때문에 다르게 작성해야 하지 않을까요?? 질문 드립니다

넵. 이해하신 그대로입니다. 실제 데이터가 변경될 경우 해당 테스트를 검증하는 다른 방법을 사용해야 합니다.

적절하게 렌더링 되었는지 검증을 할 때 컨텐츠의 내용을 검증하기 어렵다면, 서버에서 내려온 데이터를 제대로 렌더링하고 있는지 정도. 존재 여부를 검증하는 정도라면 괜찮을 것 같아 보입니다.

Q2. 로그인을 커스텀 커맨드에서 설정해서 session을 사용해 설정해서 테스트할 때, 웹에서는 로그인 성공/실패 여부는 확인할 수 없는 것 아닌가요??

로그인이 실패하게 되면 로그인 관련 테스트는 모두 실패하게 되는데 그냥 이 결과로 로그인 성공/실패 확인을 하는 건가요??

로그인에 대한 검증 부분은 Login.cy.js에서 검증하고 있습니다.

로그인이 완료된 후에 테스트를 진행하는 부분은 이미 로그인이 정상적으로 되었다는 가정하에 작성된 테스트입니다.

실서비스를 대상으로 주기적으로 E2E 테스트를 진행하는 전략을 사용하고 있었다면, 로그인이 정상적으로 되었을 때 진행하는 테스트가 실패 했을 때 로그인이 제대로 진행되지 않았구나 라는 것을 검증할 수는 있을 것 같습니다. 다만, 해당 부분을 검증하는 명확한 테스트 케이스가 이미 Login.cy.js에 있기 때문에 완벽하게 부합하는 테스트 내용은 아닙니다.

전상원님의 프로필 이미지
전상원
질문자

2024. 06. 28. 14:52

답변 감사합니다