42 lines
1.5 KiB
Bash
Executable File
42 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Regenerate Playwright visual regression snapshots.
|
|
# - When Docker is available: runs in the same image as CI (Playwright Noble) for a CI-accurate baseline.
|
|
# - When Docker is not available (e.g. devcontainer): runs Playwright in the current environment;
|
|
# the Linux snapshot may still differ slightly from CI — if CI fails, run this script on the host with Docker.
|
|
set -e
|
|
|
|
SCRIPT_DIR="${BASH_SOURCE%/*}"
|
|
PROJECT_ROOT="${SCRIPT_DIR}/.."
|
|
cd "$PROJECT_ROOT"
|
|
|
|
if command -v docker >/dev/null 2>&1; then
|
|
PLAYWRIGHT_IMAGE="${PLAYWRIGHT_IMAGE:-mcr.microsoft.com/playwright:v1.58.0-noble}"
|
|
echo "Using Docker image: $PLAYWRIGHT_IMAGE (same as CI)"
|
|
echo "Project root: $PROJECT_ROOT"
|
|
echo ""
|
|
|
|
docker run --rm \
|
|
-v "$PROJECT_ROOT:/app" -w /app \
|
|
-e CI=1 \
|
|
"$PLAYWRIGHT_IMAGE" \
|
|
bash -c '
|
|
corepack enable && corepack prepare pnpm@10.28.2 --activate
|
|
pnpm install --frozen-lockfile || pnpm install
|
|
pnpm run build
|
|
npx serve dist -p 4173 &
|
|
sleep 2
|
|
pnpm exec playwright test --update-snapshots
|
|
'
|
|
else
|
|
echo "Docker not found — updating snapshots in the current environment."
|
|
echo "If CI later fails with a snapshot mismatch, run this script on a host with Docker for a CI-accurate baseline."
|
|
echo ""
|
|
|
|
# Unset CI so Playwright config starts the preview server
|
|
unset CI
|
|
pnpm exec playwright test --update-snapshots
|
|
fi
|
|
|
|
echo ""
|
|
echo "Snapshots updated. Commit the changed files under tests/visual.spec.ts-snapshots/ if needed."
|