文件
hyb-oa/scripts/qa/run-oafront3-pc-readonly-visual.sh
T

70 行
2.8 KiB
Bash
可执行文件

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
CLIENT_DIR="$ROOT_DIR/client"
PUBLIC_BASE_URL="${LIVE_SMOKE_BASE_URL:-https://oa.hyinda.com}"
REPORT_DIR="${OAFRONT3_PC_REPORT_DIR:-$ROOT_DIR/artifacts/qa-flow/oafront3-pc-readonly-visual-$(date +%Y%m%d-%H%M%S)}"
OUTPUT_DIR="${OAFRONT3_PC_OUTPUT_DIR:-$ROOT_DIR/output/playwright/oafront3-pc-readonly}"
load_default_env() {
local env_file="${OAFRONT3_ENV_FILE:-$HOME/.hyb-oa/live-smoke.env}"
if [[ "${OAFRONT3_SKIP_ENV_FILE:-0}" == "1" || ! -f "$env_file" ]]; then
return 0
fi
set -a
# shellcheck disable=SC1090
source "$env_file"
set +a
PUBLIC_BASE_URL="${LIVE_SMOKE_BASE_URL:-$PUBLIC_BASE_URL}"
echo "[oafront3] loaded masked live smoke env file"
}
write_fallback_summary() {
local exit_code="$?"
if [[ -f "$REPORT_DIR/summary.json" ]]; then
return "$exit_code"
fi
mkdir -p "$REPORT_DIR"
QA_REPORT_DIR="$REPORT_DIR" \
QA_ISSUE_ID="OAFRONT3-1" \
QA_BASE_URL="$PUBLIC_BASE_URL" \
QA_MODE="pc-readonly-visual-evidence" \
QA_STATUS="FAIL" \
QA_SUMMARY_NOTES="Playwright 未生成 summary.json;查看脚本日志和 playwright-report。" \
node "$ROOT_DIR/scripts/qa/write-qa-summary.mjs" >/dev/null 2>&1 || true
return "$exit_code"
}
run_privacy_smoke() {
local sensitive_pattern='(["'\''"]?(WECOM_[A-Z0-9_]*(SECRET|TOKEN)|[A-Z0-9_]*(TOKEN|SECRET|PASSWORD|ENCODING_AES_KEY|ENCODINGAESKEY|CORP_SECRET|ACCESS_TOKEN)[A-Z0-9_]*)["'\''"]?[[:space:]]*[:=][[:space:]]*["'\''"]?[A-Za-z0-9._:/+=-]{8,}["'\''"]?)|Authorization:[[:space:]]*Bearer[[:space:]]+[A-Za-z0-9._-]{8,}|access_token=[A-Za-z0-9._-]{8,}|1[3-9][0-9]{9}|[[:alnum:]._%+-]+@[[:alnum:].-]+\.[[:alpha:]]{2,}|-----BEGIN|BEGIN [A-Z ]*KEY|"((token|secret|password|EncodingAESKey|encodingAESKey|sp_no|spNo|template_id|templateId|userid|userId|external_userid|externalUserId))"[[:space:]]*:[[:space:]]*"[^"*]{8,}"|\b20[0-9]{12,}\b|"(raw|rawPayload|raw_payload|payload|xml|ciphertext|Encrypt|formValue|formValues|attachments|comments)"[[:space:]]*:'
local matches
matches="$(grep -RInE "$sensitive_pattern" "$REPORT_DIR" || true)"
if [[ -n "$matches" ]]; then
printf '%s\n' "$matches" >&2
echo "[oafront3][FAIL] report privacy smoke matched sensitive pattern" >&2
return 1
fi
echo "[oafront3][PASS] report privacy smoke"
}
trap write_fallback_summary EXIT
load_default_env
mkdir -p "$REPORT_DIR" "$OUTPUT_DIR"
echo ">>> [oafront3] PC readonly visual evidence base=$PUBLIC_BASE_URL"
(
cd "$CLIENT_DIR"
E2E_MODE=live \
LIVE_SMOKE_BASE_URL="$PUBLIC_BASE_URL" \
OAFRONT3_PC_REPORT_DIR="$REPORT_DIR" \
OAFRONT3_PC_OUTPUT_DIR="$OUTPUT_DIR" \
npx playwright test tests/e2e/oafront3-pc-readonly-visual.spec.ts --workers=1 --reporter=list
)
run_privacy_smoke
echo "[oafront3] summary=$REPORT_DIR/summary.json"