#!/usr/bin/env bash # # qa-settings-window-macos.sh - Launch PrivateVoice and capture the Settings window. # # Usage: # ./scripts/qa-settings-window-macos.sh [APP_PATH] [OUTPUT_DIR] # set -euo pipefail APP_NAME="PrivateVoice Dictation" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" INFO_PLIST="$PROJECT_DIR/build/darwin/Info.plist" APP_PATH="${1:-/Applications/$APP_NAME.app}" VERSION="$(defaults read "$INFO_PLIST" CFBundleShortVersionString 2>/dev/null || echo "unknown")" BUILD_ID="$(defaults read "$INFO_PLIST" CFBundleVersion 2>/dev/null || date +%Y%m%d.%H%M)" OUTPUT_DIR="${2:-$PROJECT_DIR/build/qa/settings-window-$VERSION-build$BUILD_ID}" SCREENSHOT="$OUTPUT_DIR/settings-input-tab.png" BOUNDS_FILE="$OUTPUT_DIR/settings-window-bounds.txt" fail() { echo "ERROR: $1" >&2 exit 1 } [[ -d "$APP_PATH" ]] || fail "App bundle not found: $APP_PATH" mkdir -p "$OUTPUT_DIR" osascript -e "tell application \"$APP_NAME\" to quit" >/dev/null 2>&1 || true pkill -x "$APP_NAME" >/dev/null 2>&1 || true sleep 1 open "$APP_PATH" osascript < " & quoted form of "$BOUNDS_FILE" end tell end tell APPLESCRIPT BOUNDS="$(cat "$BOUNDS_FILE")" screencapture -x -R"$BOUNDS" "$SCREENSHOT" if [[ ! -s "$SCREENSHOT" ]]; then fail "Screenshot was not created: $SCREENSHOT" fi echo "Settings window screenshot: $SCREENSHOT" echo "Window bounds: $BOUNDS"