# QA Pr

> Pinpoint 프론트엔드 PR 전 QA 게이트. 빌드/테스트를 실행하고 변경된 코드에 대한 동작 QA를 수행합니다. 커밋하거나 PR을 올리기 전에 반드시 이 스킬을 먼저 실행하세요.

- Skill: `pinpoint-apm/qa-pr` (Agent Skill)
- Install (CLI): `npx skillmds@latest add pinpoint-apm/qa-pr`
- Raw SKILL.md: https://api.skillmd.com/api/skills/pinpoint-apm/qa-pr/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: pinpoint-apm (https://skillmd.com/u/pinpoint-apm)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/pinpoint-apm/qa-pr

---


# PR 전 QA 게이트

> **이 스킬은 `.claude/agents/qa-engineer/qa-engineer.md`에 정의된 `qa-engineer` 에이전트를 사용하여 실행합니다.**
> QA 수행 시 해당 에이전트의 사고방식, 체크리스트, 출력 형식을 따르세요.

**실행 시점: 커밋하거나 푸시하기 전에 반드시 실행하세요. QA 판정이 FAIL이면 문제를 해결하기 전까지 커밋하지 마세요.**

PR 제출 전에 현재 변경 사항에 대한 전체 QA를 수행합니다.

## 1단계: 변경 사항 파악

```bash
git diff upstream/master --name-only
git diff upstream/master --stat
```

변경된 모든 파일을 나열하고 수정된 내용을 요약합니다.

## 2단계: 빌드 및 테스트

순서대로 실행하세요. **실패 시 즉시 중단하고 보고하세요. 빌드나 테스트 실패 상태에서는 커밋하지 마세요.**

```bash
yarn build
yarn test
```

각각의 통과/실패 여부와 오류 출력을 보고합니다.

## 3단계: 동작 QA

변경된 각 컴포넌트, 훅, 페이지에 대해 기능 분석을 수행합니다:

### 3a. 해피 패스
- 정상 데이터로 기대되는 동작은 무엇인가?
- 구현이 그 기대에 부합하는가?
- 사용자 액션 → 상태 변경 → UI 업데이트 추적

### 3b. 엣지 케이스
변경된 UI 컴포넌트에 대해 다음을 각각 확인:
- [ ] 빈/null 데이터 상태 — API가 빈 배열이나 null을 반환할 때 무엇이 렌더링되나?
- [ ] 로딩 상태 — 스켈레톤/스피너가 표시되나? 빠른 로드에서 깜빡이지 않나?
- [ ] 오류 상태 — API 실패 / 네트워크 오류. 사용자에게 오류가 표시되나?
- [ ] 경계값 — 날짜 범위, 페이지 제한, 대용량 데이터셋
- [ ] 동시 요청 — 빠른 클릭, 여러 탭 전환

### 3c. 상태 무결성
- [ ] URL 파라미터가 UI 상태를 올바르게 반영 (from/to, application)
- [ ] 페이지 새로고침이 상태를 유지 (URL이 진실의 원천)
- [ ] 아톰 상태가 내비게이션 간에 누출되지 않음 (클린업 확인)
- [ ] React Query 캐시가 뮤테이션 후 오래된 데이터를 표시하지 않음

### 3d. 컴포넌트 상호작용
- [ ] 변경된 props가 모든 부모 컴포넌트 호출 위치를 만족함
- [ ] 이벤트 핸들러가 올바르게 발생하고 중복 액션을 생성하지 않음
- [ ] 무한 리렌더 루프 없음 (아톰 의존성 변경, 불안정한 참조)

## 4단계: Pinpoint 특화 확인

- [ ] application/from/to가 변경될 때 ServerMap이 여전히 렌더링됨
- [ ] 변경된 코드 근처의 스캐터 차트 상호작용(드래그 선택, 클릭)이 여전히 작동
- [ ] 트랜잭션 목록 / Inspector 내비게이션이 손상되지 않음
- [ ] 설정 기반 기능이 여전히 설정을 올바르게 확인함

## 5단계: 회귀 요약

다음을 나열합니다:
1. **변경된 파일**: (개수와 목록)
2. **실행된 테스트**: 통과/실패
3. **빌드**: 통과/실패
4. **발견된 동작 이슈**: (심각도와 함께 목록)
5. **QA 판정**: ✅ PASS / ❌ FAIL / ⚠️ PASS WITH WARNINGS

FAIL 또는 PASS WITH WARNINGS인 경우, 머지 전에 필요한 구체적인 조치 사항을 나열합니다.

