From d974ceac21d571afb5c30ac05eb725272c5e2168 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 15 Apr 2026 03:13:07 +0100 Subject: [PATCH] test(e2e): harden Parallels smoke probes --- scripts/e2e/parallels-linux-smoke.sh | 4 +++- scripts/e2e/parallels-macos-smoke.sh | 12 +++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/e2e/parallels-linux-smoke.sh b/scripts/e2e/parallels-linux-smoke.sh index c5ac41c06ea..f95626d0758 100644 --- a/scripts/e2e/parallels-linux-smoke.sh +++ b/scripts/e2e/parallels-linux-smoke.sh @@ -693,7 +693,9 @@ EOF } verify_bad_plugin_diagnostic() { - guest_exec bash -lc "grep -F 'failed to load setup entry' /tmp/openclaw-parallels-linux-gateway.log" + guest_bash_script <<'EOF' +grep -F "failed to load setup entry" /tmp/openclaw-parallels-linux-gateway.log +EOF } start_gateway_background() { diff --git a/scripts/e2e/parallels-macos-smoke.sh b/scripts/e2e/parallels-macos-smoke.sh index ade00ded523..376f9ecba59 100644 --- a/scripts/e2e/parallels-macos-smoke.sh +++ b/scripts/e2e/parallels-macos-smoke.sh @@ -53,7 +53,7 @@ TIMEOUT_ONBOARD_S=180 TIMEOUT_GATEWAY_S=120 TIMEOUT_AGENT_S=240 TIMEOUT_PERMISSION_S=60 -TIMEOUT_DASHBOARD_S=60 +TIMEOUT_DASHBOARD_S=90 TIMEOUT_SNAPSHOT_S=180 TIMEOUT_CURRENT_USER_PRLCTL_S=45 TIMEOUT_DISCORD_S=180 @@ -1410,6 +1410,7 @@ done } grep -F 'OpenClaw Control' /tmp/openclaw-dashboard-smoke.html >/dev/null grep -F '' /tmp/openclaw-dashboard-smoke.html >/dev/null +echo "dashboard HTML ready at \$dashboard_http_url" if [ "\$headless_flag" = "1" ]; then exit 0 fi @@ -1418,10 +1419,11 @@ open -a Safari "\$dashboard_url" deadline=\$((SECONDS + 20)) while [ \$SECONDS -lt \$deadline ]; do # Tahoe can hand dashboard sockets to WebKit helpers even after the Safari - # app process exits, so require a non-node client connection rather than a - # long-lived Safari process specifically. - if lsof -nPiTCP:"\$dashboard_port" -sTCP:ESTABLISHED 2>/dev/null \ - | awk 'NR > 1 && \$1 != "node" { found = 1 } END { exit found ? 0 : 1 }'; then + # app process exits. Avoid lsof here because it can stall under Parallels; + # an established localhost client socket proves the browser reached the UI. + if netstat -anv -p tcp 2>/dev/null \ + | awk -v port=".\$dashboard_port" '\$4 ~ port "\$" && \$6 == "ESTABLISHED" { found = 1 } END { exit found ? 0 : 1 }'; then + echo "dashboard browser connection ready on port \$dashboard_port" exit 0 fi sleep 1