- 발행일
Next 14에서 15로 올리던 날 jest를 지웠다 — 테스트 강의를 정리하던 그 주에
Next 14에서 15로 올리던 날 jest를 지웠다
이 글은 2026년 9월에 당시 커밋 이력을 다시 보며 정리한 것입니다. 날짜는 작업한 날 기준입니다.
2025년 1월 9일 커밋 84c0bd8의 제목은 "마이페이지 구축 , next 버젼 업데이트"입니다. 파일 여섯 개, 129줄 추가, 1,849줄 삭제. 삭제의 대부분은 yarn.lock이고, package.json diff는 이렇습니다.
"typecheck": "tsc --noEmit -p ./tsconfig.json",
- "test": "jest"
+ "typecheck": "tsc --noEmit -p ./tsconfig.json"
},
"dependencies": {
@@
- "jest": "^29.7.0",
"js-cookie": "^3.0.5",
- "next": "14.2.21",
+ "next": "15.1.4",
Next를 메이저 올리면서 jest를 빼고 test 스크립트를 지웠습니다. 커밋 제목에는 그 말이 없어요.
지운 게 뭐였나
jest는 2024년 6월 27일 첫 레이아웃 커밋(7186614) 때부터 dependencies에 있었습니다. devDependencies가 아니라요. 그리고 이 커밋 직전 시점의 저장소에서 .test. 또는 .spec.이 붙은 파일을 세면 0개입니다. jest.config도 없었어요.
그러니까 지운 건 "테스트"가 아니라 "한 번도 돌린 적 없는 러너"입니다. 설치돼 있었을 뿐 돌릴 대상이 없었으니 yarn test를 쳤다면 "No tests found"가 나왔을 거예요. 쳐 본 기록도 없습니다.
왜 이날 뺐는지도 커밋에 없습니다. 지금 추측하면, 15로 올리며 의존성 충돌이 났을 때 안 쓰는 걸 먼저 걷어낸 것 같습니다. yarn.lock이 1,793줄 바뀐 걸 보면 lock 파일을 거의 다시 만든 상태였어요. 하지만 추측입니다.
같은 커밋에 실린 나머지
| 파일 | 무엇 |
|---|---|
tsconfig.json | "target": "ES2017" 추가, 배열 표기를 여러 줄로 — Next 15가 손댄 형태 |
src/apis/MyPage/myPageApi.ts | 84줄 삭제 |
src/app/MyPage/MyScheduleList/page.tsx | 72줄 삭제 |
src/app/MyPage/page.tsx | "내 일정 목록" 메뉴 항목 삭제 |
제목은 "마이페이지 구축"인데 마이페이지 파일은 지우기만 했습니다. 만들던 걸 접은 건지, 다른 브랜치로 옮긴 건지는 이 커밋만으로는 모르겠어요. 12일 뒤 1월 21일에 "마이페이지"(a61256d) 커밋이 다시 있습니다.
그 주에 하고 있던 것
이 블로그에는 프런트엔드 테스트 강의 정리 1부2025-01-13실무에 바로 적용하는 프런트엔드 테스트 1부 — 강의 정리와 실무 결산Vitest와 Testing Library로 단위 테스트부터 통합 테스트까지 다루는 강의를 들으며 정리한 내용을, 챕터 나열 대신 주제별 핵심으로 압축했습니다. 뒤이어 이 중 어떤 개념이 실제 프로젝트(Jest 테스트 복구, Playwright QA 스윕)에서 살아남았고 어떤 개념은 유지되지 못했는지 정직하게 결산했습니다. 강의 예제 자체에서 발견한 낡은 API와 깨지기 쉬운 코드도 함께 짚었습니다.가 1월 13일, 2부2025-01-17실무에 바로 적용하는 프런트엔드 테스트 2부 — 강의 정리와 실무 결산TDD, 스냅샷 테스트, 스토리북 기반 시각적 회귀 테스트, Cypress E2E, 테스트 더블까지 2부에서 다룬 내용을 주제별로 압축했습니다. 그리고 1년 반이 지난 지금, 이 중 실제로 실무와 사이드 프로젝트에 남은 것은 무엇이고 끝내 쓰지 못한 것은 무엇인지 정직하게 결산했습니다.가 1월 17일 날짜로 있습니다. Vitest와 Testing Library, TDD, 스냅샷, Cypress를 정리한 글이에요. 그 강의를 듣고 정리하던 주의 목요일에 제 프로젝트에서는 테스트 러너를 지웠습니다.
두 일이 모순은 아닙니다. 돌지 않는 jest를 두는 것과 테스트를 배우는 건 다른 일이니까요. 하지만 배운 걸 적용할 자리를 그 주에 스스로 없앤 건 맞습니다. 강의 정리 글의 "실무 결산" 절에는 이 사실이 없어요. 그때는 연결해서 생각하지 못했습니다.
다시 들어온 날
jest는 2025년 5월 31일(6e300e7)에 돌아옵니다. 이번에는 ts-jest·@types/jest·msw와 함께, 스크립트도 test·test:watch·test:coverage 셋으로요. 그리고 그 설정이 실제로는 돌지 않았다는 걸 2026년 7월에 알게 됩니다. moduleNameMapper 순서와 tsconfig의 jsx: preserve 때문이었는데, 그 이야기는 2년 묵은 사이드 프로젝트 되살리기2026-07-212년 묵은 사이드 프로젝트 되살리기 — lockfile 두 개, 죽은 Jest, 타입 충돌yarn 프로젝트에 package-lock.json이 남아 있어 dependabot 보안 경보가 두 배로 잡히고 있었습니다. Jest는 moduleNameMapper 순서와 tsconfig 때문에 애초에 못 돌고 있었고, Cypress의 chai 타입이 jest-dom 매처 타입을 덮고 있었어요. Next 14→15 메이저 업그레이드까지 한 번에 처리한 기록입니다.에 있습니다. 지금 브랜치의 테스트 파일은 1개입니다.
검증
jest의 추가·삭제·재추가 커밋은git log -S '"jest"' -- package.json으로 확인했습니다. 2024-06-27 추가, 2025-01-09 삭제, 2025-05-31 재추가.- 삭제 직전 테스트 파일 수는
git ls-tree -r 84c0bd8^에서.test.·.spec.패턴으로 세어 0개. yarn.lock변경 1,793줄은git show --stat의 수치입니다.- 당시
yarn test를 실제로 실행했는지는 확인할 방법이 없습니다.
남은 것 · 한계
- 메이저 업그레이드와 의존성 정리와 화면 삭제를 한 커밋에 넣었습니다. 제목은 셋 중 하나만 말하고, jest 삭제는 제목에 없어요. 반년 뒤 지금 회사에서도 파일 33개짜리 커밋에 개명과 신설을 같이 넣었으니, 이때 배운 건 아니었습니다.
- jest가
dependencies에 있었던 것도 이날 고치지 않고 통째로 뺐습니다. 5월에 돌아올 때는devDependencies로 들어옵니다. - 테스트 파일이 0개인 상태로 7개월을 갔다는 건 이 커밋의 문제가 아니라 프로젝트의 문제입니다. 2인 팀에서 화면을 먼저 내는 게 우선이었고, 그 선택을 후회하지는 않지만 그 사실은 적어 둡니다.
관련 글: 실무에 바로 적용하는 프런트엔드 테스트 1부2025-01-13실무에 바로 적용하는 프런트엔드 테스트 1부 — 강의 정리와 실무 결산Vitest와 Testing Library로 단위 테스트부터 통합 테스트까지 다루는 강의를 들으며 정리한 내용을, 챕터 나열 대신 주제별 핵심으로 압축했습니다. 뒤이어 이 중 어떤 개념이 실제 프로젝트(Jest 테스트 복구, Playwright QA 스윕)에서 살아남았고 어떤 개념은 유지되지 못했는지 정직하게 결산했습니다. 강의 예제 자체에서 발견한 낡은 API와 깨지기 쉬운 코드도 함께 짚었습니다. · 실무에 바로 적용하는 프런트엔드 테스트 2부2025-01-17실무에 바로 적용하는 프런트엔드 테스트 2부 — 강의 정리와 실무 결산TDD, 스냅샷 테스트, 스토리북 기반 시각적 회귀 테스트, Cypress E2E, 테스트 더블까지 2부에서 다룬 내용을 주제별로 압축했습니다. 그리고 1년 반이 지난 지금, 이 중 실제로 실무와 사이드 프로젝트에 남은 것은 무엇이고 끝내 쓰지 못한 것은 무엇인지 정직하게 결산했습니다. · 2년 묵은 사이드 프로젝트 되살리기 — lockfile 두 개, 죽은 Jest, 타입 충돌2026-07-212년 묵은 사이드 프로젝트 되살리기 — lockfile 두 개, 죽은 Jest, 타입 충돌yarn 프로젝트에 package-lock.json이 남아 있어 dependabot 보안 경보가 두 배로 잡히고 있었습니다. Jest는 moduleNameMapper 순서와 tsconfig 때문에 애초에 못 돌고 있었고, Cypress의 chai 타입이 jest-dom 매처 타입을 덮고 있었어요. Next 14→15 메이저 업그레이드까지 한 번에 처리한 기록입니다. · 파일 33개를 한 커밋에 넣었다2025-07-17파일 33개를 한 커밋에 넣었다 — 제목은 한 가지 일이라고 말하고, 안에는 다섯 가지가 있었다입사 석 달째, 파일 33개에 1,228줄을 더하고 823줄을 지운 커밋을 올렸습니다. 제목은 스크립트 하나를 바꿨다는 한 줄이었어요. 지금 세어 보니 그 안에 이름 바꾸기, 새 모듈 다섯, 인라인 스크립트 분리, 설정 변경, 뷰 정리가 같이 들어 있었습니다. 그중 하나는 두 달 뒤 팀원이 지웠고, 하나는 1년 뒤 버그로 돌아왔습니다.