Cypress 오류 해결하기
1. cy.click() 실패
CypressError: Timed out retrying after 4050ms: `cy.click()` failed because this element:
`<img alt="카카오로그인" loading="lazy" width="22" height="22" decoding="async" data-nimg="1" src="/assets/icon/kakao-talk-icon.svg" style="color: transparent;">`
has CSS `pointer-events: none`
원인
cypress 에서 click 테스트를 작성하였으나 대상 요소가 CSS 스타일 pointer-events: none을 가지고 있어 클릭 이벤트가 발생하지 않을 때 발생한다.
해결
1. force: true 옵션 사용:
cy.get('img[alt="카카오로그인"]').click({ force: true });
force: true 옵션은 Cypress가 요소의 상호작용 가능 여부와 상관없이 클릭하도록 강제한다.
- 클릭 가능한 상위 요소를 찾기:
cy.get('.styles_kakao-login-button__LfODP').click();
요소가 클릭 가능한 상위 요소 안에 포함되어 있을 수 있으므로 상위 요소를 클릭한다.
2. cy.contains() 사용
cy.contains('button', '카카오 계정으로 계속하기').click();
특징:
- 텍스트 기반 선택: 요소의 클래스나 속성을 모르더라도 특정 텍스트로 요소를 선택할 수 있다.
- 가독성 향상: 코드가 더 직관적으로 읽히며, 유지보수가 쉬워진다.
- 정확성: 해당 텍스트를 가진 특정 태그(button, div 등)를 선택 가능하다.
사용 상황:
- 버튼이나 링크에 고유한 텍스트가 있는 경우.
- 클래스나 속성 이름이 동적으로 바뀌는 경우.
이 방식은 특히 다국어 지원처럼 텍스트가 고유한 상황에서 좋음
'error' 카테고리의 다른 글
[NestJS] .env 경로 설정 (0) | 2024.09.29 |
---|---|
[JPA] @Query 어노테이션 사용시 주의점 정리 (0) | 2024.08.04 |
[SQL] Incorrect string value, Data too long for column (0) | 2024.07.30 |
[Redis] Unable to connect to Redis : 로컬에 Redis init 시 config 파일 가져오기 (0) | 2024.07.28 |
Unsupported Java. Your build is currently configured to use Java 22.0.1 and Gradle 8.7. (0) | 2024.07.09 |