QG6 完成QA治理矩阵与报告规范
这个提交包含在:
+115
@@ -0,0 +1,115 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
CLIENT_DIR="$ROOT_DIR/client"
|
||||
MODE="${1:-attached}"
|
||||
ISSUE_ID="${QA_ISSUE_ID:-qg6-qa-governance-upgrade}"
|
||||
REPORT_DIR="${VISUAL_MATRIX_REPORT_DIR:-$ROOT_DIR/artifacts/qa-flow/${ISSUE_ID}-visual-matrix-$(date +%Y%m%d-%H%M%S)}"
|
||||
SUMMARY_BASE_URL="${E2E_BASE_URL:-}"
|
||||
|
||||
mkdir -p "$REPORT_DIR"
|
||||
|
||||
usage() {
|
||||
cat <<USAGE
|
||||
Usage: bash scripts/qa/run-visual-matrix.sh <local|attached|live>
|
||||
|
||||
说明:
|
||||
local 准备本地临时库和服务后运行 PC + 移动视觉矩阵。
|
||||
attached 复用当前 E2E_BASE_URL 运行视觉矩阵。
|
||||
live 默认使用 https://oa.hyinda.com 运行公网视觉矩阵。
|
||||
|
||||
可选环境变量:
|
||||
QA_ISSUE_ID 输出 issue-id,默认 qg6-qa-governance-upgrade
|
||||
VISUAL_MATRIX_REPORT_DIR 摘要报告目录
|
||||
VISUAL_MATRIX_SCOPE=full|mobile attached 默认 full;live 默认 mobile,避免无凭据时写入公网测试数据
|
||||
E2E_BASE_URL attached 模式目标地址
|
||||
USAGE
|
||||
}
|
||||
|
||||
write_summary() {
|
||||
local exit_code="$?"
|
||||
if [[ "$MODE" == "help" || "$MODE" == "-h" || "$MODE" == "--help" ]]; then
|
||||
return "$exit_code"
|
||||
fi
|
||||
if [[ -f "$REPORT_DIR/summary.json" ]]; then
|
||||
return "$exit_code"
|
||||
fi
|
||||
local scope="${VISUAL_MATRIX_SCOPE:-}"
|
||||
if [[ -z "$scope" ]]; then
|
||||
if [[ "$MODE" == "live" ]]; then
|
||||
scope="mobile"
|
||||
else
|
||||
scope="full"
|
||||
fi
|
||||
fi
|
||||
local notes="移动 320/360/375/390/393/414/430;企业微信 iOS/Android UA 和普通移动 UA。"
|
||||
if [[ "$scope" == "full" ]]; then
|
||||
notes="PC 1440x960;移动 320/360/375/390/393/414/430;企业微信 iOS/Android UA 和普通移动 UA。"
|
||||
fi
|
||||
local status="PASS"
|
||||
if [[ "$exit_code" -ne 0 ]]; then
|
||||
status="FAIL"
|
||||
fi
|
||||
QA_REPORT_DIR="$REPORT_DIR" \
|
||||
QA_ISSUE_ID="$ISSUE_ID" \
|
||||
QA_BASE_URL="$SUMMARY_BASE_URL" \
|
||||
QA_MODE="visual-matrix-${MODE}" \
|
||||
QA_STATUS="$status" \
|
||||
QA_SUMMARY_NOTES="$notes" \
|
||||
node "$ROOT_DIR/scripts/qa/write-qa-summary.mjs" >/dev/null 2>&1 || true
|
||||
return "$exit_code"
|
||||
}
|
||||
trap write_summary EXIT
|
||||
|
||||
run_attached() {
|
||||
local base_url="${1:-}"
|
||||
local scope="${2:-full}"
|
||||
if [[ -z "$base_url" ]]; then
|
||||
echo "[visual-matrix][ERROR] attached 模式需要 E2E_BASE_URL" >&2
|
||||
exit 2
|
||||
fi
|
||||
if [[ "$scope" != "full" && "$scope" != "mobile" ]]; then
|
||||
echo "[visual-matrix][ERROR] VISUAL_MATRIX_SCOPE 只能是 full 或 mobile" >&2
|
||||
exit 2
|
||||
fi
|
||||
SUMMARY_BASE_URL="$base_url"
|
||||
|
||||
local specs=(tests/e2e/r6-mobile-unified-design-rollout.spec.ts)
|
||||
if [[ "$scope" == "full" ]]; then
|
||||
specs=(tests/e2e/project-wide-visual.spec.ts "${specs[@]}")
|
||||
fi
|
||||
|
||||
echo ">>> [visual-matrix] baseURL=$base_url issue=$ISSUE_ID scope=$scope"
|
||||
(
|
||||
cd "$CLIENT_DIR"
|
||||
E2E_BASE_URL="$base_url" \
|
||||
E2E_MODE=local \
|
||||
QA_ISSUE_ID="$ISSUE_ID" \
|
||||
QA_VISUAL_OUTPUT_DIR="$ROOT_DIR/output/playwright/${ISSUE_ID}/project-wide" \
|
||||
QA_VISUAL_ARTIFACT_DIR="$REPORT_DIR/project-wide" \
|
||||
MOBILE_VISUAL_OUTPUT_DIR="${ISSUE_ID}/mobile-matrix" \
|
||||
npx playwright test "${specs[@]}" --workers=1 --reporter=list
|
||||
)
|
||||
}
|
||||
|
||||
case "$MODE" in
|
||||
help|-h|--help)
|
||||
usage
|
||||
;;
|
||||
local)
|
||||
QA_ISSUE_ID="$ISSUE_ID" \
|
||||
VISUAL_MATRIX_REPORT_DIR="$REPORT_DIR" \
|
||||
bash "$ROOT_DIR/scripts/qa/run-web-gates.sh" qg6-visual-matrix-local
|
||||
;;
|
||||
attached)
|
||||
run_attached "${E2E_BASE_URL:-}" "${VISUAL_MATRIX_SCOPE:-full}"
|
||||
;;
|
||||
live)
|
||||
run_attached "${E2E_BASE_URL:-https://oa.hyinda.com}" "${VISUAL_MATRIX_SCOPE:-mobile}"
|
||||
;;
|
||||
*)
|
||||
usage >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
在新工单中引用
屏蔽一个用户