OpenClaw 테스팅은(는) 무엇을 하나요?
증명 정책
-
PR CI = 기본 광범위 증명. 변경 사항 빌드 + 집중 테스트 통과 → 오픈 준비 PR. CI는 광범위 스위트를 실행합니다. PR 전 스위트 실행을 위해 PR을 지연시키지 마세요.
-
게시 전 빌드 불가: 게시가 이미 승인되었고, 원격 용량을 사용할 수 없으며, 로컬 실행이 적격하지 않은 경우, 정확히 누락된 빌드와 용량 격차를 기록한 초안 PR을 푸시/오픈합니다. 해당 빌드를 정확한 헤드 CI로 연기합니다. 준비 또는 병합 표시 전에 성공을 요구합니다. 이는 증명 타이밍만 변경하며, 게시 권한, 소스 신뢰, 자격 증명, 소유자 승인 또는 병합 게이트는 변경하지 않습니다. 자동 CI는 초안을 건너뜁니다. 신뢰할 수 있는 정식 브랜치의 경우,
target_ref를 푸시된 전체 헤드 SHA로 설정하여 기존ci.yml수동 디스패치를 사용하세요 (ghx workflow run ci.yml --repo openclaw/openclaw --ref main -f target_ref=<sha>). 선택한 체크아웃 SHA와 성공적인build-artifacts작업이 필요한 빌드를 포함하는지 확인하세요. CI의build:ci-artifacts는 전체 선언 발행을 생략합니다. 포함되지 않은 증명은 보류 상태로 유지하세요. 건너뛴 작업 또는 워크플로우 참조 SHA는 빌드 증명이 아닙니다. PR에서 실행을 연결한 다음 일반 준비 PR CI 및 랜딩 게이트를 사용하세요. 신뢰할 수 없는 소스는 비밀 없는 경로를 유지합니다. -
PR 전에는 좁게 증명:
pnpm test <파일> --maxWorkers=1로 수정된 테스트, 타겟 타입체크, 린트, 포맷. 종속성 및 현재 호스트 용량이 적격한 경우 신뢰할 수 있고 범위가 정해진 작업에 대해 로컬 증명을 선호하세요. 로컬 실행은 선택 사항입니다. 집중 명령이 여전히 큰 컴파일러 그래프를 로드하거나 광범위 레인으로 확장될 수 있습니다. -
의도적으로 원격 증명을 선택하세요. 광범위 증명에는 PR CI를 사용하세요. Crabbox/Testbox는 값비싼 검사, 사용 중이거나 적격하지 않은 로컬 호스트, 다른 OS/장치, 라이브 제공자/채널, 긴 E2E 또는 무거운 벤치마크를 다룰 수 있습니다. 명령이 준비되고 용량이 신속하게 부여된 경우에만 획득하세요. 대기 중인 경우 작업 소유 할당만 중지하고 PR CI 또는 안전한 로컬 범위를 사용하세요. 포함되지 않은 플랫폼별 증명은 보류 상태로 유지하세요. 사용 중인 시스템에 무거운 작업을 강제하거나 제공자를 연결하지 마세요. 선택한 워크로드에 대해 입증된 가장 작은 프로필을 사용하세요.
-
녹색을 위해 절대 다시 실행하거나 다시 푸시하지 마세요. 실제 실패를 수정하세요. 빨간색을 속성화하기 전에 사용 가능한 CI 실패 분류를 읽으세요.
-
변경된 계약을 증명하고, 필요한 모든 게이트를 완료하고, 마치세요. 변경된 입력, 실패 또는 명명된 해결되지 않은 위험에 대해서만 확장/반복하세요.
-
범위가 지정된
AGENTS.md를 따르세요. 테스트 작성/검토: 바운더리 가이드 및 test-audit을 사용하세요.
증명 선택
-
수정된 계약에 대한 증명을 선택하세요. 유효한 증명을 재사용하고(변경된 입력 또는 누락된 적용 범위에 대해 다시 실행), 사용자/호스트 제한 내에서 워크플로우의 필요한 게이트를 완료하고, 실행되지 않은 검사와 격차를 보고하세요. 가능한 경우 실제 흐름을 통해 사용자에게 보이는 동작을 증명하세요. 외부 API는 라이브 계약 증명이 필요합니다. 격리된 모의-게이트웨이 하네스 = 유효한 채널 경계 증명입니다. 문서 전용: 문서 온전성 및
git diff --check. -
런타임 결함: 실제 진입점을 재현하고, 관련 형제 항목과 함께 다시 실행하세요.
-
신뢰할 수 있는 소스:
pnpm changed:lanes --json, 집중 테스트 + 타겟 타입체크/린트/포맷;pnpm check:changed= 선택적 스마트 로컬 검사. -
공개 SDK/플러그인 계약: 대표적인 소비자, 전체 플러그인 스윕이 아닙니다.
-
빌드 출력, 지연 가져오기, 패키지 경계:
pnpm build또는 변경된 계약을 포함하는 저장소 CI 빌드를 포함하세요. 포함되지 않은 패키징/플랫폼/선언 요구 사항을 기록하세요. 필요한 전체 패키지 또는 릴리스 빌드는 여전히 일치하는 증명이 필요합니다. -
워크플로우:
git diff --check+pnpm check:workflows. -
문서 전용: 관련 문서/링크/포맷 검사 +
git diff --check, 런타임 테스트 없음. -
필요 시 읽기: 로컬 명령, Crabbox, OpenClaw 원격 설정, 패키지/Docker 증명, 릴리스 CI, 플러그인 릴리스 매트릭스, Docker 작성, 채널 스킬/ Control UI E2E.
-
격리된 모의-게이트웨이 하네스는 유효한 채널 경계 증명입니다. 라이브 격차를 명시하세요. 가능한 경우 실제 흐름을 통해 사용자에게 보이는 동작을 증명하세요. 외부 API는 라이브 계약 증명이 필요합니다. 라이브 채널 또는 네이티브 앱 작업에 대한 범위가 지정된 채널/플랫폼 가이드를 읽으세요. Telegram 클레임은 Convex 임대 자격 증명을 사용한 Test Server userbot 증명이 필요합니다. 플랫폼 클레임은 실제 장치 증거가 필요합니다. macOS 권한 증명은 안정적인 서명된 앱이 필요합니다.
-
릴리스 증명: 후보자/Tooling SHA를 보존하고, 게시 권한을 부여하지 않습니다.
소스 및 상태 경계
- 신뢰할 수 없는 기여자/포크 코드, 래퍼, 구성을 로컬에서 절대 실행하지 마세요. 비밀 없는 포크 CI 또는 Crabbox를 통한 삭제된 직접 AWS를 사용하세요. 자격 증명이 포함된 Testbox는 사용하지 마세요. 자격 증명 실행: 검토 후 유지 관리자 승인이 필요합니다. 신뢰할 수 없는 임대를 절대 수화하지 마세요.
- 격리된 상태 + 무료 포트. 명시적인 작업별 승인 없이 운영자 게이트웨이/실제 데이터를 다시 시작, 편집 또는 테스트하지 마세요. 관련 없는 프로세스 및 공유 종속성 설치를 보존하세요.
- 동시 테스트/검사 명령:
OPENCLAW_VITEST_FS_MODULE_CACHE_PATH값을 분리하거나 직렬로 실행하세요. 검사도 Vitest를 실행할 수 있습니다. 저장소 래퍼만 사용하고, 원시 Vitest는 사용하지 마세요. 준비된 연결된 작업 트리:node scripts/run-vitest.mjs <파일> --maxWorkers=1은 pnpm 조정을 피합니다. PR CI는 광범위 검사를 실행합니다.
CI 실패
- PR CI 실패 →
pnpm test:ci-failed <pr>; 기존/신규/알 수 없음 분류를 읽으세요. - 새로운 실패를 수정하세요. 알 수 없는 경우 조사 →
pnpm test:ci-failed <pr> --run으로 선택한 테스트가 로컬에서 통과할 때까지 실행한 후 한 번 푸시하세요. --run은OPENCLAW_NODE_TEST_PLAN_CONTINUE_ON_FAILURE=1을 활성화합니다: 선택한 구성에서 일반적인 실패를 수집하는 반면, 인프라 실패는 여전히 중지합니다. 수동 집중 재실행에도 동일한 옵트인을 사용하세요.- 기존 실패: 실패 테이블 랜딩 규칙. 일치하는 서명 ≠ 작업 이름 전용 속성.
- 절대
gh run rerun을 사용하여 녹색을 쫓지 마세요. CI 수리를 위해 로컬 전체 스위트를 실행하지 마세요. - 진단을 정확한 SHA + 작업에 바인딩하세요. 실패한 로그를 한 번 가져오고, 오래된 PR 롤업보다 정확한 실행/작업 상태를 선호하세요.
- 제품, 하네스, 인프라, 자격 증명, 대체된 실행 취소를 구분하세요. 스냅샷은 macOS에서 통과/CI에서 실패: 재생성 전에 Linux/Node 바이트를 재현하세요.
기본라인 및 예상-실패 예외
좁은 기본라인, 스냅샷, 무시 및 예상-실패 예외는 각 항목이 소스에 대해 확인되고 PR이 그 이유를 기록한 경우에만 구현자 결정입니다(예: 사용자 데이터가 정확하게 유지되는 동안 업그레이드 스냅샷의 도구 소유 메타데이터). 실제 회귀 또는 사용자 데이터 변경을 절대 마스킹하지 마세요. 포괄적이거나 확인되지 않은 예외는 승인이 필요합니다. 정확한 축소 전용 래칫 업데이트는 유지 관리입니다. 수정 PR은 스쿼시 본문이 이유를 명시할 때 정확히 자체 정당화된 순 회귀 테스트 라인에 대해 별도의 추적된 config/test-lines-allocations/<change>.txt 레코드를 추가할 수 있습니다. 공유 스칼라는 변경되지 않도록 유지하여 독립적인 허가가 병합되도록 합니다. 검사기는 실제 LF 증가에 대한 유효한 천장 증가를 제한하고 상속된 부채를 보존합니다. 스칼라 전용 조정을 포함한 다른 인상은 승인이 필요합니다. 기록 형식 및 정리에 대한 비용 예산을 참조하세요.
모듈 모의의 경우 픽스처 계약을 따르세요. 격리 주석이 기존 기본라인 항목을 폐기하는 경우 주석과 해당 기본라인 제거를 함께 커밋하세요. --prune이 전체 체크아웃을 스캔하므로 전체 기본라인 차이를 검사하세요. --prune 없이 가드 실행으로 업데이트된 기본라인을 확인하세요.
테스트 실패 정책
- 실패 = 결함. 제한된 재현 시도(먼저 동일한 샤드 순서); 소유자 식별; 제품, 픽스처, 공유 상태, 순서 버그를 수정하세요.
- 입증된 수리: 회귀 테스트를 추가하세요. 해당되는 경우 다른 소유자의 수정을 인용하세요.
- 안전한 수정을 설정/완료할 수 없는 경우: 원래 실패, 시도, 증거, 불확실성을 PR에 기록하고 정상 CI/검토 게이트 아래에서 계속하세요.
- 해결되지 않은 실패만으로는 랜딩을 차단하거나 추가 승인이 필요하지 않습니다. 통과 재실행 ≠ 입증된 수리.
- 재시도, 더 긴 시간 제한, 더 약한 어설션, 더 넓은 모의, 변경된 기본라인으로 실패를 절대 숨기지 마세요.