From 2290adbf579ddc7f401833feb6b56591153fa440 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 28 Apr 2026 19:19:47 +0100 Subject: [PATCH] test: reuse Docker test-state in more lanes --- scripts/e2e/lib/bundled-channel/channel.sh | 5 +- .../lib/bundled-channel/disabled-config.sh | 5 +- .../e2e/lib/bundled-channel/load-failure.sh | 5 +- .../e2e/lib/bundled-channel/setup-entry.sh | 5 +- scripts/e2e/lib/bundled-channel/update.sh | 5 +- .../e2e/openai-web-search-minimal-docker.sh | 86 ++++++++++--------- scripts/e2e/plugins-docker.sh | 9 +- scripts/lib/docker-e2e-scenarios.mjs | 17 +++- test/scripts/docker-e2e-plan.test.ts | 20 +++++ 9 files changed, 103 insertions(+), 54 deletions(-) diff --git a/scripts/e2e/lib/bundled-channel/channel.sh b/scripts/e2e/lib/bundled-channel/channel.sh index 4226b7df5b0..860473a0183 100644 --- a/scripts/e2e/lib/bundled-channel/channel.sh +++ b/scripts/e2e/lib/bundled-channel/channel.sh @@ -7,18 +7,21 @@ run_channel_scenario() { local channel="$1" local dep_sentinel="$2" local run_log + local state_script_b64 run_log="$(docker_e2e_run_log "bundled-channel-deps-$channel")" + state_script_b64="$(docker_e2e_test_state_shell_b64 "bundled-channel-deps-$channel" empty)" echo "Running bundled $channel runtime deps Docker E2E..." if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \ -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \ -e OPENCLAW_CHANNEL_UNDER_TEST="$channel" \ -e OPENCLAW_DEP_SENTINEL="$dep_sentinel" \ + -e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \ "${DOCKER_E2E_PACKAGE_ARGS[@]}" \ -i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF' set -euo pipefail -export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-deps.XXXXXX")" +eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)" export NPM_CONFIG_PREFIX="$HOME/.npm-global" export PATH="$NPM_CONFIG_PREFIX/bin:$PATH" export OPENAI_API_KEY="sk-openclaw-bundled-channel-deps-e2e" diff --git a/scripts/e2e/lib/bundled-channel/disabled-config.sh b/scripts/e2e/lib/bundled-channel/disabled-config.sh index e0139681805..853d401bfcf 100644 --- a/scripts/e2e/lib/bundled-channel/disabled-config.sh +++ b/scripts/e2e/lib/bundled-channel/disabled-config.sh @@ -5,16 +5,19 @@ run_disabled_config_scenario() { local run_log + local state_script_b64 run_log="$(docker_e2e_run_log bundled-channel-disabled-config)" + state_script_b64="$(docker_e2e_test_state_shell_b64 bundled-channel-disabled-config empty)" echo "Running bundled channel disabled-config runtime deps Docker E2E..." if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \ -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \ + -e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \ "${DOCKER_E2E_PACKAGE_ARGS[@]}" \ -i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF' set -euo pipefail -export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-disabled-config.XXXXXX")" +eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)" export NPM_CONFIG_PREFIX="$HOME/.npm-global" export PATH="$NPM_CONFIG_PREFIX/bin:$PATH" export OPENCLAW_NO_ONBOARD=1 diff --git a/scripts/e2e/lib/bundled-channel/load-failure.sh b/scripts/e2e/lib/bundled-channel/load-failure.sh index fad53419a3a..2e8728a8562 100644 --- a/scripts/e2e/lib/bundled-channel/load-failure.sh +++ b/scripts/e2e/lib/bundled-channel/load-failure.sh @@ -5,16 +5,19 @@ run_load_failure_scenario() { local run_log + local state_script_b64 run_log="$(docker_e2e_run_log bundled-channel-load-failure)" + state_script_b64="$(docker_e2e_test_state_shell_b64 bundled-channel-load-failure empty)" echo "Running bundled channel load-failure isolation Docker E2E..." if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \ -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \ + -e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \ "${DOCKER_E2E_PACKAGE_ARGS[@]}" \ -i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF' set -euo pipefail -export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-load-failure.XXXXXX")" +eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)" export NPM_CONFIG_PREFIX="$HOME/.npm-global" export PATH="$NPM_CONFIG_PREFIX/bin:$PATH" export OPENCLAW_NO_ONBOARD=1 diff --git a/scripts/e2e/lib/bundled-channel/setup-entry.sh b/scripts/e2e/lib/bundled-channel/setup-entry.sh index 53e767aa186..57756e12b48 100644 --- a/scripts/e2e/lib/bundled-channel/setup-entry.sh +++ b/scripts/e2e/lib/bundled-channel/setup-entry.sh @@ -5,16 +5,19 @@ run_setup_entry_scenario() { local run_log + local state_script_b64 run_log="$(docker_e2e_run_log bundled-channel-setup-entry)" + state_script_b64="$(docker_e2e_test_state_shell_b64 bundled-channel-setup-entry empty)" echo "Running bundled channel setup-entry runtime deps Docker E2E..." if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \ -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \ + -e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \ "${DOCKER_E2E_PACKAGE_ARGS[@]}" \ -i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF' set -euo pipefail -export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-setup-entry.XXXXXX")" +eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)" export NPM_CONFIG_PREFIX="$HOME/.npm-global" export PATH="$NPM_CONFIG_PREFIX/bin:$PATH" export OPENCLAW_NO_ONBOARD=1 diff --git a/scripts/e2e/lib/bundled-channel/update.sh b/scripts/e2e/lib/bundled-channel/update.sh index 89258903289..50e66dafd12 100644 --- a/scripts/e2e/lib/bundled-channel/update.sh +++ b/scripts/e2e/lib/bundled-channel/update.sh @@ -5,18 +5,21 @@ run_update_scenario() { local run_log + local state_script_b64 run_log="$(docker_e2e_run_log bundled-channel-update)" + state_script_b64="$(docker_e2e_test_state_shell_b64 bundled-channel-update empty)" echo "Running bundled channel runtime deps Docker update E2E..." if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \ -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \ -e OPENCLAW_BUNDLED_CHANNEL_UPDATE_BASELINE_VERSION="$UPDATE_BASELINE_VERSION" \ -e "OPENCLAW_BUNDLED_CHANNEL_UPDATE_TARGETS=${OPENCLAW_BUNDLED_CHANNEL_UPDATE_TARGETS:-telegram,discord,slack,feishu,memory-lancedb,acpx}" \ + -e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \ "${DOCKER_E2E_PACKAGE_ARGS[@]}" \ -i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF' set -euo pipefail -export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-update.XXXXXX")" +eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)" export NPM_CONFIG_PREFIX="$HOME/.npm-global" export PATH="$NPM_CONFIG_PREFIX/bin:$PATH" export OPENAI_API_KEY="sk-openclaw-bundled-channel-update-e2e" diff --git a/scripts/e2e/openai-web-search-minimal-docker.sh b/scripts/e2e/openai-web-search-minimal-docker.sh index 1ffb61df73c..4c169164d5b 100755 --- a/scripts/e2e/openai-web-search-minimal-docker.sh +++ b/scripts/e2e/openai-web-search-minimal-docker.sh @@ -7,27 +7,31 @@ source "$ROOT_DIR/scripts/lib/docker-e2e-image.sh" IMAGE_NAME="$(docker_e2e_resolve_image "openclaw-openai-web-search-minimal-e2e" OPENCLAW_OPENAI_WEB_SEARCH_MINIMAL_E2E_IMAGE)" SKIP_BUILD="${OPENCLAW_OPENAI_WEB_SEARCH_MINIMAL_E2E_SKIP_BUILD:-0}" PORT="18789" -MOCK_PORT="19191" +MOCK_PORT="80" TOKEN="openai-web-search-minimal-e2e-$$" docker_e2e_build_or_reuse "$IMAGE_NAME" openai-web-search-minimal "$ROOT_DIR/scripts/e2e/Dockerfile" "$ROOT_DIR" "" "$SKIP_BUILD" +OPENCLAW_TEST_STATE_SCRIPT_B64="$(docker_e2e_test_state_shell_b64 openai-web-search-minimal empty)" echo "Running OpenAI web_search minimal reasoning Docker E2E..." run_logged openai-web-search-minimal docker run --rm \ + --add-host api.openai.com:127.0.0.1 \ -e "OPENCLAW_GATEWAY_TOKEN=$TOKEN" \ -e "OPENAI_API_KEY=sk-openclaw-web-search-minimal-e2e" \ - -e "BRAVE_API_KEY=brave-openclaw-web-search-minimal-e2e" \ + -e "OPENCLAW_TEST_STATE_SCRIPT_B64=$OPENCLAW_TEST_STATE_SCRIPT_B64" \ -e "PORT=$PORT" \ -e "MOCK_PORT=$MOCK_PORT" \ -i "$IMAGE_NAME" bash -s <<'EOF' set -euo pipefail -export HOME="$(mktemp -d "/tmp/openclaw-openai-web-search-minimal.XXXXXX")" -export OPENCLAW_STATE_DIR="$HOME/.openclaw" +eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)" export OPENCLAW_SKIP_CHANNELS=1 export OPENCLAW_SKIP_GMAIL_WATCHER=1 export OPENCLAW_SKIP_CRON=1 export OPENCLAW_SKIP_CANVAS_HOST=1 +export OPENCLAW_SKIP_BROWSER_CONTROL_SERVER=1 +export OPENCLAW_SKIP_ACPX_RUNTIME=1 +export OPENCLAW_SKIP_ACPX_RUNTIME_PROBE=1 PORT="${PORT:?missing PORT}" MOCK_PORT="${MOCK_PORT:?missing MOCK_PORT}" @@ -126,7 +130,7 @@ cat >"$OPENCLAW_STATE_DIR/openclaw.json" <"$OPENCLAW_STATE_DIR/openclaw.json" </dev/null cat >/tmp/openclaw-openai-web-search-minimal-client.mjs <<'NODE' -import { execFileSync } from "node:child_process"; +import { readdirSync } from "node:fs"; +import { pathToFileURL } from "node:url"; + +async function loadCallGateway() { + const candidates = readdirSync("/app/dist") + .filter((name) => /^call(?:\.runtime)?-[A-Za-z0-9_-]+\.js$/.test(name)) + .sort(); + for (const name of candidates) { + const mod = await import(pathToFileURL(`/app/dist/${name}`).href); + if (typeof mod.callGateway === "function") return mod.callGateway; + } + throw new Error(`unable to find callGateway export in /app/dist (${candidates.join(", ")})`); +} + +const callGateway = await loadCallGateway(); -const entry = process.env.OPENCLAW_ENTRY; const port = process.env.PORT; const token = process.env.OPENCLAW_GATEWAY_TOKEN; const mode = process.argv[2]; @@ -372,40 +382,32 @@ const message = : "Return exactly OPENCLAW_SCHEMA_E2E_OK."; const id = mode === "reject" ? "schema-reject" : "schema-success"; -if (!entry || !port || !token) throw new Error("missing OPENCLAW_ENTRY/PORT/OPENCLAW_GATEWAY_TOKEN"); +if (!port || !token) throw new Error("missing PORT/OPENCLAW_GATEWAY_TOKEN"); -const gatewayArgs = [ - entry, - "gateway", - "call", - "--url", - `ws://127.0.0.1:${port}`, - "--token", - token, - "--timeout", - "240000", - "--expect-final", - "--json", -]; - -function gatewayAgent(params) { +async function gatewayAgent(params) { try { return { ok: true, - value: JSON.parse(execFileSync("node", [...gatewayArgs, "agent", "--params", JSON.stringify(params)], { - encoding: "utf8", - stdio: ["ignore", "pipe", "pipe"], - })), + value: await callGateway({ + url: `ws://127.0.0.1:${port}`, + token, + method: "agent", + params, + expectFinal: true, + timeoutMs: 240_000, + clientName: "gateway-client", + mode: "backend", + scopes: ["operator.write"], + deviceIdentity: null, + }), }; } catch (error) { - const stderr = typeof error?.stderr === "string" ? error.stderr : ""; - const stdout = typeof error?.stdout === "string" ? error.stdout : ""; - const combined = [String(error), stderr.trim(), stdout.trim()].filter(Boolean).join("\n"); + const combined = String(error); return { ok: false, error: new Error(combined) }; } } -const result = gatewayAgent({ +const result = await gatewayAgent({ sessionKey, message, thinking: "minimal", @@ -424,7 +426,7 @@ if (result.value?.status !== "ok") { } NODE -OPENCLAW_ENTRY="$entry" PORT="$PORT" OPENCLAW_GATEWAY_TOKEN="$TOKEN" node /tmp/openclaw-openai-web-search-minimal-client.mjs success >/tmp/openclaw-openai-web-search-minimal-client-success.log 2>&1 +PORT="$PORT" OPENCLAW_GATEWAY_TOKEN="$TOKEN" node /tmp/openclaw-openai-web-search-minimal-client.mjs success >/tmp/openclaw-openai-web-search-minimal-client-success.log 2>&1 node - "$MOCK_REQUEST_LOG" <<'NODE' const fs = require("node:fs"); @@ -448,7 +450,7 @@ if (success.body.reasoning?.effort === "minimal") { } NODE -OPENCLAW_ENTRY="$entry" PORT="$PORT" OPENCLAW_GATEWAY_TOKEN="$TOKEN" node /tmp/openclaw-openai-web-search-minimal-client.mjs reject >/tmp/openclaw-openai-web-search-minimal-client-reject.log 2>&1 +PORT="$PORT" OPENCLAW_GATEWAY_TOKEN="$TOKEN" node /tmp/openclaw-openai-web-search-minimal-client.mjs reject >/tmp/openclaw-openai-web-search-minimal-client-reject.log 2>&1 for _ in $(seq 1 80); do if grep -Fq "$RAW_SCHEMA_ERROR" "$GATEWAY_LOG"; then diff --git a/scripts/e2e/plugins-docker.sh b/scripts/e2e/plugins-docker.sh index ca823022a76..b7393c861bc 100755 --- a/scripts/e2e/plugins-docker.sh +++ b/scripts/e2e/plugins-docker.sh @@ -7,7 +7,11 @@ IMAGE_NAME="$(docker_e2e_resolve_image "openclaw-plugins-e2e" OPENCLAW_PLUGINS_E docker_e2e_build_or_reuse "$IMAGE_NAME" plugins -DOCKER_ENV_ARGS=(-e COREPACK_ENABLE_DOWNLOAD_PROMPT=0) +OPENCLAW_TEST_STATE_SCRIPT_B64="$(docker_e2e_test_state_shell_b64 plugins empty)" +DOCKER_ENV_ARGS=( + -e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 + -e "OPENCLAW_TEST_STATE_SCRIPT_B64=$OPENCLAW_TEST_STATE_SCRIPT_B64" +) for env_name in \ OPENCLAW_PLUGINS_E2E_CLAWHUB \ OPENCLAW_PLUGINS_E2E_CLAWHUB_SPEC \ @@ -64,8 +68,7 @@ NODE )" export OPENCLAW_PACKAGE_ACCEPTANCE_LEGACY_COMPAT -home_dir=$(mktemp -d "/tmp/openclaw-plugins-e2e.XXXXXX") -export HOME="$home_dir" +eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)" BUNDLED_PLUGIN_ROOT_DIR="extensions" OPENCLAW_PLUGIN_HOME="$HOME/.openclaw/$BUNDLED_PLUGIN_ROOT_DIR" diff --git a/scripts/lib/docker-e2e-scenarios.mjs b/scripts/lib/docker-e2e-scenarios.mjs index 58f62562086..2831b529816 100644 --- a/scripts/lib/docker-e2e-scenarios.mjs +++ b/scripts/lib/docker-e2e-scenarios.mjs @@ -120,6 +120,7 @@ const bundledChannelSmokeLanes = ["telegram", "discord", "slack", "feishu", "mem npmLane( `bundled-channel-${channel}`, `OPENCLAW_BUNDLED_CHANNELS=${channel} ${bundledChannelLaneCommand}`, + { stateScenario: "empty" }, ), ); @@ -138,6 +139,7 @@ const bundledChannelUpdateLanes = [ noOutputTimeoutMs: BUNDLED_UPDATE_NO_OUTPUT_TIMEOUT_MS, retryPatterns: LIVE_RETRY_PATTERNS, retries: 1, + stateScenario: "empty", timeoutMs: BUNDLED_UPDATE_TIMEOUT_MS, }, ), @@ -151,14 +153,17 @@ const bundledChannelContractLanes = [ bundledChannelScenarioLane( "bundled-channel-setup-entry", "OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_ROOT_OWNED_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_SETUP_ENTRY_SCENARIO=1 OPENCLAW_BUNDLED_CHANNEL_LOAD_FAILURE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_DISABLED_CONFIG_SCENARIO=0", + { stateScenario: "empty" }, ), bundledChannelScenarioLane( "bundled-channel-load-failure", "OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_ROOT_OWNED_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_SETUP_ENTRY_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_LOAD_FAILURE_SCENARIO=1 OPENCLAW_BUNDLED_CHANNEL_DISABLED_CONFIG_SCENARIO=0", + { stateScenario: "empty" }, ), bundledChannelScenarioLane( "bundled-channel-disabled-config", "OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_ROOT_OWNED_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_SETUP_ENTRY_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_LOAD_FAILURE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_DISABLED_CONFIG_SCENARIO=1", + { stateScenario: "empty" }, ), ]; @@ -268,6 +273,7 @@ export const mainLanes = [ ), lane("plugins", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugins", { resources: ["npm", "service"], + stateScenario: "empty", weight: 6, }), ...bundledPluginInstallUninstallLanes, @@ -276,13 +282,14 @@ export const mainLanes = [ "OPENCLAW_PLUGINS_E2E_CLAWHUB=0 OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugins", { resources: ["npm", "service"], + stateScenario: "empty", weight: 6, }, ), npmLane( "bundled-channel-deps-compat", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:bundled-channel-deps:fast", - { resources: ["service"], weight: 3 }, + { resources: ["service"], stateScenario: "empty", weight: 3 }, ), npmLane("plugin-update", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugin-update"), serviceLane("config-reload", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:config-reload"), @@ -305,7 +312,7 @@ export const tailLanes = [ serviceLane( "openai-web-search-minimal", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openai-web-search-minimal", - { timeoutMs: 8 * 60 * 1000 }, + { stateScenario: "empty", timeoutMs: 8 * 60 * 1000 }, ), liveLane("live-codex-harness", liveDockerScriptCommand("test-live-codex-harness-docker.sh"), { cacheKey: "codex-harness", @@ -408,6 +415,7 @@ export const tailLanes = [ const releasePathPluginRuntimeLanes = [ lane("plugins", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugins", { resources: ["npm", "service"], + stateScenario: "empty", weight: 6, }), ...bundledPluginInstallUninstallLanes, @@ -422,13 +430,14 @@ const releasePathPluginRuntimeLanes = [ serviceLane( "openai-web-search-minimal", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openai-web-search-minimal", - { timeoutMs: 8 * 60 * 1000 }, + { stateScenario: "empty", timeoutMs: 8 * 60 * 1000 }, ), ]; const releasePathPluginRuntimePluginLanes = [ lane("plugins", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugins", { resources: ["npm", "service"], + stateScenario: "empty", weight: 6, }), ]; @@ -445,7 +454,7 @@ const releasePathPluginRuntimeServiceLanes = [ serviceLane( "openai-web-search-minimal", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openai-web-search-minimal", - { timeoutMs: 8 * 60 * 1000 }, + { stateScenario: "empty", timeoutMs: 8 * 60 * 1000 }, ), ]; diff --git a/test/scripts/docker-e2e-plan.test.ts b/test/scripts/docker-e2e-plan.test.ts index a863df90b39..a47a3881700 100644 --- a/test/scripts/docker-e2e-plan.test.ts +++ b/test/scripts/docker-e2e-plan.test.ts @@ -322,6 +322,10 @@ describe("scripts/lib/docker-e2e-plan", () => { "agents-delete-shared-workspace", "doctor-switch", "openai-image-auth", + "openai-web-search-minimal", + "plugins", + "bundled-channel-deps-compat", + "bundled-channel-setup-entry", "bundled-plugin-install-uninstall-0", "update-channel-switch", ], @@ -344,6 +348,22 @@ describe("scripts/lib/docker-e2e-plan", () => { name: "openai-image-auth", stateScenario: "empty", }), + expect.objectContaining({ + name: "openai-web-search-minimal", + stateScenario: "empty", + }), + expect.objectContaining({ + name: "plugins", + stateScenario: "empty", + }), + expect.objectContaining({ + name: "bundled-channel-deps-compat", + stateScenario: "empty", + }), + expect.objectContaining({ + name: "bundled-channel-setup-entry", + stateScenario: "empty", + }), expect.objectContaining({ name: "bundled-plugin-install-uninstall-0", stateScenario: "empty",