116 行
3.5 KiB
Bash
可执行文件
116 行
3.5 KiB
Bash
可执行文件
#!/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
|