mirim-app/frontend/vite.config.js
AWESOMEDEV 48bab9b2dd
All checks were successful
CI / backend-test (push) Successful in 59s
CI / frontend-build (push) Successful in 30s
CI / backend-dep-scan (push) Successful in 28s
fix(test): vitest 대상을 src로 한정 (e2e Playwright 스펙 제외)
vitest가 기본으로 *.spec.js를 잡아 e2e/의 Playwright 스펙까지 실행하려다
frontend-build CI가 실패했다. test.include를 src/**로 좁혀 단위(vitest)와
E2E(Playwright)를 분리한다. (CI가 잡아준 회귀)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 08:30:07 +09:00

38 lines
1.6 KiB
JavaScript

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
// 학습 포인트: 개발 중엔 프론트(5173)가 /api 요청을 백엔드(8080)로 넘겨줍니다(프록시).
// 운영에선 nginx/Caddy가 같은 역할을 합니다.
export default defineConfig({
plugins: [react()],
server: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
},
},
},
// 학습 포인트: 테스트가 "로직 계층(src/lib)"의 몇 %를 실행하는지 측정한다.
// UI 컴포넌트가 아니라, 채점·검증 같은 순수 로직에 안전망이 있는지가 중요.
// npm run coverage → 터미널 표 + coverage/index.html.
test: {
// vitest(단위 테스트)는 src/ 만 대상으로 한다.
// 학습 포인트: vitest는 기본으로 *.spec.js도 잡는데, e2e/의 Playwright 스펙(*.spec.js)은
// 브라우저 러너(Playwright)로만 돌아야 한다. 여기서 범위를 src로 좁혀 둘을 분리한다.
include: ['src/**/*.{test,spec}.{js,jsx}'],
coverage: {
provider: 'v8',
include: ['src/lib/**'],
exclude: ['src/lib/**/*.test.js'],
reporter: ['text', 'html'],
// 채점 로직(runSql.js)엔 바닥을 건다 — 이 안전망을 지우면 CI 빨간불.
// glossary(데이터)·postcode/runJs(브라우저 연동)는 순수 유닛테스트 대상이 아니라 게이트 제외.
// 학생이 다른 로직에 테스트를 붙이면 여기에 파일을 추가해 바닥을 넓히는 게 목표.
thresholds: {
'src/lib/runSql.js': { lines: 40 },
},
},
},
})