E2E Test: Cypress
-
E2E 테스트
단위 테스트와는 달리 어떤 로직을 검증하는 것이 아닌, 실제 화면이 원하는 시나리오대로 정상적으로 동작하는지 확인하는 용도의 테스트이다.
-
Cypress 설치
JavaScript Web Testing and Component Testing Framework: cypress.io
npm i cypress eslint-plugin-cypress
cypress가 eslint에서 문법 에러가 발생하지 않도록 eslint plugin도 설치해준다.
-
package.json
"scripts": { "test:e2e": "cypress open" }
-
.eslintrc.js
env: { ... 'cypress/globals': true }, plugin: [ 'cypress' ]
-
-
Cypress API
-
Headless
cypress의 프로그램이나 브라우저가 열리지 않는 터미널에서만 동작하도록 설정
"scripts": { "test:e2e": "cypress open", "test:e2e:headless" : "cypress run" }
터미널에서만 테스트가 진행되면, 테스트가 동작하는 화면을 동영상으로 얻을 수 있다. 해당 테스트를 실행하면 videos 폴더가 생성되면서 테스트가 동작한 동영상이 생기게 된다.
버전 관리를 할때 비디오를 깃허브에 같이 올리는 것은 그닥 좋은 방법이 아니다. 따라서, cypress의 videos 파일은 버전관리를 하지 않는다.
cypress/videos
-
E2E 테스트와 단위 테스트 충돌 방지
jest.config.js 파일에 해당 내용을 추가한다.
단위 테스트 부분에서 cypress 폴더안에 있는 테스트 파일들을 사용하지 않도록 만들어준다.
modulePathIgnorePatterns: [ ..., '<rootDir>/cypress' ]