pile·
프론트엔드·그린데이터그린데이터·

E2E Test를 Cypress로 해보자.

React 프로젝트에 Cypress 를 붙여 E2E 테스트를 처음 작성해 보는 입문 글이다. Cypress 의 특징을 짚은 뒤 CRA 프로젝트에 설치하고, 카운터 컴포넌트를 대상으로 `data-cy` 선택자를 붙여 클릭 전후 값을 검증하는 테스트를 만든다.

핵심 포인트
  • Cypress 는 브라우저에서 실행되는 것을 대상으로 단위·통합·E2E 테스트를 모두 수행할 수 있다.
  • 애플리케이션과 같은 실행 루프에서 돌기 때문에 실제 사용 환경에 가깝고, Selenium 에서 못 쓰는 브라우저 API 도 쓸 수 있다.
  • 요소 선택은 CSS 태그나 class 대신 Cypress 가 권장하는 전용 선택자를 쓴다. `data-cy` 가 가장 우선순위가 높다.
  • 실행은 `cypress open` 이지만 package.json 스크립트에 등록해 `yarn cypress:open` 으로 쓰는 편이 낫다.
  • 설치하면 예제 코드가 딸린 cypress 폴더가 만들어지며, 저자는 이를 지우고 직접 만든 카운터 컴포넌트를 대상으로 삼았다.
상세 정리
  • 도구 성격: 오픈소스이며 테스트 실행을 추적하는 대시보드가 붙은 유료 버전도 있다.
  • 작성 언어: JavaScript 로 만들어졌고 Cypress 메서드로 실행되므로 JavaScript 를 몰라도 사용에 큰 문제가 없다고 소개한다.
  • 테스트 프레임워크로 Mocha 와 Chai 를 쓴다.
  • 개발 편의: 실시간 리로딩을 제공하고 실행 속도가 빠르며, 에러가 나면 스택 추적으로 디버깅하기 수월하다.
  • 준비: CRA 로 React 프로젝트를 만들고 Cypress 를 설치한다. lint 설정은 전용 plugin 을 설치해 처리하면 된다.
  • 선택자 준비: 테스트할 요소에 `data-cy` 를 붙인다. 예제에서는 카운트 값 표시 영역에 `countvalue`, 증가 버튼에 `increase` 를 지정한다.
  • 테스트 구조: `describe("카운터 test", ...)` 안에 `it("홈페이지 방문", ...)` 을 두는 Mocha 스타일이다.
  • 검증 흐름: 버튼 클릭 전 `countvalue` 의 텍스트가 0 인지 확인하고, `increase` 요소를 변수에 담아 클릭한 뒤 텍스트가 1 이 되는지 확인한다.
  • 실행하면 Cypress 러너 화면에서 각 단계의 실행 결과를 눈으로 따라갈 수 있다.
왜 읽나Cypress 를 아직 안 써 본 프론트엔드 개발자에게 설치부터 첫 테스트 통과까지의 최소 경로와 선택자 규칙을 알려준다.
그린데이터
그린데이터 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 프론트엔드·여기어때 (GC컴퍼니)여기어때 (GC컴퍼니)·

    항공 프론트엔드 구축기 (7/10): 창구를 하나만 두었습니다

    여기어때 항공 서비스 프론트엔드가 웹과 앱 웹뷰 두 환경에서 동일한 함수 호출로 동작하는 앱 브릿지 추상화 레이어를 설계한 과정을 다룬다. iOS·안드로이드 규약 차이와 "웹에 존재하지 않는 브릿지를 어떻게 호출하나"라는 문제를 단일 추상화 층으로 해결한 구현 사례다.

    요약 이어보기
    #react#typescript#webview+2