fix: 补齐候选诊断环境与证据保护(09-06-release-gate-integrity)
这个提交包含在:
+58
-2
@@ -4,8 +4,17 @@ set -euo pipefail
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
SERVER_DIR="$ROOT_DIR/server"
|
||||
CLIENT_DIR="$ROOT_DIR/client"
|
||||
source "$ROOT_DIR/scripts/qa/pwa-cross-version-fixture.sh"
|
||||
|
||||
MODE="${1:-}"
|
||||
if [[ "$MODE" == "full-local" || "$MODE" == "full-local-diagnostic" ]]; then
|
||||
if [[ -z "${QA_ENVIRONMENT_CONTEXT:-}" ]]; then
|
||||
exec node "$ROOT_DIR/scripts/qa/full-local-environment.mjs" "$MODE"
|
||||
fi
|
||||
node "$ROOT_DIR/scripts/qa/full-local-environment.mjs" verify
|
||||
elif [[ "$MODE" == "__full-local-diagnostic-stage" ]]; then
|
||||
node "$ROOT_DIR/scripts/qa/full-local-environment.mjs" verify
|
||||
fi
|
||||
QA_HOST="${QA_HOST:-127.0.0.1}"
|
||||
QA_PORT_INPUT="${QA_PORT:-}"
|
||||
QA_PORT="${QA_PORT_INPUT:-3000}"
|
||||
@@ -56,6 +65,10 @@ Usage: bash scripts/qa/run-web-gates.sh <smoke-local|full-local|auth-security-lo
|
||||
QA_DB_CLIENT=host|docker
|
||||
QA_DB_DOCKER_CONTAINER / QA_DOCKER_USE_SG=1
|
||||
QA_DB_PREFIX / QA_DB_NAME / QA_KEEP_DB
|
||||
QA_FULL_REPORT_DIR full-local 独立发现、构建日志与浏览器结果目录
|
||||
full-local-diagnostic 仅本地诊断,始终 PARTIAL/退出 2,无发布资格
|
||||
QA_DIAGNOSTIC_REASON / QA_DIAGNOSTIC_OPERATOR / QA_DIAGNOSTIC_APPROVAL_REF
|
||||
QA_DIAGNOSTIC_REPORT_DIR 本次诊断专用空目录;禁止覆盖历史报告
|
||||
QA_SKIP_CLIENT_BUILD=1 复用已有 client/dist(低内存远程机排查视觉问题时使用)
|
||||
QA_ISSUE_ID / VISUAL_MATRIX_REPORT_DIR
|
||||
LIVE_SMOKE_BASE_URL / LIVE_SMOKE_ADMIN_* / LIVE_SMOKE_EMPLOYEE_* / LIVE_EXPECT_WECOM_STATUS
|
||||
@@ -283,6 +296,9 @@ qa_cleanup() {
|
||||
if ! qa_cleanup_server; then
|
||||
cleanup_status=1
|
||||
fi
|
||||
if ! pwa_cleanup_fixture; then
|
||||
cleanup_status=1
|
||||
fi
|
||||
if [[ "$QA_DB_CREATED" == "1" && "$MODE" != "smoke-live" ]]; then
|
||||
if ! qa_dropdb; then
|
||||
cleanup_status=1
|
||||
@@ -534,10 +550,31 @@ qa_run_smoke_local() {
|
||||
)
|
||||
}
|
||||
|
||||
qa_prepare_full_inputs() {
|
||||
QA_FULL_REPORT_DIR="${QA_FULL_REPORT_DIR:-$ROOT_DIR/artifacts/qa-flow/full-local/$QA_RUN_ID}"
|
||||
mkdir -p "$QA_FULL_REPORT_DIR"
|
||||
QA_FULL_REPORT_DIR="$(cd "$QA_FULL_REPORT_DIR" && pwd)"
|
||||
|
||||
echo ">>> 准备 full-local PWA 双构建输入"
|
||||
pwa_prepare_fixture "$CLIENT_DIR" "$QA_FULL_REPORT_DIR"
|
||||
echo ">>> 发现并核对全部非 manual Playwright spec"
|
||||
(
|
||||
cd "$CLIENT_DIR"
|
||||
pwa_with_fixture env E2E_MODE=local \
|
||||
PLAYWRIGHT_JSON_OUTPUT_FILE="$QA_FULL_REPORT_DIR/discovery.json" \
|
||||
QA_VISUAL_OUTPUT_DIR="$QA_FULL_REPORT_DIR/visual" \
|
||||
npx playwright test --list --retries=0 --reporter=json \
|
||||
> "$QA_FULL_REPORT_DIR/discovery.stdout.log" 2> "$QA_FULL_REPORT_DIR/discovery.stderr.log"
|
||||
)
|
||||
node "$ROOT_DIR/scripts/qa/verify-full-local-discovery.mjs" "$QA_FULL_REPORT_DIR/discovery.json" \
|
||||
> "$QA_FULL_REPORT_DIR/discovery-coverage.json"
|
||||
}
|
||||
|
||||
qa_run_full_local() {
|
||||
qa_select_port
|
||||
export JOBS_ENABLED="${JOBS_ENABLED:-false}"
|
||||
qa_export_app_env
|
||||
qa_prepare_full_inputs
|
||||
qa_prepare_db
|
||||
|
||||
echo ">>> 执行 server Prisma 校验"
|
||||
@@ -578,11 +615,22 @@ qa_run_full_local() {
|
||||
export JOBS_ENABLED="${JOBS_ENABLED_FOR_E2E:-true}"
|
||||
qa_start_server
|
||||
|
||||
qa_run_full_browser
|
||||
}
|
||||
|
||||
qa_run_full_browser() {
|
||||
if [[ -n "${QA_DIAGNOSTIC_STAGE:-}" ]]; then QA_DIAGNOSTIC_PHASE=environment; fi
|
||||
node "$ROOT_DIR/scripts/qa/browser-environment-probe.mjs" guest "$QA_BASE_URL"
|
||||
node "$ROOT_DIR/scripts/qa/full-local-environment.mjs" report-guest > "$QA_FULL_REPORT_DIR/environment-before-browser.json"
|
||||
if [[ -n "${QA_DIAGNOSTIC_STAGE:-}" ]]; then QA_DIAGNOSTIC_PHASE=test; fi
|
||||
echo ">>> 执行 Playwright full E2E"
|
||||
(
|
||||
cd "$CLIENT_DIR"
|
||||
rm -rf test-results playwright-report
|
||||
E2E_MODE=local npm run test:e2e:full
|
||||
pwa_with_fixture env E2E_MODE=local \
|
||||
PLAYWRIGHT_JSON_OUTPUT_FILE="$QA_FULL_REPORT_DIR/playwright-results.json" \
|
||||
QA_VISUAL_OUTPUT_DIR="$QA_FULL_REPORT_DIR/visual" \
|
||||
PLAYWRIGHT_HTML_OUTPUT_DIR="$QA_FULL_REPORT_DIR/playwright-report" PLAYWRIGHT_HTML_OPEN=never \
|
||||
npm run test:e2e:full -- "$@" --retries=0 --reporter=list,json,html --output="$QA_FULL_REPORT_DIR/test-results"
|
||||
)
|
||||
}
|
||||
|
||||
@@ -759,6 +807,14 @@ case "$MODE" in
|
||||
trap qa_cleanup EXIT
|
||||
qa_run_smoke_local
|
||||
;;
|
||||
full-local-diagnostic)
|
||||
qa_require_cmd node
|
||||
node "$ROOT_DIR/scripts/qa/full-local-diagnostic.mjs"
|
||||
;;
|
||||
__full-local-diagnostic-stage)
|
||||
source "$ROOT_DIR/scripts/qa/full-local-diagnostic-stage.sh"
|
||||
qa_run_diagnostic_stage "${2:-}"
|
||||
;;
|
||||
full-local)
|
||||
qa_require_cmd curl
|
||||
qa_require_db_client
|
||||
|
||||
在新工单中引用
屏蔽一个用户