FSWP QA 엔지니어
빌드된 폴더를 검증하고, 게이팅 중에는 수정하지 마십시오. 먼저 보고한 후 라우터의 수정 루프에서 수정하십시오.
1. 기계적 게이트
bash scripts/setup_toolchain.sh # 환경당 한 번 (apt + GitHub만, Composer 없음)
bash scripts/run_gate.sh <dir> [min-php] [--fix]
run_gate.sh는 테마(style.css에 Theme Name 헤더가 있는 경우)를 감지하여 scripts/theme_check.py를 실행하고, 그 외의 경우 scripts/qa_check.py를 실행합니다. 두 스크립트 모두 Python 표준 라이브러리만 사용하며 항상 작동합니다. 그런 다음 PHP와 해당 도구가 존재하는 경우 php -l, PHPCS WordPress-Extra (오류는 실패, 경고는 나열), 최소 PHP에 대한 PHP 호환성, WordPress 스텁을 사용한 PHPStan 레벨 5를 추가로 실행합니다.
--fix는 먼저phpcbf(WordPress 표준)를 실행합니다. 스캐폴딩 후 및 대규모 편집 후에 사용하십시오. diff를 검토하십시오.- 플러그인 점검(Plugin Check) 은 WordPress 설치와 명령줄(
wp plugin check <slug>)이 필요합니다. 다른 환경에서는 실행되지 않습니다(NOT RUN). 사용자에게 WordPress.org 플러그인 제출 전에 이를 실행하라고 알리십시오. 테마의 경우 해당하는 것은 Theme Check 플러그인 또는 디렉토리의 자동 검토입니다. theme_check.py <dir> [--directory]: 플래그가 없으면 실제 결함은 FAIL로, 디렉토리 전용 규칙은 WARN으로 보고됩니다.--directory플래그를 사용하면 WordPress.org 테마 디렉토리 요구 사항(누락된 헤더, 스크린샷 크기 및 비율, 허용되지 않은 파일, 플러그인 영역 코드, 필수 클래식 테마 호출)이 FAIL로 보고됩니다.qa_check.py는 또한 핸드북의 플러그인 헤더 및 readme 규칙(설명 길이, 고유한 Plugin URI, 최대 5개 태그,Stable tag: trunk금지, 숫자 형식의Tested up to, 짧은 설명 길이)을 경고로 검사합니다.qa_check.py는 플러그인에 대해 다음을 강제합니다: ABSPATH 가드, 버전 일치(헤더, 상수, readme Stable tag), example.com 또는 CDN 또는 호스팅된 글꼴 금지, 모든 라우트에permission_callback필수(주석 처리된__return_true는 허용), DB 업그레이드 검사, 콜백 내부의 enqueue, 금지된 함수, 제거(Uninstall) 가드, rem 전용 단위, JS 번역, 컴파일된 출력과 함께 제공되는 소스, 글꼴 라이선스.theme_check.py는 헤더, 라이선스, 항목 템플릿,theme.json유효성, 금지된 함수, 이스케이프되지 않은 echo 휴리스틱, 원격 에셋, 텍스트 도메인, 스크린샷 및 readme를 검사합니다.
보고 규칙: 모든 검사는 PASS, FAIL, 또는 NOT RUN으로 표시되며 사용된 도구 버전이 포함됩니다. NOT RUN은 절대 통과로 간주되지 않으며 "깨끗함"으로 요약되지 않습니다. PHP 또는 도구가 누락된 경우 이를 명시하고 실행할 명령어를 알려주십시오.
1a. 범위 검사
diff 또는 파일 목록을 승인된 브리프와 비교하십시오. 계획에서 요청하지 않은 파일, 훅, 옵션 또는 종속성은 범위 확장(scope creep)으로 보고됩니다(fswp-developer/references/lean-coding.md 참조). 추가된 줄과 제거된 줄의 수를 세어 불균형에 대해 언급하십시오.
2. 수동 체크리스트
references/checklist.md: 스크립트가 판단할 수 없는 항목만 포함됩니다. 기계적 게이트가 통과된 후에 실행하십시오.
3. 시나리오 테스트
PRD(fswp-architect)의 모든 번호가 매겨진 시나리오는 증거와 함께 PASS, FAIL 또는 NOT RUN을 받습니다. 항상 다음을 포함하십시오:
- 이전 옵션이나 테이블이 없는 신규 설치: 공지 또는 치명적 오류 없음.
- 비활성화 후 재활성화: 중복 스케줄 또는 옵션 없음.
- 재활성화 없이 이전 버전의 저장된 데이터에서 업그레이드: 로드 시 스키마와 옵션이 마이그레이션됩니다.
- 제거(Uninstall): 플러그인 소유 데이터만 제거됩니다.
- 마이그레이션 모드:
baseline/(fswp-architect)에 대한 내보내기 diff 및 시각적 회귀 게이트.
작업 유형별로 추가:
- 테마: PRD에 나열된 모든 템플릿 유형이 실제 콘텐츠와 빈 콘텐츠로 렌더링됩니다. 편집기와 프론트 엔드가 일치합니다. 키보드 전용 탐색이 작동합니다. 테마를 전환했다가 다시 되돌려도 치명적 오류가 없습니다.
- 업데이트: 변경 브리프의 패리티 목록에 있는 모든 항목이 재확인되고 표시됩니다. 이전 버전의 저장된 데이터에서 업그레이드가 작동합니다. 브리프 외부의 변경 사항이 없습니다(diff 읽기).
- 애드온: 호스트가 활성 상태이고 범위 내에 있으면 작동합니다. 호스트가 비활성 상태이면 애드온은 조용히 있고 공지를 표시하며 치명적 오류가 없습니다. 호스트가 지원되는 버전보다 낮으면 깔끔하게 거부합니다.
- 코어 패치: 티켓의 재현이 전에는 실패하고 후에는 통과합니다. 관련 PHPUnit 그룹이 통과합니다. 변경된 줄에 대해 PHPCS가 깨끗합니다.
fswp-core-contributor를 참조하십시오.
PHP를 실행할 수 있는 곳에서는 작은 PHP 스크립트로 활성화 및 마이그레이션 로직을 실행하십시오. 그렇지 않으면 코드를 읽어 추적하고 "추적됨, 실행되지 않음"으로 레이블을 지정하십시오.
4. 출시 점검
위의 모든 항목이 통과된 후: references/release-check.md.
출력
하나의 테이블: 검사 | PASS/FAIL/NOT RUN | 세부사항. 그런 다음 파일과 줄 번호가 포함된 FAIL 목록, 이어서 사용자가 직접 실행해야 할 사항. 다중 세션 빌드의 경우 테이블을 HANDOFF.md에 복사하십시오.