2 min read

Vitest 실행을 10배 빠르게 해주는 설정들

뉴스레터는 좋은 학습 기회가 됩니다.

VitestJest의 대체재로 급부상한 React 테스트 프레임워크입니다. Jest보다 더 빠르고, 더 자주 업데이트하고, 더 다양한 기능을 제공하고, 무엇보다 API가 jest-compatible해서 쉽게 마이그레이션할 수 있어서 그렇습니다. 원래 Vite에서만 쓸 수 있었지만 지금은 어떤 js 프로젝트에서나 쓸 수 있습니다.

저도 Jest에서 Vitest로 넘어가서 쓰기 시작한지 그리 오래되지 않았는데요. 구독중인 뉴스레터 중 하나에서 Vitest 성능을 10배 끌어올린다는 설정값에 대한 이야기를 봤어요.

바이브 코딩 시대가 되어 훨씬 더 많은 테스트를 더 쉽게 만들 수 있게 됐지만, 그럴수록 그 테스트들을 실행하는 시간도 늘어납니다. 이런 건 초기에 일부러 신경쓰지 않으면 쓸데없이 익숙해져버리기도 하니, 이렇게 레터로 읽은 게 좋은 학습 트리거가 됐습니다.

퍼포먼스를 높이는 키워드는 isolate 설정이었어요. https://vitest.dev/guide/improving-performance 에 자세히 나와있었는데요.

Vitest에서는 기본적으로 모든 테스트를 독립된 환경에서 돌립니다. 테스트의 실행 순서가 결과에 영향을 미치지 않게 하는 설정이지만, 대부분의 프로젝트에서는 클린업을 잘 세팅하면 각 테스트는 이미 독립적입니다. 이때는 isolate: false 로 설정하여 테스트 속도를 끌어올릴 수 있습니다.

추가로 pool 옵션을 바꾸고, 병렬 처리도 더 할 수 있습니다. 이걸 다 적용하면 10배까지도 빨라진다고 하네요. 테스트 갯수가 많아질수록 유용해 보입니다.

Jest와 Vitest의 차이에 대해서 더 궁금하신 분은 이 글을 읽어보세요. https://www.speakeasy.com/blog/vitest-vs-jest 여기에도 퍼포먼스 내용이 나와있네요. Vite를 안 쓰는데도 Vitest를 선택했다고 합니다.