You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
현재 apps/blog(Next.js 16 + MDX)에는 단위 테스트도, E2E 테스트도 전혀 없습니다. 테스트 설정 파일·의존성도 없는 상태라, 리팩터링이나 기능 추가 시 회귀(regression)를 잡아줄 안전망이 없습니다.
단위 테스트는 Jest, E2E는 Playwright로 구성하는 것을 목표로 합니다. (이 이슈는 작업 등록용이며, 당장 구현하지는 않습니다.)
목표
Jest 단위 테스트 환경 구축
Playwright E2E 테스트 환경 구축
핵심 로직/주요 페이지에 대한 초기 테스트 작성
(선택) CI에서 PR마다 자동 실행
1. 단위 테스트 (Jest)
Next.js 공식 권장 방식인 next/jest로 설정(SWC 변환 활용). tsconfig의 path alias(@libs/* 등)를 moduleNameMapper에 반영
@testing-library/react, @testing-library/jest-dom, jest-environment-jsdom 도입
스크립트 추가: test, test:watch, test:coverage
우선순위 테스트 대상
순수 로직(가치 가장 높음): src/libs/frontmatter.ts, src/libs/mapper.ts, src/libs/param-util.ts, src/libs/page-link-map.ts, src/libs/date-util/*
컴포넌트 렌더링: post-card, tag-badge/series-badge/badge, divider, mdx-wrapper 등
MDX/mdx-components 관련 렌더 테스트 전략 결정(필요 시 일부 mock)
2. E2E 테스트 (Playwright)
@playwright/test 설치 + playwright.config.ts(webServer로 next dev/next start 자동 기동, baseURL 설정)
스크립트 추가: test:e2e, test:e2e:ui
시나리오(초기)
메인 진입 시 헤더/푸터 렌더
포스트 목록 → 상세 진입, 제목·작성일 노출 확인
시리즈 페이지 / 태그 페이지 탐색
모바일 사이드바·반응형 동작(최근 모바일 반응형 개선과 연계)
존재하지 않는 경로(404)
실패 시 스크린샷/trace 아티팩트 저장 설정
3. 모노레포 / CI
turbo.json에 test 태스크 등록(필요 시 test:e2e 분리)
(선택) GitHub Actions에서 PR마다 unit + e2e 실행, Playwright 브라우저 캐시 적용
완료 기준 (AC)
pnpm --filter blog test로 단위 테스트가 실행되고 통과
pnpm --filter blog test:e2e로 E2E가 로컬에서 통과
핵심 libs 함수 단위 테스트 + 주요 사용자 흐름 1~2개 E2E가 존재
README/문서에 테스트 실행 방법 안내 추가
참고
단위 테스트 작성 패턴은 최근 추가한 playground/jest-testing 예제와 frontend/jest-testing 포스트를 참고할 수 있습니다. 다만 그쪽은 순수 모듈용 babel 설정이고, 블로그는 Next.js + React + MDX 환경이라 next/jest(SWC) 기반으로 구성하는 것이 적합합니다.
배경
현재
apps/blog(Next.js 16 + MDX)에는 단위 테스트도, E2E 테스트도 전혀 없습니다. 테스트 설정 파일·의존성도 없는 상태라, 리팩터링이나 기능 추가 시 회귀(regression)를 잡아줄 안전망이 없습니다.단위 테스트는 Jest, E2E는 Playwright로 구성하는 것을 목표로 합니다. (이 이슈는 작업 등록용이며, 당장 구현하지는 않습니다.)
목표
1. 단위 테스트 (Jest)
next/jest로 설정(SWC 변환 활용).tsconfig의 path alias(@libs/*등)를moduleNameMapper에 반영@testing-library/react,@testing-library/jest-dom,jest-environment-jsdom도입test,test:watch,test:coveragesrc/libs/frontmatter.ts,src/libs/mapper.ts,src/libs/param-util.ts,src/libs/page-link-map.ts,src/libs/date-util/*post-card,tag-badge/series-badge/badge,divider,mdx-wrapper등mdx-components관련 렌더 테스트 전략 결정(필요 시 일부 mock)2. E2E 테스트 (Playwright)
@playwright/test설치 +playwright.config.ts(webServer로next dev/next start자동 기동,baseURL설정)test:e2e,test:e2e:ui3. 모노레포 / CI
turbo.json에test태스크 등록(필요 시test:e2e분리)완료 기준 (AC)
pnpm --filter blog test로 단위 테스트가 실행되고 통과pnpm --filter blog test:e2e로 E2E가 로컬에서 통과libs함수 단위 테스트 + 주요 사용자 흐름 1~2개 E2E가 존재참고
playground/jest-testing예제와frontend/jest-testing포스트를 참고할 수 있습니다. 다만 그쪽은 순수 모듈용 babel 설정이고, 블로그는 Next.js + React + MDX 환경이라next/jest(SWC) 기반으로 구성하는 것이 적합합니다.🤖 Generated with Claude Code