// shopping-mall-e2e-test-with-answer
cy.findAllByTestId('product-card').each($el => {
cy.wrap($el).findByText('Shoes').should('exist');
});
// 제 답변
cy.findAllByTestId('product-card').should('includes.text', 'Shoes');
필터 기능을 공식문서를 참고해서 직접 작성해보다가 궁금한 점이 생겼습니다.
Github에 있는 답변처럼 반복문을 돌려 Shoes가 존재하는 지 검증하는 테스트와 제가 작성한 includes.text를 활용하는 방법 사이에 큰 차이점이 있을까요?
어떤게 더 효율적인 테스트 작성방법인지 문의드립니다!
안녕하세요 wanderlust님!
우선 답변 드리겠습니다. 추후에 질문 있으시다면 고민있어요 게시판 대신 질문으로 남겨주시면 감사하겠습니다 ㅎㅎ 다른 분들도 함께 보시면 좋을 것 같아서요.
추가로 cypress문서를 조금 찾아봤는데요!
includes, include, contain, contains 모두 동일하게 동작하며 배열 중 하나만 포함되어 있어도 참을 반환합니다. (alias 였다는 것은 처음 알았네요 ㅎㅎ)
테스트에서는 모든 카드가 shoes 태그를 갖고 있는지를 검증하고 싶었던 부분이었고, 순회를 하면서 확인한다면 모든 product card가 shoes를 포함하는지 일일히 확인하게 됩니다. 하지만, 작성해주신대로 검증한다면 여러 카드 중 하나만 shoes를 포함하면 된다는 내용이기 때문에 다른 검증이 됩니다.
다른 예시로 radio 버튼 클릭 없이 실행해도 테스트가 통과될 것이며, shoes가 포함된 아이템 뿐만 아니라 다른 아이템이 포함된 상태에서 쿼리를 한 뒤 테스트를 구동해도 통과될 것입니다.
추가로 질문 있으시면 편하게 답변 주시면 감사하겠습니다~
답글