E2E는 End to End 의 약자로 어플리케이션의 흐름을 처음부터 끝까지 테스트하는 것을 의미한다. API 연동도 테스트 항목에 포함되므로 일반적으로 목(Mock) 서버를 사용하지 않으며 최대한 실제 시스템을 사용하는 사용자 관점에서 시뮬레이션 한다.
참고
Vue > 테스트에서는 왜 테스트를 해야하고, 어떤 테스트 유형이 있는지 자세히 작성되어 있다.
테스트를 위한 툴로는 Cypress, Nightwatch, Playwright, Puppeteer, Selenium 등이 있다. npm trends에 따르면 2023년 10월 기준으로 1년간 cypress가 가장 많이 다운로드 됐다.
일반적으로 Nightwatch와 Cypress를 가장 많이 사용한다.
공식 Vue 팀이 추천하는 E2E Test뿐만 아니라 컴포넌트 테스트도 지원하는 Cypress 를 적용해보자. (Chronium 브라우저와 Firefox만 지원
)
npm install -D cypress
npm install -D eslint-plugin-cypress
.eslintrc.js
extends: ['plugin:cypress/recommended']
package.json
"scripts": {
"test": "cypress open",
},
cypress 실행 시 아래와 같은 화면에서 continue 후 chrome 으로 실행
npm test
cypress 관련 폴더 생성 및 cypress UI
cypress를 사용하며 테스트 코드를 모두 작성할 수 있지만 cypress studio를 이용해 손쉽게 테스트 코드를 작성할 수 있다.
experimentalStudio
라는 옵션이 있다. 현재는 disabled 상태로 활성화시켜보자.experimentalStudio: true
를 cypress.config.js에 추가하면 cypress 창이 새로 열리게된다. 이후 Project settings를 보면 활성화 상태인 것을 확인할 수 있다.
코드가 알아서 생성된다.
Cypress를 사용 시 CI/CD Tools 에서 자동으로 테스트할 수 있다. 현재 회사에서 사용하고 있는 Teamcity에서 script 내부에 cypress test 실행하는 코드를 작성한 다음 build 하게 되면 자동으로 테스트 가능하다. 이 때, cypress version이 특정돼있는 docker 선택해야한다.
npm install cypress
npm run test