Skip to content

feat(web): production smoke test — catch first-of-its-kind runtime bugs#39

Merged
rladmsgh34 merged 1 commit intomainfrom
feat/web-prod-smoke
Apr 26, 2026
Merged

feat(web): production smoke test — catch first-of-its-kind runtime bugs#39
rladmsgh34 merged 1 commit intomainfrom
feat/web-prod-smoke

Conversation

@rladmsgh34
Copy link
Copy Markdown
Owner

Summary

회귀 분석은 `N번 발생한 fix`를 잡지만, 우리 실수 대부분은 first-of-its-kind였음 (Python `(?i)` 사고, slug 미스매치, rate_limit 위치 등). 회귀로는 못 잡는 카테고리.

대응: 매 6시간 + 수동 트리거로 production 직접 호출 → 5xx + 알려진 에러 메시지로 buc 분류.

변경

파일 내용
`web/scripts/smoke.sh` 11개 대표 URL 검증 (정적/tracked/untracked/badge 분류별 다른 strict-ness)
`web/package.json` `pnpm smoke` 스크립트
`.github/workflows/smoke.yml` 6시간 cron + workflow_dispatch + fail 시 issue 자동 생성/업데이트

카테고리별 검증

분류 기준
정적 페이지/API HTTP 200 정확 `/`, `/api/badge/stats`, `/compare`
tracked 레포 JSON .error 없음, 5xx 아님 `/api/analyze?owner=vuejs&repo=core`
untracked 레포 5xx 아님 (rate limit 4xx는 외부 제약) `/api/analyze?owner=facebook&repo=react`
Page render 5xx 아님 `/r/shadcn-ui/ui` (PR #38 `(?i)` 사고를 잡았을 케이스)

False positive 처리

5xx인데 body가 알려진 외부 제약(rate limit 메시지)이면 ⚠️ warning으로 강등. 휴리스틱이라 후속 fix 필요:

발견된 후속 작업: `/api/analyze`가 GitHub rate limit(403)을 500으로 매핑 중. 진짜 429가 정확. smoke 휴리스틱의 임시방편 분기는 그 fix 후 제거 가능.

Test plan

  • 로컬에서 production 대상 실행 — 11/11 PASS (rate limit warning 1건 포함)
  • YAML syntax check
  • 머지 후 첫 cron 트리거 — issue 생성 가능 여부 확인 (의도적으로 fail시켜 테스트할지는 본인 결정)

🤖 Generated with Claude Code

회귀 분석은 'N번 일어난 fix'를 잡지만, 우리 실수의 대부분은
first-of-its-kind였다 (Python (?i) regex → JS, slug __ vs _,
rate_limit 위치 등). 회귀로는 잡을 수 없는 카테고리다.

대응: 매 6시간 + workflow_dispatch로 production을 직접 호출.
URL 분류별로 다른 검증 strict-ness:
- 정적 페이지/API: HTTP 200 확정 요구
- tracked 레포: cache 경로 통과 + JSON .error 없어야 함
- untracked 레포: 5xx만 차단 (rate limit 등 4xx는 외부 제약)

5xx인데 body가 알려진 외부 제약(rate limit 메시지)이면 warning으로
강등 — false positive 차단. 이 휴리스틱은 향후 rate limit을 진짜
429로 매핑하면 제거 가능 (별도 fix).

발견된 후속 작업
- /api/analyze가 GitHub rate limit (403)을 500으로 매핑 중. 429가 정확.
  smoke의 휴리스틱 분기가 그 fix 전까지의 임시방편.

자동화
- .github/workflows/smoke.yml: 6시간 cron + workflow_dispatch
- 실패 시 'smoke-failure' 라벨 issue 자동 생성/업데이트 (같은 날 중복 방지)
- pnpm smoke로 수동 실행도 가능 — 배포 직후 본인 검증용

검증
- 로컬에서 production 대상으로 실행 → 11/11 (warning 1건 포함) PASS
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
web Error Error Apr 26, 2026 3:10pm

Request Review

@rladmsgh34 rladmsgh34 merged commit 64bd61d into main Apr 26, 2026
5 of 6 checks passed
@rladmsgh34 rladmsgh34 deleted the feat/web-prod-smoke branch April 26, 2026 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant