This is a Next.js project bootstrapped with create-next-app.
.env.example 파일을 참고하여 .env 파일을 작성합니다.
pnpm installpnpm dev브라우저에서 http://localhost:3000로 이동합니다.
테스트는 목적에 따라 단위/컴포넌트 테스트, 커버리지 테스트, E2E 테스트로 나누어 실행합니다.
브라우저나 실제 DB 연결이 필요 없는 Vitest 테스트를 실행합니다. 컴포넌트 테스트는 React Testing Library와 jsdom 환경에서 실행됩니다.
pnpm test개발 중에는 watch mode를 사용할 수 있습니다.
pnpm test:watch전체 Vitest 테스트를 실행하고 V8 coverage 리포트를 생성합니다. 프로젝트 커버리지 기준은 95% 이상입니다.
pnpm test:coverageCI에서 사용하는 JUnit 리포트까지 함께 생성하려면 아래 명령을 실행합니다.
pnpm test:ciPlaywright E2E 테스트는 실제 브라우저, Next.js 서버, 테스트용 Postgres DB, MinIO (S3 mock)가 필요합니다. 처음 실행하는 환경에서는 Chromium 브라우저를 먼저 설치합니다.
pnpm test:e2e:install그 다음 E2E 테스트를 실행합니다. 이 명령은 레포에 커밋된 .env.test를 사용하고, docker-compose.test.yml의 Postgres와 MinIO를 띄운 뒤 Prisma migration과 dummy data seed를 적용한 다음 Playwright를 실행합니다. .env.test에 AWS_ENDPOINT_URL_S3=http://127.0.0.1:9000이 설정돼 있어 S3Client는 실제 AWS가 아닌 로컬 MinIO로 붙습니다.
pnpm test:e2eUI 모드로 테스트를 확인하려면 아래 명령을 사용합니다.
pnpm test:e2e:ui- 단위/컴포넌트 테스트: 대상 파일 옆의
*.test.ts또는*.test.tsx - 통합 테스트:
src/tests/** - E2E 테스트:
src/e2e/**
Github 레포지토리 설정에서 Actions secrets and variables 페이지로 이동한 후 Repository secrets에 아래 값을 입력합니다.
- NEXT_PUBLIC_CHANNEL_PLUGIN_KEY=example
- NEXT_PUBLIC_GTM_ID=GTM-example
- NEXT_PUBLIC_GA_ID=G-example
- DATABASE_URL=postgres://user:password@url:port/schema
- BETTER_AUTH_SECRET=example
- BETTER_AUTH_URL=https://www.stdev.kr
- GOOGLE_CLIENT_ID=example.apps.googleusercontent.com
- GOOGLE_CLIENT_SECRET=example
서버에서 Docker Compose 환경을 설정한 후, docker-compose.yml 을 아래와 같이 작성합니다.
services:
stdev:
container_name: stdev
image: ghcr.io/stdev-kr/stdev:main
pull_policy: always
expose:
- 1000
restart: always
environment:
DATABASE_URL: postgres://user:password@url:port/schema
BETTER_AUTH_SECRET: example
BETTER_AUTH_URL: https://www.stdev.kr
GOOGLE_CLIENT_ID: example.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET: example
AWS_REGION: ap-northeast-2
AWS_ACCESS_KEY: example
AWS_SECRET_KEY: example
S3_BUCKET: stdev-kr컨테이너를 올리기 전에 Prisma 스키마 마이그레이션을 먼저 적용합니다.
pnpm db:migrate:deploy그 다음 아래 명령을 실행합니다.
docker compose up -dPort 1000 번에 Reverse Proxy를 붙입니다.