Creator App Tests / PR Spam Gate (push) Skipped
Frontend Tests / PR Spam Gate (push) Skipped
NPM Format (website & console) / PR Spam Gate (push) Skipped
Pre-commit Checks / PR Spam Gate (push) Skipped
QwenPaw Creator Plugin Release / check-version (push) Canceled after 0s
QwenPaw Creator Plugin Release / upload-oss (push) Canceled after 0s
Tests / PR Spam Gate (push) Skipped
CodeQL / CodeQL (python) (push) Canceled after 0s
CodeQL / CodeQL (typescript) (push) Canceled after 0s
Creator App Tests / Creator Backend Tests (push) Canceled after 0s
Creator App Tests / Creator UI Build & Tests (push) Canceled after 0s
E2E Smoke Tests / Playwright UI Smoke (push) Canceled after 0s
Frontend Tests / Detect console changes (push) Canceled after 0s
NPM Format (website & console) / website format check (push) Canceled after 0s
NPM Format (website & console) / console format check (push) Canceled after 0s
Pre-commit Checks / Pre-commit (push) Canceled after 0s
QwenPaw Data Plugin Release / check-version (push) Canceled after 0s
Tests / Detect code changes (push) Canceled after 0s
Frontend Tests / Vitest Unit Tests (push) Canceled after 0s
Frontend Tests / Frontend Summary (push) Canceled after 0s
QwenPaw Data Plugin Release / upload-oss (push) Canceled after 0s
Tests / Maintainer Approval (push) Canceled after 0s
Tests / Unit Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - fallback (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p2 (push) Canceled after 0s
Tests / Coverage Report (push) Canceled after 0s
Tests / Test Summary (push) Canceled after 0s
64 lines
2.5 KiB
Bash
Executable File
64 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Unpack, launch the Tauri macOS shell, and wait for the backend to be ready.
|
|
# Outputs BASE_URL to $GITHUB_ENV for subsequent steps.
|
|
set -euo pipefail
|
|
|
|
# 1. Unpack the freshly built Tauri zip.
|
|
echo "[launch_tauri_macos] Unpacking zip..."
|
|
mkdir -p dist/verify-tauri
|
|
unzip -q dist/QwenPaw-Tauri-*-macOS.zip -d dist/verify-tauri
|
|
APP="$(find dist/verify-tauri -maxdepth 3 -name '*.app' -type d | head -1)"
|
|
if [ -z "$APP" ]; then
|
|
echo "::error::Tauri .app not found inside zip"
|
|
exit 1
|
|
fi
|
|
echo "[launch_tauri_macos] Found app: $APP"
|
|
|
|
# 2. Remove macOS quarantine (CI download marks it).
|
|
xattr -dr com.apple.quarantine "$APP" 2>/dev/null || true
|
|
|
|
# 3. Launch the full Tauri shell (matches real user double-click).
|
|
echo "[launch_tauri_macos] Launching Tauri shell..."
|
|
open "$APP"
|
|
echo "[launch_tauri_macos] open exit=$?"
|
|
sleep 3
|
|
echo "[launch_tauri_macos] Process snapshot after launch:"
|
|
ps -ef | grep -iE "qwenpaw|tauri" | grep -v grep || echo " (no matching processes)"
|
|
|
|
# 4. Wait for the sidecar to write the port file and respond.
|
|
# The sidecar writes desktop_port at WORKING_DIR root (~/.qwenpaw),
|
|
# not inside the workspace dir.
|
|
PORT_FILE="$HOME/.qwenpaw/desktop_port"
|
|
PORT=""
|
|
for i in $(seq 1 60); do
|
|
if [ -f "$PORT_FILE" ]; then
|
|
PORT="$(cat "$PORT_FILE" | tr -d '[:space:]')"
|
|
if [ -n "$PORT" ] && curl -sf "http://127.0.0.1:$PORT/api/version" >/dev/null; then
|
|
echo "[launch_tauri_macos] Tauri app ready on port $PORT after ~$((i*2))s"
|
|
break
|
|
fi
|
|
fi
|
|
if [ "$i" = "60" ]; then
|
|
echo "::error::Tauri app did not start within 120s"
|
|
echo "[debug] PORT_FILE=$PORT_FILE exists=$([ -f "$PORT_FILE" ] && echo yes || echo no)"
|
|
echo "[debug] WORKING_DIR (~/.qwenpaw) contents:"
|
|
ls -la "$HOME/.qwenpaw/" 2>/dev/null || echo " (missing)"
|
|
echo "[debug] All qwenpaw-related files under HOME (top 30):"
|
|
find "$HOME/.qwenpaw" -maxdepth 4 -type f 2>/dev/null | head -30 || true
|
|
echo "[debug] desktop.log tail (if exists):"
|
|
tail -50 "$HOME/.qwenpaw/desktop.log" 2>/dev/null || echo " (no desktop.log)"
|
|
echo "[debug] Process list:"
|
|
ps -ef | grep -iE "qwenpaw|tauri" | grep -v grep || echo " (no matching processes)"
|
|
exit 1
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
# 5. Auto-init creates BOOTSTRAP.md during startup. Remove it afterwards so
|
|
# the verifier can drive the agent in normal QA mode.
|
|
rm -f "$HOME/.qwenpaw/workspaces/default/BOOTSTRAP.md"
|
|
|
|
export BASE_URL="http://127.0.0.1:$PORT"
|
|
echo "BASE_URL=$BASE_URL" >> "$GITHUB_ENV"
|
|
echo "$BASE_URL"
|