테스트: bun run test는 바뀐 부분 테스트만 (전체는 test:all)

scripts/test-changed.ts가 origin/main 이후 변경(없으면 마지막 커밋)을 보고 고른다.
게임 하나만 바뀌면 그 게임 테스트 + 모든 게임을 도는 파일에서 그 게임 항목만(-t),
문서·E2E·배포는 없음, 엔진·shared·루트 설정·모르는 파일은 전체.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
EJClaw
2026-10-08 10:48:47 +09:00
parent e499c79464
commit 2fbd956cb5
4 changed files with 125 additions and 4 deletions

View File

@@ -3,13 +3,18 @@
## 1. 원칙
- "될 것 같다"가 아니라 테스트 결과로 완료를 판단한다.
- 큰 테스트(부하, 장애 주입, E2E)를 돌리기 전에는 **먼저 Gitea 저장소에 커밋·푸시**하고 진행한다(사용자 요구사항). 결과는 커밋 해시와 함께 기록.
- 모든 PR/커밋 전: `bun run typecheck && bun run lint && bun test`.
- 모든 PR/커밋 전: `bun run typecheck && bun run test`. `bun run test`는 바뀐 부분 테스트만 돈다(`scripts/test-changed.ts`).
- 바뀐 파일 = `origin/main` 이후 커밋 + 커밋 안 한 변경(없으면 마지막 커밋). `TEST_BASE=<ref>`로 기준 변경.
- 게임 하나(`packages/games/src/<id>`, `apps/web/src/games/<id>`) → 그 게임 테스트 + 모든 게임을 도는 테스트 파일에서 그 게임 항목만(`-t <id>`).
- `bots/` → 봇 테스트 전부, `apps/server/src` → 서버 테스트 전부, 게임 화면 공통(`components`·`lib`·`net`) → 웹 테스트 전부, 그 밖의 화면(홈 등) → 웹 공통 테스트.
- 문서·E2E·배포·스크립트 → 없음. 엔진·shared·게임 목록·루트 설정·그 밖의 파일 → 전체.
- 전체가 필요하면 `bun run test:all`(배포 전, 큰 변경), 무작위 대국 시드까지 전부면 `bun run test:full`.
## 2. 테스트 종류
| 종류 | 도구 | 대상 | 언제 |
|---|---|---|---|
| 규칙 단위 | `bun test` | `packages/games/*` | 매 커밋 |
| 무작위 대국/불변식 | `bun test` + `engine/testing.ts` | 모든 게임. 평소 `bun run test`는 `playoutSeeds()`로 시드 1/10(예: 1,000 → 100)만, `bun run test:full`(`FULL_TESTS=1`)은 전부 | 매 커밋(전체는 큰 변경·배포 전) |
| 무작위 대국/불변식 | `bun test` + `engine/testing.ts` | 모든 게임. 평소 `bun run test`·`test:all`은 `playoutSeeds()`로 시드 1/10(예: 1,000 → 100)만, `bun run test:full`(`FULL_TESTS=1`)은 전부 | 매 커밋(전체는 큰 변경·배포 전) |
| 정보 유출 | 같은 도구 | 숨김 정보 게임 | 매 커밋 |
| 서버 통합 | `bun test` + 실제 WS 클라이언트 | 인증, 방 만들기/입장, 행동, 재접속, 강퇴, 한 판 더 | 매 커밋 |
| 복구 | 통합 테스트 | 서버 인스턴스 종료 → 같은 DB로 재시작 → 상태 동일 | 매 커밋 |