验证(08-10-pwa-cross-version-cache-upgrade-validation): 固化PWA跨版本升级回归
这个提交包含在:
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
CLIENT_DIR="$ROOT_DIR/client"
|
||||
TEMP_ROOT="$(mktemp -d "${TMPDIR:-/tmp}/hyb-pwa-cross-version.XXXXXX")"
|
||||
BUILD_A_DIR="$TEMP_ROOT/build-a"
|
||||
BUILD_B_DIR="$TEMP_ROOT/build-b"
|
||||
BUILD_A_LOG="$TEMP_ROOT/build-a.log"
|
||||
BUILD_B_LOG="$TEMP_ROOT/build-b.log"
|
||||
BUILD_A_SHA="111111111111"
|
||||
BUILD_B_SHA="222222222222"
|
||||
|
||||
cleanup() {
|
||||
local original_status="$?"
|
||||
trap - EXIT
|
||||
if [[ -d "$TEMP_ROOT" ]]; then
|
||||
find "$TEMP_ROOT" -depth -delete
|
||||
fi
|
||||
exit "$original_status"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
build_candidate() {
|
||||
local label="$1"
|
||||
local build_sha="$2"
|
||||
local output_dir="$3"
|
||||
local log_file="$4"
|
||||
local build_status=0
|
||||
|
||||
(
|
||||
cd "$CLIENT_DIR"
|
||||
VITE_BUILD_SHA="$build_sha" npx vite build --outDir "$output_dir" --emptyOutDir
|
||||
) >"$log_file" 2>&1 || build_status="$?"
|
||||
|
||||
if [[ "$build_status" -ne 0 ]]; then
|
||||
local log_lines=0
|
||||
log_lines="$(wc -l <"$log_file" | tr -d ' ')"
|
||||
echo "[pwa-cross-version][ERROR] build=${label} exit=${build_status} log_lines=${log_lines}" >&2
|
||||
exit "$build_status"
|
||||
fi
|
||||
|
||||
if [[ ! -f "$output_dir/index.html" || ! -f "$output_dir/sw.js" ]]; then
|
||||
echo "[pwa-cross-version][ERROR] build=${label} required_artifact_missing" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[pwa-cross-version] build=${label} status=PASS"
|
||||
}
|
||||
|
||||
build_candidate "A" "$BUILD_A_SHA" "$BUILD_A_DIR" "$BUILD_A_LOG"
|
||||
build_candidate "B" "$BUILD_B_SHA" "$BUILD_B_DIR" "$BUILD_B_LOG"
|
||||
|
||||
(
|
||||
cd "$CLIENT_DIR"
|
||||
PWA_BUILD_A_DIR="$BUILD_A_DIR" \
|
||||
PWA_BUILD_B_DIR="$BUILD_B_DIR" \
|
||||
PWA_BUILD_A_SHA="$BUILD_A_SHA" \
|
||||
PWA_BUILD_B_SHA="$BUILD_B_SHA" \
|
||||
npx playwright test tests/e2e/pwa-cross-version-upgrade.spec.ts \
|
||||
--workers=1 \
|
||||
--retries=0 \
|
||||
--reporter=list
|
||||
)
|
||||
|
||||
echo "[pwa-cross-version] status=PASS path=A_TO_B_SAME_CONTEXT"
|
||||
在新工单中引用
屏蔽一个用户