mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 11:20:43 +00:00
test(plugins): harden package plugin e2e lanes
This commit is contained in:
@@ -36,18 +36,20 @@ DOCKER_ENV_ARGS=(
|
||||
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$OPENCLAW_TEST_STATE_SCRIPT_B64"
|
||||
-e "KITCHEN_SINK_SCENARIOS=$KITCHEN_SINK_SCENARIOS"
|
||||
)
|
||||
for env_name in \
|
||||
OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB \
|
||||
OPENCLAW_CLAWHUB_URL \
|
||||
CLAWHUB_URL \
|
||||
OPENCLAW_CLAWHUB_TOKEN \
|
||||
CLAWHUB_TOKEN \
|
||||
CLAWHUB_AUTH_TOKEN; do
|
||||
env_value="${!env_name:-}"
|
||||
if [[ -n "$env_value" && "$env_value" != "undefined" && "$env_value" != "null" ]]; then
|
||||
DOCKER_ENV_ARGS+=(-e "$env_name")
|
||||
fi
|
||||
done
|
||||
if [[ "${OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB:-0}" = "1" ]]; then
|
||||
for env_name in \
|
||||
OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB \
|
||||
OPENCLAW_CLAWHUB_URL \
|
||||
CLAWHUB_URL \
|
||||
OPENCLAW_CLAWHUB_TOKEN \
|
||||
CLAWHUB_TOKEN \
|
||||
CLAWHUB_AUTH_TOKEN; do
|
||||
env_value="${!env_name:-}"
|
||||
if [[ -n "$env_value" && "$env_value" != "undefined" && "$env_value" != "null" ]]; then
|
||||
DOCKER_ENV_ARGS+=(-e "$env_name")
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Running kitchen-sink plugin Docker E2E..."
|
||||
docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
|
||||
@@ -112,11 +112,17 @@ run_failure_scenario() {
|
||||
assert_kitchen_sink_removed
|
||||
}
|
||||
|
||||
if [[ "$KITCHEN_SINK_SCENARIOS" == *"clawhub:"* ]] &&
|
||||
[[ "${OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB:-0}" != "1" ]] &&
|
||||
[[ -z "${OPENCLAW_CLAWHUB_URL:-}" && -z "${CLAWHUB_URL:-}" ]]; then
|
||||
clawhub_fixture_dir="$(mktemp -d "/tmp/openclaw-kitchen-sink-clawhub.XXXXXX")"
|
||||
start_kitchen_sink_clawhub_fixture_server "$clawhub_fixture_dir"
|
||||
if [[ "$KITCHEN_SINK_SCENARIOS" == *"clawhub:"* ]]; then
|
||||
if [[ "${OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB:-0}" = "1" ]]; then
|
||||
export OPENCLAW_CLAWHUB_URL="${OPENCLAW_CLAWHUB_URL:-${CLAWHUB_URL:-https://clawhub.ai}}"
|
||||
else
|
||||
if [[ -n "${OPENCLAW_CLAWHUB_URL:-}" || -n "${CLAWHUB_URL:-}" ]]; then
|
||||
echo "Ignoring ambient ClawHub URL for fixture-mode kitchen-sink E2E; set OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB=1 for live ClawHub."
|
||||
fi
|
||||
unset OPENCLAW_CLAWHUB_URL CLAWHUB_URL
|
||||
clawhub_fixture_dir="$(mktemp -d "/tmp/openclaw-kitchen-sink-clawhub.XXXXXX")"
|
||||
start_kitchen_sink_clawhub_fixture_server "$clawhub_fixture_dir"
|
||||
fi
|
||||
fi
|
||||
|
||||
scenario_count=0
|
||||
|
||||
@@ -38,8 +38,12 @@ run_plugins_clawhub_scenario() {
|
||||
if [[ "${OPENCLAW_PLUGINS_E2E_LIVE_CLAWHUB:-0}" = "1" ]]; then
|
||||
export OPENCLAW_CLAWHUB_URL="${OPENCLAW_CLAWHUB_URL:-${CLAWHUB_URL:-https://clawhub.ai}}"
|
||||
export NPM_CONFIG_REGISTRY="${OPENCLAW_PLUGINS_E2E_LIVE_NPM_REGISTRY:-https://registry.npmjs.org/}"
|
||||
elif [[ -z "${OPENCLAW_CLAWHUB_URL:-}" && -z "${CLAWHUB_URL:-}" ]]; then
|
||||
else
|
||||
# Keep the release-path smoke hermetic; live ClawHub can rate-limit CI.
|
||||
if [[ -n "${OPENCLAW_CLAWHUB_URL:-}" || -n "${CLAWHUB_URL:-}" ]]; then
|
||||
echo "Ignoring ambient ClawHub URL for fixture-mode plugin E2E; set OPENCLAW_PLUGINS_E2E_LIVE_CLAWHUB=1 for live ClawHub."
|
||||
fi
|
||||
unset OPENCLAW_CLAWHUB_URL CLAWHUB_URL
|
||||
clawhub_fixture_dir="$(mktemp -d "/tmp/openclaw-clawhub-fixture.XXXXXX")"
|
||||
start_clawhub_fixture_server "$clawhub_fixture_dir"
|
||||
fi
|
||||
|
||||
@@ -105,7 +105,12 @@ openclaw_e2e_install_package /tmp/openclaw-install.log
|
||||
|
||||
command -v openclaw >/dev/null
|
||||
package_root="$(openclaw_e2e_package_root)"
|
||||
openclaw_e2e_assert_package_extensions "$package_root" telegram discord
|
||||
if [ -d "$package_root/dist/extensions/$CHANNEL" ]; then
|
||||
CHANNEL_PACKAGE_MODE="bundled"
|
||||
else
|
||||
CHANNEL_PACKAGE_MODE="external"
|
||||
echo "$CHANNEL is not packaged with core OpenClaw; expecting channel selection to install it on demand."
|
||||
fi
|
||||
|
||||
mock_pid="$(openclaw_e2e_start_mock_openai "$MOCK_PORT" /tmp/openclaw-mock-openai.log)"
|
||||
openclaw_e2e_wait_mock_openai "$MOCK_PORT"
|
||||
@@ -134,7 +139,11 @@ node scripts/e2e/lib/npm-onboard-channel-agent/assertions.mjs assert-channel-con
|
||||
|
||||
echo "Running doctor after channel activation..."
|
||||
openclaw doctor --repair --non-interactive >/tmp/openclaw-doctor.log 2>&1
|
||||
openclaw_e2e_assert_dep_absent "$DEP_SENTINEL" "$HOME/.openclaw"
|
||||
if [ "$CHANNEL_PACKAGE_MODE" = "external" ]; then
|
||||
openclaw_e2e_assert_dep_present "$DEP_SENTINEL" "$HOME/.openclaw"
|
||||
else
|
||||
openclaw_e2e_assert_dep_absent "$DEP_SENTINEL" "$HOME/.openclaw"
|
||||
fi
|
||||
|
||||
echo "Running local agent turn against mocked OpenAI..."
|
||||
openclaw agent --local \
|
||||
|
||||
@@ -16,17 +16,25 @@ for env_name in \
|
||||
OPENCLAW_PLUGINS_E2E_CLAWHUB \
|
||||
OPENCLAW_PLUGINS_E2E_LIVE_CLAWHUB \
|
||||
OPENCLAW_PLUGINS_E2E_CLAWHUB_SPEC \
|
||||
OPENCLAW_PLUGINS_E2E_CLAWHUB_ID \
|
||||
OPENCLAW_CLAWHUB_URL \
|
||||
CLAWHUB_URL \
|
||||
OPENCLAW_CLAWHUB_TOKEN \
|
||||
CLAWHUB_TOKEN \
|
||||
CLAWHUB_AUTH_TOKEN; do
|
||||
OPENCLAW_PLUGINS_E2E_CLAWHUB_ID; do
|
||||
env_value="${!env_name:-}"
|
||||
if [[ -n "$env_value" && "$env_value" != "undefined" && "$env_value" != "null" ]]; then
|
||||
DOCKER_ENV_ARGS+=(-e "$env_name")
|
||||
fi
|
||||
done
|
||||
if [[ "${OPENCLAW_PLUGINS_E2E_LIVE_CLAWHUB:-0}" = "1" ]]; then
|
||||
for env_name in \
|
||||
OPENCLAW_CLAWHUB_URL \
|
||||
CLAWHUB_URL \
|
||||
OPENCLAW_CLAWHUB_TOKEN \
|
||||
CLAWHUB_TOKEN \
|
||||
CLAWHUB_AUTH_TOKEN; do
|
||||
env_value="${!env_name:-}"
|
||||
if [[ -n "$env_value" && "$env_value" != "undefined" && "$env_value" != "null" ]]; then
|
||||
DOCKER_ENV_ARGS+=(-e "$env_name")
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Running plugins Docker E2E..."
|
||||
docker_e2e_run_logged_with_harness plugins-run "${DOCKER_ENV_ARGS[@]}" "$IMAGE_NAME" bash scripts/e2e/lib/plugins/sweep.sh
|
||||
|
||||
@@ -170,6 +170,11 @@ export const mainLanes = [
|
||||
"OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:npm-onboard-channel-agent",
|
||||
{ resources: ["service"], stateScenario: "empty", weight: 3 },
|
||||
),
|
||||
npmLane(
|
||||
"npm-onboard-discord-channel-agent",
|
||||
"OPENCLAW_NPM_ONBOARD_CHANNEL=discord OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:npm-onboard-channel-agent",
|
||||
{ resources: ["service"], stateScenario: "empty", weight: 3 },
|
||||
),
|
||||
serviceLane("gateway-network", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:gateway-network"),
|
||||
serviceLane(
|
||||
"agents-delete-shared-workspace",
|
||||
@@ -475,6 +480,11 @@ const releasePathPackageUpdateCoreLanes = [
|
||||
"OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:npm-onboard-channel-agent",
|
||||
{ resources: ["service"], stateScenario: "empty", weight: 3 },
|
||||
),
|
||||
npmLane(
|
||||
"npm-onboard-discord-channel-agent",
|
||||
"OPENCLAW_NPM_ONBOARD_CHANNEL=discord OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:npm-onboard-channel-agent",
|
||||
{ resources: ["service"], stateScenario: "empty", weight: 3 },
|
||||
),
|
||||
npmLane("doctor-switch", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:doctor-switch", {
|
||||
stateScenario: "empty",
|
||||
weight: 3,
|
||||
|
||||
@@ -23,6 +23,16 @@ const pluginPrereleaseDockerLanes = Object.freeze([
|
||||
lane: "npm-onboard-channel-agent",
|
||||
surfaces: ["package-artifact", "gateway-bootstrap", "status-diagnostics"],
|
||||
},
|
||||
{
|
||||
lane: "npm-onboard-discord-channel-agent",
|
||||
surfaces: [
|
||||
"package-artifact",
|
||||
"external-plugins",
|
||||
"installed-plugin-deps",
|
||||
"gateway-bootstrap",
|
||||
"status-diagnostics",
|
||||
],
|
||||
},
|
||||
{
|
||||
lane: "doctor-switch",
|
||||
surfaces: ["package-artifact", "doctor-fix"],
|
||||
|
||||
Reference in New Issue
Block a user