테스트는 크게 세 가지(Unit test, Integration test, E2E test)로 나눌 수 있다.
작은 기능적인 단위 하나를 테스트해보는 테스트이다.
util 함수에 특정 값을 넣었을 때 원하는 값이 나오는지 확인해보거나 컴포넌트를 렌더링 했을 때 특정 ui나 텍스트가 보이는지 등을 확인하는 데에 사용할 수 있다.
애플리케이션의 구성요소끼리 의도대로 상호작용할 수 있는지 확인해보는 테스트이다.
msw
를 사용하여 api의 결과를 받아와 화면에 잘 렌더링되는지를 확인하는 등의 용도로 사용할 수 있다.
end-to-end의 준말로, 애플리케이션의 말단을 확인하는 테스트이다.
프론트엔드에서 E2E test는 브라우저에서의 동작을 확인하는 것에 집중되어 있다.
타 UI 라이브러리 레포를 살펴보면 종종 E2E 테스트 폴더를 발견할 수 있다.
UI 라이브러리에 E2E test가 필요한 이유가 뭘까?
크로스 브라우징 이슈
라이브러리를 사용하는 사용자들은 다양한 브라우저 환경을 사용한다. 이 모든 브라우저 환경에서 원하던 대로 렌더링되는지를 테스트하지 않으면 브라우저 차이로 인해 크로스 브라우징 이슈를 마주할 수 있다.
웹 접근성
E2E 테스트 도구들에서는 웹 접근성을 잘 지키고 있는지 체크해주는 기능이 존재하고, 개발자가 직접 키보드 입력에 대한 웹 접근성이 지켜지는 지 등을 테스트해볼 수도 있다.
이러한 이유로 진행중인 디자인 시스템 프로젝트에도 E2E 테스트를 적용하기로 결정하였다.
E2E 테스트 도구 중에서는 Playwright
와 Cypress
가 가장 대표적이다.
링크를 참고하여 둘을 비교해본 결과, Playwright가
Playwright는 다음 명령어를 통해 설치할 수 있다.
pnpm create playwright
Playwright를 설치하면 다음과 같은 화면이 뜬다.
npx playwright test
위 명령어를 입력해보니 간단한 형태의 테스트 성공/실패 여부를 알려주는 화면과 report를 확인할 수 있는 방법이 나타났다.
report는 다음과 같이 확인해볼 수 있었다.
테스트를 UI를 통해 직접 보면서 실행해볼 수도 있다.
pnpm exec playwright test --ui
위 명령어를 실행하면 다음과 같은 화면이 뜬다.
Playwright VSCode extension을 사용해볼 수도 있다.
extension을 설치하고 실행하면
원하는 브라우저를 선택하여 실행해볼 수 있다.
스토리북 addon 중 playwright의 기능을 사용할 수 있는 addon들이 있다.
storybook-addon-playwright
: 스토리북에서 바로 playwright를 실행할 수 있는 addon이다.
storybook-addon-a11y
: 웹 접근성에 대한 검사를 수행하여 위반 사항 등을 알려주는 addon이다.
위 addon들을 사용하면 스토리북에서 바로 playwright를 실행할 수 있어 편하겠지만
위 상황들을 우려하여 playwright 자체로 사용하기로 결정했다.