#!/usr/bin/env bash # Playwright codegen headed 录制 Flock Freight get-a-quote set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" export RPA_HEADLESS=false DEFAULT_URL="https://app.flockfreight.com/get-a-quote" DEFAULT_LOGIN_URL="https://app.flockfreight.com/login" usage() { cat <.js .rpa/flock-storage.json 产出(登录后): .rpa/recordings/flock-logged-in-<时间戳>.js .rpa/flock-logged-in-storage.json 推荐: npm run record:flock -- --logged-in EOF } if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then usage exit 0 fi MODE="anonymous" START_URL="" if [[ "${1:-}" == "--logged-in" || "${1:-}" == "--login" ]]; then MODE="logged-in" START_URL="${2:-}" elif [[ -n "${1:-}" ]]; then START_URL="$1" fi OUTPUT_DIR=".rpa/recordings" if [[ "$MODE" == "logged-in" ]]; then STORAGE_PATH="${FLOCK_LOGGED_IN_STORAGE_STATE_PATH:-.rpa/flock-logged-in-storage.json}" PREFIX="flock-logged-in" START_URL="${START_URL:-$DEFAULT_LOGIN_URL}" else STORAGE_PATH="${FLOCK_STORAGE_STATE_PATH:-.rpa/flock-storage.json}" PREFIX="flock" START_URL="${START_URL:-$DEFAULT_URL}" fi mkdir -p "$OUTPUT_DIR" "$(dirname "$STORAGE_PATH")" TIMESTAMP="$(date +%Y%m%d-%H%M%S)" OUTPUT_FILE="${OUTPUT_DIR}/${PREFIX}-${TIMESTAMP}.js" echo "=== Flock Freight RPA 录制(headed / ${MODE})===" echo "RPA_HEADLESS=${RPA_HEADLESS}" echo "起始 URL: ${START_URL}" echo "脚本产出: ${OUTPUT_FILE}" echo "storageState: ${STORAGE_PATH}" if [[ "$MODE" == "logged-in" ]]; then echo "SOP: docs/rpa-flock-logged-in-sop.md" fi echo "" ARGS=( codegen --target=javascript -o "$OUTPUT_FILE" --save-storage="$STORAGE_PATH" ) if [[ -f "$STORAGE_PATH" ]]; then ARGS+=("--load-storage=$STORAGE_PATH") echo "已加载已有 storageState: ${STORAGE_PATH}" fi ARGS+=("$START_URL") exec env RPA_HEADLESS=false npx playwright "${ARGS[@]}"