diff --git a/package.json b/package.json index 4de0c5dab86..30c800bbd3a 100644 --- a/package.json +++ b/package.json @@ -1076,7 +1076,7 @@ "android:run": "cd apps/android && ./gradlew :app:installPlayDebug && adb shell am start -n ai.openclaw.app/.MainActivity", "android:run:third-party": "cd apps/android && ./gradlew :app:installThirdPartyDebug && adb shell am start -n ai.openclaw.app/.MainActivity", "android:test": "cd apps/android && ./gradlew :app:testPlayDebugUnitTest", - "android:test:integration": "OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_ANDROID_NODE=1 node scripts/run-vitest.mjs run --config vitest.live.config.ts src/gateway/android-node.capabilities.live.test.ts", + "android:test:integration": "OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_ANDROID_NODE=1 node scripts/run-vitest.mjs run --config test/vitest/vitest.live.config.ts src/gateway/android-node.capabilities.live.test.ts", "android:test:third-party": "cd apps/android && ./gradlew :app:testThirdPartyDebugUnitTest", "audit:seams": "node scripts/audit-seams.mjs", "build": "node scripts/build-all.mjs", @@ -1210,17 +1210,17 @@ "start": "node scripts/run-node.mjs", "test": "node scripts/test-projects.mjs", "test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all", - "test:auth:compat": "node scripts/run-vitest.mjs run --config vitest.gateway.config.ts src/gateway/server.auth.compat-baseline.test.ts src/gateway/client.test.ts src/gateway/reconnect-gating.test.ts src/gateway/protocol/connect-error-details.test.ts", + "test:auth:compat": "node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway.config.ts src/gateway/server.auth.compat-baseline.test.ts src/gateway/client.test.ts src/gateway/reconnect-gating.test.ts src/gateway/protocol/connect-error-details.test.ts", "test:build:singleton": "node scripts/test-built-plugin-singleton.mjs", - "test:bundled": "node scripts/run-vitest.mjs run --config vitest.bundled.config.ts", + "test:bundled": "node scripts/run-vitest.mjs run --config test/vitest/vitest.bundled.config.ts", "test:changed": "node scripts/test-projects.mjs --changed origin/main", "test:changed:max": "OPENCLAW_VITEST_MAX_WORKERS=8 node scripts/test-projects.mjs --changed origin/main", - "test:channels": "node scripts/run-vitest.mjs run --config vitest.channels.config.ts", + "test:channels": "node scripts/run-vitest.mjs run --config test/vitest/vitest.channels.config.ts", "test:contracts": "pnpm test:contracts:channels && pnpm test:contracts:plugins", - "test:contracts:channels": "node scripts/run-vitest.mjs run --config vitest.contracts.config.ts --maxWorkers=1 src/channels/plugins/contracts", - "test:contracts:plugins": "node scripts/run-vitest.mjs run --config vitest.contracts.config.ts --maxWorkers=1 src/plugins/contracts", - "test:coverage": "node scripts/run-vitest.mjs run --config vitest.unit.config.ts --coverage", - "test:coverage:changed": "node scripts/run-vitest.mjs run --config vitest.unit.config.ts --coverage --changed origin/main", + "test:contracts:channels": "node scripts/run-vitest.mjs run --config test/vitest/vitest.contracts.config.ts --maxWorkers=1 src/channels/plugins/contracts", + "test:contracts:plugins": "node scripts/run-vitest.mjs run --config test/vitest/vitest.contracts.config.ts --maxWorkers=1 src/plugins/contracts", + "test:coverage": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts --coverage", + "test:coverage:changed": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts --coverage --changed origin/main", "test:docker:all": "pnpm test:docker:live-build && OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-models && OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-gateway && pnpm test:docker:openwebui && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:mcp-channels && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup", "test:docker:cleanup": "bash scripts/test-cleanup-docker.sh", "test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh", @@ -1248,18 +1248,18 @@ "test:docker:openwebui": "bash scripts/e2e/openwebui-docker.sh", "test:docker:plugins": "bash scripts/e2e/plugins-docker.sh", "test:docker:qr": "bash scripts/e2e/qr-import-docker.sh", - "test:e2e": "node scripts/run-vitest.mjs run --config vitest.e2e.config.ts", - "test:e2e:openshell": "OPENCLAW_E2E_OPENSHELL=1 node scripts/run-vitest.mjs run --config vitest.e2e.config.ts test/openshell-sandbox.e2e.test.ts", + "test:e2e": "node scripts/run-vitest.mjs run --config test/vitest/vitest.e2e.config.ts", + "test:e2e:openshell": "OPENCLAW_E2E_OPENSHELL=1 node scripts/run-vitest.mjs run --config test/vitest/vitest.e2e.config.ts test/openshell-sandbox.e2e.test.ts", "test:extension": "node scripts/test-extension.mjs", - "test:extensions": "node scripts/run-vitest.mjs run --config vitest.extensions.config.ts", + "test:extensions": "node scripts/run-vitest.mjs run --config test/vitest/vitest.extensions.config.ts", "test:extensions:batch": "node scripts/test-extension-batch.mjs", "test:extensions:memory": "node scripts/profile-extension-memory.mjs", "test:extensions:package-boundary": "node scripts/check-extension-package-tsc-boundary.mjs", "test:extensions:package-boundary:canary": "node scripts/check-extension-package-tsc-boundary.mjs --mode=canary", "test:extensions:package-boundary:compile": "node scripts/check-extension-package-tsc-boundary.mjs --mode=compile", - "test:fast": "node scripts/run-vitest.mjs run --config vitest.unit.config.ts", + "test:fast": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts", "test:force": "node --import tsx scripts/test-force.ts", - "test:gateway": "node scripts/run-vitest.mjs run --config vitest.gateway.config.ts", + "test:gateway": "node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway.config.ts", "test:gateway:watch-regression": "node scripts/check-gateway-watch-regression.mjs", "test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh", "test:install:e2e:anthropic": "OPENCLAW_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh", @@ -1286,7 +1286,7 @@ "test:perf:imports:changed": "OPENCLAW_VITEST_IMPORT_DURATIONS=1 OPENCLAW_VITEST_PRINT_IMPORT_BREAKDOWN=1 node scripts/test-projects.mjs --changed origin/main", "test:perf:profile:main": "node scripts/run-vitest-profile.mjs main", "test:perf:profile:runner": "node scripts/run-vitest-profile.mjs runner", - "test:sectriage": "node scripts/run-vitest.mjs run --config vitest.gateway.config.ts && node scripts/run-vitest.mjs run --config vitest.unit.config.ts --exclude src/daemon/launchd.integration.test.ts --exclude src/process/exec.test.ts", + "test:sectriage": "node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway.config.ts && node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts --exclude src/daemon/launchd.integration.test.ts --exclude src/process/exec.test.ts", "test:serial": "OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs run --config vitest.config.ts", "test:startup:bench": "node --import tsx scripts/bench-cli-startup.ts", "test:startup:bench:check": "node scripts/test-cli-startup-bench-budget.mjs", @@ -1295,8 +1295,8 @@ "test:startup:bench:update": "node scripts/test-update-cli-startup-bench.mjs", "test:startup:memory": "node scripts/check-cli-startup-memory.mjs", "test:ui": "pnpm ui:i18n:check && pnpm lint:ui:no-raw-window-open && pnpm --dir ui test", - "test:unit": "pnpm test:unit:fast && node scripts/run-vitest.mjs run --config vitest.unit.config.ts", - "test:unit:fast": "node scripts/run-vitest.mjs run --config vitest.unit-fast.config.ts", + "test:unit": "pnpm test:unit:fast && node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts", + "test:unit:fast": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit-fast.config.ts", "test:unit:fast:audit": "node scripts/test-unit-fast-audit.mjs", "test:voicecall:closedloop": "node scripts/test-voicecall-closedloop.mjs", "test:watch": "node scripts/test-projects.mjs --watch", diff --git a/scripts/e2e/Dockerfile b/scripts/e2e/Dockerfile index 3023e166fb3..ff33a06b08a 100644 --- a/scripts/e2e/Dockerfile +++ b/scripts/e2e/Dockerfile @@ -27,7 +27,7 @@ COPY --chown=appuser:appuser scripts/postinstall-bundled-plugins.mjs scripts/npm RUN --mount=type=cache,id=openclaw-pnpm-store,target=/home/appuser/.local/share/pnpm/store,sharing=locked \ pnpm install --frozen-lockfile -COPY --chown=appuser:appuser tsconfig.json tsconfig.plugin-sdk.dts.json tsdown.config.ts vitest.config.ts vitest.e2e.config.ts vitest.performance-config.ts vitest.shared.config.ts vitest.system-load.ts vitest.bundled-plugin-paths.ts openclaw.mjs ./ +COPY --chown=appuser:appuser tsconfig.json tsconfig.plugin-sdk.dts.json tsdown.config.ts vitest.config.ts openclaw.mjs ./ COPY --chown=appuser:appuser src ./src COPY --chown=appuser:appuser test ./test COPY --chown=appuser:appuser scripts ./scripts diff --git a/scripts/e2e/plugins-docker.sh b/scripts/e2e/plugins-docker.sh index 66c934c80ba..4e264833624 100755 --- a/scripts/e2e/plugins-docker.sh +++ b/scripts/e2e/plugins-docker.sh @@ -981,7 +981,7 @@ console.log("ok"); NODE echo "Running bundle MCP CLI-agent e2e..." -pnpm exec vitest run --config vitest.e2e.config.ts src/agents/cli-runner.bundle-mcp.e2e.test.ts +pnpm exec vitest run --config test/vitest/vitest.e2e.config.ts src/agents/cli-runner.bundle-mcp.e2e.test.ts EOF then cat "$RUN_LOG" diff --git a/scripts/lib/extension-test-plan.mjs b/scripts/lib/extension-test-plan.mjs index a050ddbaa5c..7b5b23b4d9a 100644 --- a/scripts/lib/extension-test-plan.mjs +++ b/scripts/lib/extension-test-plan.mjs @@ -1,21 +1,21 @@ import fs from "node:fs"; import path from "node:path"; -import { channelTestRoots } from "../../vitest.channel-paths.mjs"; -import { isAcpxExtensionRoot } from "../../vitest.extension-acpx-paths.mjs"; -import { isBlueBubblesExtensionRoot } from "../../vitest.extension-bluebubbles-paths.mjs"; -import { isDiffsExtensionRoot } from "../../vitest.extension-diffs-paths.mjs"; -import { isFeishuExtensionRoot } from "../../vitest.extension-feishu-paths.mjs"; -import { isIrcExtensionRoot } from "../../vitest.extension-irc-paths.mjs"; -import { isMatrixExtensionRoot } from "../../vitest.extension-matrix-paths.mjs"; -import { isMattermostExtensionRoot } from "../../vitest.extension-mattermost-paths.mjs"; -import { isMemoryExtensionRoot } from "../../vitest.extension-memory-paths.mjs"; -import { isMessagingExtensionRoot } from "../../vitest.extension-messaging-paths.mjs"; -import { isMsTeamsExtensionRoot } from "../../vitest.extension-msteams-paths.mjs"; -import { isProviderExtensionRoot } from "../../vitest.extension-provider-paths.mjs"; -import { isTelegramExtensionRoot } from "../../vitest.extension-telegram-paths.mjs"; -import { isVoiceCallExtensionRoot } from "../../vitest.extension-voice-call-paths.mjs"; -import { isWhatsAppExtensionRoot } from "../../vitest.extension-whatsapp-paths.mjs"; -import { isZaloExtensionRoot } from "../../vitest.extension-zalo-paths.mjs"; +import { channelTestRoots } from "../../test/vitest/vitest.channel-paths.mjs"; +import { isAcpxExtensionRoot } from "../../test/vitest/vitest.extension-acpx-paths.mjs"; +import { isBlueBubblesExtensionRoot } from "../../test/vitest/vitest.extension-bluebubbles-paths.mjs"; +import { isDiffsExtensionRoot } from "../../test/vitest/vitest.extension-diffs-paths.mjs"; +import { isFeishuExtensionRoot } from "../../test/vitest/vitest.extension-feishu-paths.mjs"; +import { isIrcExtensionRoot } from "../../test/vitest/vitest.extension-irc-paths.mjs"; +import { isMatrixExtensionRoot } from "../../test/vitest/vitest.extension-matrix-paths.mjs"; +import { isMattermostExtensionRoot } from "../../test/vitest/vitest.extension-mattermost-paths.mjs"; +import { isMemoryExtensionRoot } from "../../test/vitest/vitest.extension-memory-paths.mjs"; +import { isMessagingExtensionRoot } from "../../test/vitest/vitest.extension-messaging-paths.mjs"; +import { isMsTeamsExtensionRoot } from "../../test/vitest/vitest.extension-msteams-paths.mjs"; +import { isProviderExtensionRoot } from "../../test/vitest/vitest.extension-provider-paths.mjs"; +import { isTelegramExtensionRoot } from "../../test/vitest/vitest.extension-telegram-paths.mjs"; +import { isVoiceCallExtensionRoot } from "../../test/vitest/vitest.extension-voice-call-paths.mjs"; +import { isWhatsAppExtensionRoot } from "../../test/vitest/vitest.extension-whatsapp-paths.mjs"; +import { isZaloExtensionRoot } from "../../test/vitest/vitest.extension-zalo-paths.mjs"; import { BUNDLED_PLUGIN_PATH_PREFIX, BUNDLED_PLUGIN_ROOT_DIR } from "./bundled-plugin-paths.mjs"; import { listAvailableExtensionIds } from "./changed-extensions.mjs"; @@ -116,38 +116,38 @@ export function resolveExtensionTestPlan(params = {}) { const usesMessagingConfig = roots.some((root) => isMessagingExtensionRoot(root)); const usesProviderConfig = roots.some((root) => isProviderExtensionRoot(root)); const config = usesChannelConfig - ? "vitest.extension-channels.config.ts" + ? "test/vitest/vitest.extension-channels.config.ts" : usesAcpxConfig - ? "vitest.extension-acpx.config.ts" + ? "test/vitest/vitest.extension-acpx.config.ts" : usesDiffsConfig - ? "vitest.extension-diffs.config.ts" + ? "test/vitest/vitest.extension-diffs.config.ts" : usesBlueBubblesConfig - ? "vitest.extension-bluebubbles.config.ts" + ? "test/vitest/vitest.extension-bluebubbles.config.ts" : usesFeishuConfig - ? "vitest.extension-feishu.config.ts" + ? "test/vitest/vitest.extension-feishu.config.ts" : usesIrcConfig - ? "vitest.extension-irc.config.ts" + ? "test/vitest/vitest.extension-irc.config.ts" : usesMattermostConfig - ? "vitest.extension-mattermost.config.ts" + ? "test/vitest/vitest.extension-mattermost.config.ts" : usesMatrixConfig - ? "vitest.extension-matrix.config.ts" + ? "test/vitest/vitest.extension-matrix.config.ts" : usesTelegramConfig - ? "vitest.extension-telegram.config.ts" + ? "test/vitest/vitest.extension-telegram.config.ts" : usesVoiceCallConfig - ? "vitest.extension-voice-call.config.ts" + ? "test/vitest/vitest.extension-voice-call.config.ts" : usesWhatsAppConfig - ? "vitest.extension-whatsapp.config.ts" + ? "test/vitest/vitest.extension-whatsapp.config.ts" : usesZaloConfig - ? "vitest.extension-zalo.config.ts" + ? "test/vitest/vitest.extension-zalo.config.ts" : usesMemoryConfig - ? "vitest.extension-memory.config.ts" + ? "test/vitest/vitest.extension-memory.config.ts" : usesMsTeamsConfig - ? "vitest.extension-msteams.config.ts" + ? "test/vitest/vitest.extension-msteams.config.ts" : usesMessagingConfig - ? "vitest.extension-messaging.config.ts" + ? "test/vitest/vitest.extension-messaging.config.ts" : usesProviderConfig - ? "vitest.extension-providers.config.ts" - : "vitest.extensions.config.ts"; + ? "test/vitest/vitest.extension-providers.config.ts" + : "test/vitest/vitest.extensions.config.ts"; const testFileCount = roots.reduce( (sum, root) => sum + countTestFiles(path.join(repoRoot, root)), 0, diff --git a/scripts/prepush-ci.sh b/scripts/prepush-ci.sh index 8fba0b46d44..82ddc5d986b 100644 --- a/scripts/prepush-ci.sh +++ b/scripts/prepush-ci.sh @@ -56,8 +56,8 @@ run_linux_ci_mirror() { run_step pnpm lint:ui:no-raw-window-open run_protocol_ci_mirror run_step pnpm canvas:a2ui:bundle - run_step pnpm exec vitest run --config vitest.extensions.config.ts --maxWorkers=1 - run_step env CI=true pnpm exec vitest run --config vitest.unit.config.ts --maxWorkers=1 + run_step pnpm exec vitest run --config test/vitest/vitest.extensions.config.ts --maxWorkers=1 + run_step env CI=true pnpm exec vitest run --config test/vitest/vitest.unit.config.ts --maxWorkers=1 log_step "OPENCLAW_VITEST_MAX_WORKERS=${OPENCLAW_VITEST_MAX_WORKERS:-1} NODE_OPTIONS=${NODE_OPTIONS:---max-old-space-size=6144} pnpm test" OPENCLAW_VITEST_MAX_WORKERS="${OPENCLAW_VITEST_MAX_WORKERS:-1}" \ diff --git a/scripts/run-extension-channel-oxlint.mjs b/scripts/run-extension-channel-oxlint.mjs index 1600454c9b0..12efdb617ff 100644 --- a/scripts/run-extension-channel-oxlint.mjs +++ b/scripts/run-extension-channel-oxlint.mjs @@ -1,4 +1,4 @@ -import { extensionChannelTestRoots } from "../vitest.channel-paths.mjs"; +import { extensionChannelTestRoots } from "../test/vitest/vitest.channel-paths.mjs"; import { runExtensionOxlint } from "./lib/run-extension-oxlint.mjs"; runExtensionOxlint({ diff --git a/scripts/run-vitest-profile.mjs b/scripts/run-vitest-profile.mjs index 18ad559ca3d..477db53edc7 100644 --- a/scripts/run-vitest-profile.mjs +++ b/scripts/run-vitest-profile.mjs @@ -52,7 +52,7 @@ export function buildVitestProfileCommand({ mode, outputDir }) { "./node_modules/vitest/vitest.mjs", "run", "--config", - "vitest.unit.config.ts", + "test/vitest/vitest.unit.config.ts", "--no-file-parallelism", ], }; @@ -64,7 +64,7 @@ export function buildVitestProfileCommand({ mode, outputDir }) { "vitest", "run", "--config", - "vitest.unit.config.ts", + "test/vitest/vitest.unit.config.ts", "--no-file-parallelism", "--execArgv=--cpu-prof", `--execArgv=--cpu-prof-dir=${outputDir}`, diff --git a/scripts/test-hotspots.mjs b/scripts/test-hotspots.mjs index e538845239f..adf7dffa07d 100644 --- a/scripts/test-hotspots.mjs +++ b/scripts/test-hotspots.mjs @@ -20,7 +20,7 @@ if (process.argv.slice(2).includes("--help")) { "", "Examples:", " node scripts/test-hotspots.mjs", - " node scripts/test-hotspots.mjs --config vitest.channels.config.ts --limit 10", + " node scripts/test-hotspots.mjs --config test/vitest/vitest.channels.config.ts --limit 10", " node scripts/test-hotspots.mjs --report /tmp/vitest-report.json", ].join("\n"), ); @@ -28,7 +28,7 @@ if (process.argv.slice(2).includes("--help")) { } const opts = parseVitestReportArgs(process.argv.slice(2), { - config: "vitest.unit.config.ts", + config: "test/vitest/vitest.unit.config.ts", limit: 20, }); const report = loadVitestReportFromArgs(opts, "openclaw-vitest-hotspots"); diff --git a/scripts/test-live.mjs b/scripts/test-live.mjs index efc1d268542..4c8ea20e441 100644 --- a/scripts/test-live.mjs +++ b/scripts/test-live.mjs @@ -38,7 +38,14 @@ let lastOutputAt = startedAt; const child = spawnPnpmRunner({ stdio: ["inherit", "pipe", "pipe"], - pnpmArgs: ["exec", "vitest", "run", "--config", "vitest.live.config.ts", ...forwardedArgs], + pnpmArgs: [ + "exec", + "vitest", + "run", + "--config", + "test/vitest/vitest.live.config.ts", + ...forwardedArgs, + ], env, }); diff --git a/scripts/test-perf-budget.mjs b/scripts/test-perf-budget.mjs index 1e6228776c0..efccfc9cfb5 100644 --- a/scripts/test-perf-budget.mjs +++ b/scripts/test-perf-budget.mjs @@ -6,7 +6,7 @@ function parseArgs(argv) { return parseFlagArgs( argv, { - config: "vitest.unit.config.ts", + config: "test/vitest/vitest.unit.config.ts", maxWallMs: readEnvNumber("OPENCLAW_TEST_PERF_MAX_WALL_MS"), baselineWallMs: readEnvNumber("OPENCLAW_TEST_PERF_BASELINE_WALL_MS"), maxRegressionPct: readEnvNumber("OPENCLAW_TEST_PERF_MAX_REGRESSION_PCT") ?? 10, diff --git a/scripts/test-projects.mjs b/scripts/test-projects.mjs index b6490aa562f..8dfd16082cd 100644 --- a/scripts/test-projects.mjs +++ b/scripts/test-projects.mjs @@ -25,50 +25,54 @@ const releaseLock = acquireLocalHeavyCheckLockSync({ let lockReleased = false; const FULL_SUITE_CONFIG_WEIGHT = new Map([ - ["vitest.gateway.config.ts", 180], - ["vitest.commands.config.ts", 175], - ["vitest.agents.config.ts", 170], - ["vitest.extensions.config.ts", 168], - ["vitest.tasks.config.ts", 165], - ["vitest.unit-fast.config.ts", 160], - ["vitest.auto-reply-reply.config.ts", 155], - ["vitest.infra.config.ts", 145], - ["vitest.secrets.config.ts", 140], - ["vitest.cron.config.ts", 135], - ["vitest.wizard.config.ts", 130], - ["vitest.unit-src.config.ts", 125], - ["vitest.extension-channels.config.ts", 100], - ["vitest.extension-matrix.config.ts", 98], - ["vitest.extension-providers.config.ts", 96], - ["vitest.extension-telegram.config.ts", 94], - ["vitest.extension-whatsapp.config.ts", 92], - ["vitest.auto-reply-core.config.ts", 90], - ["vitest.cli.config.ts", 86], - ["vitest.channels.config.ts", 84], - ["vitest.plugins.config.ts", 82], - ["vitest.bundled.config.ts", 80], - ["vitest.commands-light.config.ts", 48], - ["vitest.plugin-sdk.config.ts", 46], - ["vitest.auto-reply-top-level.config.ts", 45], - ["vitest.unit-ui.config.ts", 40], - ["vitest.plugin-sdk-light.config.ts", 38], - ["vitest.daemon.config.ts", 36], - ["vitest.boundary.config.ts", 34], - ["vitest.tooling.config.ts", 32], - ["vitest.unit-security.config.ts", 30], - ["vitest.unit-support.config.ts", 28], - ["vitest.contracts.config.ts", 26], - ["vitest.extension-zalo.config.ts", 24], - ["vitest.extension-bluebubbles.config.ts", 22], - ["vitest.extension-irc.config.ts", 20], - ["vitest.extension-feishu.config.ts", 18], - ["vitest.extension-mattermost.config.ts", 16], - ["vitest.extension-messaging.config.ts", 14], - ["vitest.extension-acpx.config.ts", 10], - ["vitest.extension-diffs.config.ts", 8], - ["vitest.extension-memory.config.ts", 6], - ["vitest.extension-msteams.config.ts", 4], - ["vitest.extension-voice-call.config.ts", 2], + ["test/vitest/vitest.gateway.config.ts", 180], + ["test/vitest/vitest.gateway-server.config.ts", 180], + ["test/vitest/vitest.gateway-core.config.ts", 179], + ["test/vitest/vitest.gateway-client.config.ts", 178], + ["test/vitest/vitest.gateway-methods.config.ts", 177], + ["test/vitest/vitest.commands.config.ts", 175], + ["test/vitest/vitest.agents.config.ts", 170], + ["test/vitest/vitest.extensions.config.ts", 168], + ["test/vitest/vitest.tasks.config.ts", 165], + ["test/vitest/vitest.unit-fast.config.ts", 160], + ["test/vitest/vitest.auto-reply-reply.config.ts", 155], + ["test/vitest/vitest.infra.config.ts", 145], + ["test/vitest/vitest.secrets.config.ts", 140], + ["test/vitest/vitest.cron.config.ts", 135], + ["test/vitest/vitest.wizard.config.ts", 130], + ["test/vitest/vitest.unit-src.config.ts", 125], + ["test/vitest/vitest.extension-channels.config.ts", 100], + ["test/vitest/vitest.extension-matrix.config.ts", 98], + ["test/vitest/vitest.extension-providers.config.ts", 96], + ["test/vitest/vitest.extension-telegram.config.ts", 94], + ["test/vitest/vitest.extension-whatsapp.config.ts", 92], + ["test/vitest/vitest.auto-reply-core.config.ts", 90], + ["test/vitest/vitest.cli.config.ts", 86], + ["test/vitest/vitest.channels.config.ts", 84], + ["test/vitest/vitest.plugins.config.ts", 82], + ["test/vitest/vitest.bundled.config.ts", 80], + ["test/vitest/vitest.commands-light.config.ts", 48], + ["test/vitest/vitest.plugin-sdk.config.ts", 46], + ["test/vitest/vitest.auto-reply-top-level.config.ts", 45], + ["test/vitest/vitest.unit-ui.config.ts", 40], + ["test/vitest/vitest.plugin-sdk-light.config.ts", 38], + ["test/vitest/vitest.daemon.config.ts", 36], + ["test/vitest/vitest.boundary.config.ts", 34], + ["test/vitest/vitest.tooling.config.ts", 32], + ["test/vitest/vitest.unit-security.config.ts", 30], + ["test/vitest/vitest.unit-support.config.ts", 28], + ["test/vitest/vitest.contracts.config.ts", 26], + ["test/vitest/vitest.extension-zalo.config.ts", 24], + ["test/vitest/vitest.extension-bluebubbles.config.ts", 22], + ["test/vitest/vitest.extension-irc.config.ts", 20], + ["test/vitest/vitest.extension-feishu.config.ts", 18], + ["test/vitest/vitest.extension-mattermost.config.ts", 16], + ["test/vitest/vitest.extension-messaging.config.ts", 14], + ["test/vitest/vitest.extension-acpx.config.ts", 10], + ["test/vitest/vitest.extension-diffs.config.ts", 8], + ["test/vitest/vitest.extension-memory.config.ts", 6], + ["test/vitest/vitest.extension-msteams.config.ts", 4], + ["test/vitest/vitest.extension-voice-call.config.ts", 2], ]); const releaseLockOnce = () => { if (lockReleased) { diff --git a/scripts/test-projects.test-support.mjs b/scripts/test-projects.test-support.mjs index c82fd4ed2dd..51d01ca5dba 100644 --- a/scripts/test-projects.test-support.mjs +++ b/scripts/test-projects.test-support.mjs @@ -2,87 +2,90 @@ import { execFileSync } from "node:child_process"; import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import { isChannelSurfaceTestFile } from "../vitest.channel-paths.mjs"; +import { isChannelSurfaceTestFile } from "../test/vitest/vitest.channel-paths.mjs"; import { isCommandsLightTarget, resolveCommandsLightIncludePattern, -} from "../vitest.commands-light-paths.mjs"; -import { isAcpxExtensionRoot } from "../vitest.extension-acpx-paths.mjs"; -import { isBlueBubblesExtensionRoot } from "../vitest.extension-bluebubbles-paths.mjs"; -import { isDiffsExtensionRoot } from "../vitest.extension-diffs-paths.mjs"; -import { isFeishuExtensionRoot } from "../vitest.extension-feishu-paths.mjs"; -import { isIrcExtensionRoot } from "../vitest.extension-irc-paths.mjs"; -import { isMatrixExtensionRoot } from "../vitest.extension-matrix-paths.mjs"; -import { isMattermostExtensionRoot } from "../vitest.extension-mattermost-paths.mjs"; -import { isMemoryExtensionRoot } from "../vitest.extension-memory-paths.mjs"; -import { isMessagingExtensionRoot } from "../vitest.extension-messaging-paths.mjs"; -import { isMsTeamsExtensionRoot } from "../vitest.extension-msteams-paths.mjs"; -import { isProviderExtensionRoot } from "../vitest.extension-provider-paths.mjs"; -import { isTelegramExtensionRoot } from "../vitest.extension-telegram-paths.mjs"; -import { isVoiceCallExtensionRoot } from "../vitest.extension-voice-call-paths.mjs"; -import { isWhatsAppExtensionRoot } from "../vitest.extension-whatsapp-paths.mjs"; -import { isZaloExtensionRoot } from "../vitest.extension-zalo-paths.mjs"; +} from "../test/vitest/vitest.commands-light-paths.mjs"; +import { isAcpxExtensionRoot } from "../test/vitest/vitest.extension-acpx-paths.mjs"; +import { isBlueBubblesExtensionRoot } from "../test/vitest/vitest.extension-bluebubbles-paths.mjs"; +import { isDiffsExtensionRoot } from "../test/vitest/vitest.extension-diffs-paths.mjs"; +import { isFeishuExtensionRoot } from "../test/vitest/vitest.extension-feishu-paths.mjs"; +import { isIrcExtensionRoot } from "../test/vitest/vitest.extension-irc-paths.mjs"; +import { isMatrixExtensionRoot } from "../test/vitest/vitest.extension-matrix-paths.mjs"; +import { isMattermostExtensionRoot } from "../test/vitest/vitest.extension-mattermost-paths.mjs"; +import { isMemoryExtensionRoot } from "../test/vitest/vitest.extension-memory-paths.mjs"; +import { isMessagingExtensionRoot } from "../test/vitest/vitest.extension-messaging-paths.mjs"; +import { isMsTeamsExtensionRoot } from "../test/vitest/vitest.extension-msteams-paths.mjs"; +import { isProviderExtensionRoot } from "../test/vitest/vitest.extension-provider-paths.mjs"; +import { isTelegramExtensionRoot } from "../test/vitest/vitest.extension-telegram-paths.mjs"; +import { isVoiceCallExtensionRoot } from "../test/vitest/vitest.extension-voice-call-paths.mjs"; +import { isWhatsAppExtensionRoot } from "../test/vitest/vitest.extension-whatsapp-paths.mjs"; +import { isZaloExtensionRoot } from "../test/vitest/vitest.extension-zalo-paths.mjs"; import { isPluginSdkLightTarget, resolvePluginSdkLightIncludePattern, -} from "../vitest.plugin-sdk-paths.mjs"; -import { fullSuiteVitestShards } from "../vitest.test-shards.mjs"; -import { resolveUnitFastTestIncludePattern } from "../vitest.unit-fast-paths.mjs"; -import { isBoundaryTestFile, isBundledPluginDependentUnitTestFile } from "../vitest.unit-paths.mjs"; +} from "../test/vitest/vitest.plugin-sdk-paths.mjs"; +import { fullSuiteVitestShards } from "../test/vitest/vitest.test-shards.mjs"; +import { resolveUnitFastTestIncludePattern } from "../test/vitest/vitest.unit-fast-paths.mjs"; +import { + isBoundaryTestFile, + isBundledPluginDependentUnitTestFile, +} from "../test/vitest/vitest.unit-paths.mjs"; import { resolveVitestCliEntry, resolveVitestNodeArgs } from "./run-vitest.mjs"; -const DEFAULT_VITEST_CONFIG = "vitest.unit.config.ts"; -const AGENTS_VITEST_CONFIG = "vitest.agents.config.ts"; -const ACP_VITEST_CONFIG = "vitest.acp.config.ts"; -const AUTO_REPLY_VITEST_CONFIG = "vitest.auto-reply.config.ts"; -const BOUNDARY_VITEST_CONFIG = "vitest.boundary.config.ts"; -const BUNDLED_VITEST_CONFIG = "vitest.bundled.config.ts"; -const CHANNEL_VITEST_CONFIG = "vitest.channels.config.ts"; -const CLI_VITEST_CONFIG = "vitest.cli.config.ts"; -const COMMANDS_LIGHT_VITEST_CONFIG = "vitest.commands-light.config.ts"; -const COMMANDS_VITEST_CONFIG = "vitest.commands.config.ts"; -const CONTRACTS_VITEST_CONFIG = "vitest.contracts.config.ts"; -const CRON_VITEST_CONFIG = "vitest.cron.config.ts"; -const DAEMON_VITEST_CONFIG = "vitest.daemon.config.ts"; -const E2E_VITEST_CONFIG = "vitest.e2e.config.ts"; -const EXTENSION_ACPX_VITEST_CONFIG = "vitest.extension-acpx.config.ts"; -const EXTENSION_BLUEBUBBLES_VITEST_CONFIG = "vitest.extension-bluebubbles.config.ts"; -const EXTENSION_CHANNELS_VITEST_CONFIG = "vitest.extension-channels.config.ts"; -const EXTENSION_DIFFS_VITEST_CONFIG = "vitest.extension-diffs.config.ts"; -const EXTENSION_FEISHU_VITEST_CONFIG = "vitest.extension-feishu.config.ts"; -const EXTENSION_IRC_VITEST_CONFIG = "vitest.extension-irc.config.ts"; -const EXTENSION_MATTERMOST_VITEST_CONFIG = "vitest.extension-mattermost.config.ts"; -const EXTENSION_MATRIX_VITEST_CONFIG = "vitest.extension-matrix.config.ts"; -const EXTENSION_MEMORY_VITEST_CONFIG = "vitest.extension-memory.config.ts"; -const EXTENSION_MSTEAMS_VITEST_CONFIG = "vitest.extension-msteams.config.ts"; -const EXTENSION_MESSAGING_VITEST_CONFIG = "vitest.extension-messaging.config.ts"; -const EXTENSION_PROVIDERS_VITEST_CONFIG = "vitest.extension-providers.config.ts"; -const EXTENSION_TELEGRAM_VITEST_CONFIG = "vitest.extension-telegram.config.ts"; -const EXTENSION_VOICE_CALL_VITEST_CONFIG = "vitest.extension-voice-call.config.ts"; -const EXTENSION_WHATSAPP_VITEST_CONFIG = "vitest.extension-whatsapp.config.ts"; -const EXTENSION_ZALO_VITEST_CONFIG = "vitest.extension-zalo.config.ts"; -const EXTENSIONS_VITEST_CONFIG = "vitest.extensions.config.ts"; -const FULL_EXTENSIONS_VITEST_CONFIG = "vitest.full-extensions.config.ts"; -const GATEWAY_VITEST_CONFIG = "vitest.gateway.config.ts"; -const HOOKS_VITEST_CONFIG = "vitest.hooks.config.ts"; -const INFRA_VITEST_CONFIG = "vitest.infra.config.ts"; -const MEDIA_VITEST_CONFIG = "vitest.media.config.ts"; -const MEDIA_UNDERSTANDING_VITEST_CONFIG = "vitest.media-understanding.config.ts"; -const LOGGING_VITEST_CONFIG = "vitest.logging.config.ts"; -const PLUGIN_SDK_LIGHT_VITEST_CONFIG = "vitest.plugin-sdk-light.config.ts"; -const PLUGIN_SDK_VITEST_CONFIG = "vitest.plugin-sdk.config.ts"; -const PLUGINS_VITEST_CONFIG = "vitest.plugins.config.ts"; -const UNIT_FAST_VITEST_CONFIG = "vitest.unit-fast.config.ts"; -const PROCESS_VITEST_CONFIG = "vitest.process.config.ts"; -const RUNTIME_CONFIG_VITEST_CONFIG = "vitest.runtime-config.config.ts"; -const SECRETS_VITEST_CONFIG = "vitest.secrets.config.ts"; -const SHARED_CORE_VITEST_CONFIG = "vitest.shared-core.config.ts"; -const TASKS_VITEST_CONFIG = "vitest.tasks.config.ts"; -const TOOLING_VITEST_CONFIG = "vitest.tooling.config.ts"; -const TUI_VITEST_CONFIG = "vitest.tui.config.ts"; -const UI_VITEST_CONFIG = "vitest.ui.config.ts"; -const UTILS_VITEST_CONFIG = "vitest.utils.config.ts"; -const WIZARD_VITEST_CONFIG = "vitest.wizard.config.ts"; +const DEFAULT_VITEST_CONFIG = "test/vitest/vitest.unit.config.ts"; +const AGENTS_VITEST_CONFIG = "test/vitest/vitest.agents.config.ts"; +const ACP_VITEST_CONFIG = "test/vitest/vitest.acp.config.ts"; +const AUTO_REPLY_VITEST_CONFIG = "test/vitest/vitest.auto-reply.config.ts"; +const BOUNDARY_VITEST_CONFIG = "test/vitest/vitest.boundary.config.ts"; +const BUNDLED_VITEST_CONFIG = "test/vitest/vitest.bundled.config.ts"; +const CHANNEL_VITEST_CONFIG = "test/vitest/vitest.channels.config.ts"; +const CLI_VITEST_CONFIG = "test/vitest/vitest.cli.config.ts"; +const COMMANDS_LIGHT_VITEST_CONFIG = "test/vitest/vitest.commands-light.config.ts"; +const COMMANDS_VITEST_CONFIG = "test/vitest/vitest.commands.config.ts"; +const CONTRACTS_VITEST_CONFIG = "test/vitest/vitest.contracts.config.ts"; +const CRON_VITEST_CONFIG = "test/vitest/vitest.cron.config.ts"; +const DAEMON_VITEST_CONFIG = "test/vitest/vitest.daemon.config.ts"; +const E2E_VITEST_CONFIG = "test/vitest/vitest.e2e.config.ts"; +const EXTENSION_ACPX_VITEST_CONFIG = "test/vitest/vitest.extension-acpx.config.ts"; +const EXTENSION_BLUEBUBBLES_VITEST_CONFIG = "test/vitest/vitest.extension-bluebubbles.config.ts"; +const EXTENSION_CHANNELS_VITEST_CONFIG = "test/vitest/vitest.extension-channels.config.ts"; +const EXTENSION_DIFFS_VITEST_CONFIG = "test/vitest/vitest.extension-diffs.config.ts"; +const EXTENSION_FEISHU_VITEST_CONFIG = "test/vitest/vitest.extension-feishu.config.ts"; +const EXTENSION_IRC_VITEST_CONFIG = "test/vitest/vitest.extension-irc.config.ts"; +const EXTENSION_MATTERMOST_VITEST_CONFIG = "test/vitest/vitest.extension-mattermost.config.ts"; +const EXTENSION_MATRIX_VITEST_CONFIG = "test/vitest/vitest.extension-matrix.config.ts"; +const EXTENSION_MEMORY_VITEST_CONFIG = "test/vitest/vitest.extension-memory.config.ts"; +const EXTENSION_MSTEAMS_VITEST_CONFIG = "test/vitest/vitest.extension-msteams.config.ts"; +const EXTENSION_MESSAGING_VITEST_CONFIG = "test/vitest/vitest.extension-messaging.config.ts"; +const EXTENSION_PROVIDERS_VITEST_CONFIG = "test/vitest/vitest.extension-providers.config.ts"; +const EXTENSION_TELEGRAM_VITEST_CONFIG = "test/vitest/vitest.extension-telegram.config.ts"; +const EXTENSION_VOICE_CALL_VITEST_CONFIG = "test/vitest/vitest.extension-voice-call.config.ts"; +const EXTENSION_WHATSAPP_VITEST_CONFIG = "test/vitest/vitest.extension-whatsapp.config.ts"; +const EXTENSION_ZALO_VITEST_CONFIG = "test/vitest/vitest.extension-zalo.config.ts"; +const EXTENSIONS_VITEST_CONFIG = "test/vitest/vitest.extensions.config.ts"; +const FULL_EXTENSIONS_VITEST_CONFIG = "test/vitest/vitest.full-extensions.config.ts"; +const GATEWAY_VITEST_CONFIG = "test/vitest/vitest.gateway.config.ts"; +const HOOKS_VITEST_CONFIG = "test/vitest/vitest.hooks.config.ts"; +const INFRA_VITEST_CONFIG = "test/vitest/vitest.infra.config.ts"; +const MEDIA_VITEST_CONFIG = "test/vitest/vitest.media.config.ts"; +const MEDIA_UNDERSTANDING_VITEST_CONFIG = "test/vitest/vitest.media-understanding.config.ts"; +const LOGGING_VITEST_CONFIG = "test/vitest/vitest.logging.config.ts"; +const PLUGIN_SDK_LIGHT_VITEST_CONFIG = "test/vitest/vitest.plugin-sdk-light.config.ts"; +const PLUGIN_SDK_VITEST_CONFIG = "test/vitest/vitest.plugin-sdk.config.ts"; +const PLUGINS_VITEST_CONFIG = "test/vitest/vitest.plugins.config.ts"; +const UNIT_FAST_VITEST_CONFIG = "test/vitest/vitest.unit-fast.config.ts"; +const PROCESS_VITEST_CONFIG = "test/vitest/vitest.process.config.ts"; +const RUNTIME_CONFIG_VITEST_CONFIG = "test/vitest/vitest.runtime-config.config.ts"; +const SECRETS_VITEST_CONFIG = "test/vitest/vitest.secrets.config.ts"; +const SHARED_CORE_VITEST_CONFIG = "test/vitest/vitest.shared-core.config.ts"; +const TASKS_VITEST_CONFIG = "test/vitest/vitest.tasks.config.ts"; +const TOOLING_VITEST_CONFIG = "test/vitest/vitest.tooling.config.ts"; +const TUI_VITEST_CONFIG = "test/vitest/vitest.tui.config.ts"; +const UI_VITEST_CONFIG = "test/vitest/vitest.ui.config.ts"; +const UTILS_VITEST_CONFIG = "test/vitest/vitest.utils.config.ts"; +const WIZARD_VITEST_CONFIG = "test/vitest/vitest.wizard.config.ts"; const INCLUDE_FILE_ENV_KEY = "OPENCLAW_VITEST_INCLUDE_FILE"; const CHANGED_ARGS_PATTERN = /^--changed(?:=(.+))?$/u; const VITEST_CONFIG_BY_KIND = { @@ -142,6 +145,7 @@ const BROAD_CHANGED_RERUN_PATTERNS = [ /^pnpm-lock\.yaml$/u, /^test\/setup(?:\.shared|\.extensions|-openclaw-runtime)?\.ts$/u, /^vitest(?:\..+)?\.(?:config\.ts|paths\.mjs)$/u, + /^test\/vitest\/vitest(?:\..+)?\.(?:config\.ts|paths\.mjs)$/u, /^scripts\/run-vitest\.mjs$/u, /^scripts\/test-projects(?:\.test-support)?\.mjs$/u, ]; diff --git a/scripts/test-unit-fast-audit.mjs b/scripts/test-unit-fast-audit.mjs index a7390115d4a..577b65a4206 100644 --- a/scripts/test-unit-fast-audit.mjs +++ b/scripts/test-unit-fast-audit.mjs @@ -3,7 +3,7 @@ import { collectUnitFastTestFileAnalysis, collectUnitFastTestCandidates, unitFastTestFiles, -} from "../vitest.unit-fast-paths.mjs"; +} from "../test/vitest/vitest.unit-fast-paths.mjs"; const args = new Set(process.argv.slice(2)); const json = args.has("--json"); diff --git a/src/agents/openai-ws-stream.e2e.test.ts b/src/agents/openai-ws-stream.e2e.test.ts index 17a1c482f03..77a385b12e6 100644 --- a/src/agents/openai-ws-stream.e2e.test.ts +++ b/src/agents/openai-ws-stream.e2e.test.ts @@ -9,7 +9,7 @@ * - Connection lifecycle cleanup via releaseWsSession * * Run manually with a valid OPENAI_API_KEY: - * OPENCLAW_LIVE_TEST=1 pnpm exec vitest run --config vitest.e2e.config.ts src/agents/openai-ws-stream.e2e.test.ts + * OPENCLAW_LIVE_TEST=1 pnpm exec vitest run --config test/vitest/vitest.e2e.config.ts src/agents/openai-ws-stream.e2e.test.ts * * Skipped in CI — no API key available and we avoid billable external calls. */ diff --git a/src/infra/vitest-config.test.ts b/src/infra/vitest-config.test.ts index d9d61040130..7f5704e35b7 100644 --- a/src/infra/vitest-config.test.ts +++ b/src/infra/vitest-config.test.ts @@ -1,11 +1,11 @@ import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; +import { parseVitestProcessStats } from "../../test/vitest/vitest.system-load.ts"; import baseConfig, { resolveDefaultVitestPool, resolveLocalVitestMaxWorkers, resolveLocalVitestScheduling, } from "../../vitest.config.ts"; -import { parseVitestProcessStats } from "../../vitest.system-load.ts"; describe("resolveLocalVitestMaxWorkers", () => { it("uses a moderate local worker cap on larger hosts", () => { @@ -179,7 +179,7 @@ describe("parseVitestProcessStats", () => { "101 0.0 node /Users/me/project/node_modules/.bin/vitest run --config vitest.config.ts", "102 41.3 /opt/homebrew/bin/node /Users/me/project/node_modules/vitest/dist/workers/forks.js", "103 37.4 /opt/homebrew/bin/node /Users/me/project/node_modules/vitest/dist/workers/forks.js", - "200 12.0 node /Users/me/project/node_modules/.bin/vitest run --config vitest.unit.config.ts", + "200 12.0 node /Users/me/project/node_modules/.bin/vitest run --config test/vitest/vitest.unit.config.ts", "201 25.5 node unrelated-script.mjs", ].join("\n"), 200, @@ -224,18 +224,18 @@ describe("test scripts", () => { "OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs run --config vitest.config.ts", ); expect(pkg.scripts?.["test:fast"]).toBe( - "node scripts/run-vitest.mjs run --config vitest.unit.config.ts", + "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts", ); expect(pkg.scripts?.["test:unit"]).toBe( - "pnpm test:unit:fast && node scripts/run-vitest.mjs run --config vitest.unit.config.ts", + "pnpm test:unit:fast && node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts", ); expect(pkg.scripts?.["test:unit:fast"]).toBe( - "node scripts/run-vitest.mjs run --config vitest.unit-fast.config.ts", + "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit-fast.config.ts", ); expect(pkg.scripts?.["test:unit:fast:audit"]).toBe("node scripts/test-unit-fast-audit.mjs"); expect(pkg.scripts?.["test"]).toBe("node scripts/test-projects.mjs"); expect(pkg.scripts?.["test:gateway"]).toBe( - "node scripts/run-vitest.mjs run --config vitest.gateway.config.ts", + "node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway.config.ts", ); expect(pkg.scripts?.["test:single"]).toBeUndefined(); }); diff --git a/src/infra/vitest-e2e-config.test.ts b/src/infra/vitest-e2e-config.test.ts index cf09ab70563..9d8a81b425a 100644 --- a/src/infra/vitest-e2e-config.test.ts +++ b/src/infra/vitest-e2e-config.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { BUNDLED_PLUGIN_E2E_TEST_GLOB } from "../../vitest.bundled-plugin-paths.ts"; -import e2eConfig from "../../vitest.e2e.config.ts"; +import { BUNDLED_PLUGIN_E2E_TEST_GLOB } from "../../test/vitest/vitest.bundled-plugin-paths.ts"; +import e2eConfig from "../../test/vitest/vitest.e2e.config.ts"; describe("e2e vitest config", () => { it("runs as a standalone config instead of inheriting unit projects", () => { diff --git a/src/infra/vitest-live-config.test.ts b/src/infra/vitest-live-config.test.ts index 04d54eb5f90..d7bf0ba746b 100644 --- a/src/infra/vitest-live-config.test.ts +++ b/src/infra/vitest-live-config.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { BUNDLED_PLUGIN_LIVE_TEST_GLOB } from "../../vitest.bundled-plugin-paths.ts"; -import liveConfig from "../../vitest.live.config.ts"; +import { BUNDLED_PLUGIN_LIVE_TEST_GLOB } from "../../test/vitest/vitest.bundled-plugin-paths.ts"; +import liveConfig from "../../test/vitest/vitest.live.config.ts"; describe("live vitest config", () => { it("runs as a standalone config instead of inheriting unit projects", () => { diff --git a/src/scripts/test-projects.test.ts b/src/scripts/test-projects.test.ts index 885432f975b..6de83ad3b71 100644 --- a/src/scripts/test-projects.test.ts +++ b/src/scripts/test-projects.test.ts @@ -73,7 +73,7 @@ describe("test-projects args", () => { expect(buildVitestArgs(["--watch", "--", "src/foo.test.ts"])).toEqual([ ...VITEST_NODE_PREFIX, "--config", - "vitest.unit.config.ts", + "test/vitest/vitest.unit.config.ts", "src/foo.test.ts", ]); }); @@ -83,7 +83,7 @@ describe("test-projects args", () => { ...VITEST_NODE_PREFIX, "run", "--config", - "vitest.unit.config.ts", + "test/vitest/vitest.unit.config.ts", "src/foo.test.ts", ]); }); @@ -91,7 +91,7 @@ describe("test-projects args", () => { it("routes boundary targets to the boundary config", () => { expect(buildVitestRunPlans(["src/infra/openclaw-root.test.ts"])).toEqual([ { - config: "vitest.boundary.config.ts", + config: "test/vitest/vitest.boundary.config.ts", forwardedArgs: [], includePatterns: ["src/infra/openclaw-root.test.ts"], watchMode: false, @@ -102,7 +102,7 @@ describe("test-projects args", () => { it("routes bundled-plugin-dependent unit targets to the bundled config", () => { expect(buildVitestRunPlans(["src/plugins/loader.test.ts"])).toEqual([ { - config: "vitest.bundled.config.ts", + config: "test/vitest/vitest.bundled.config.ts", forwardedArgs: [], includePatterns: ["src/plugins/loader.test.ts"], watchMode: false, @@ -113,7 +113,7 @@ describe("test-projects args", () => { it("routes top-level repo tests to the contracts config", () => { expect(buildVitestRunPlans(["test/appcast.test.ts"])).toEqual([ { - config: "vitest.tooling.config.ts", + config: "test/vitest/vitest.tooling.config.ts", forwardedArgs: [], includePatterns: ["test/appcast.test.ts"], watchMode: false, @@ -124,7 +124,7 @@ describe("test-projects args", () => { it("routes script tests to the tooling config", () => { expect(buildVitestRunPlans(["src/scripts/test-projects.test.ts"])).toEqual([ { - config: "vitest.tooling.config.ts", + config: "test/vitest/vitest.tooling.config.ts", forwardedArgs: [], includePatterns: ["src/scripts/test-projects.test.ts"], watchMode: false, @@ -137,7 +137,7 @@ describe("test-projects args", () => { buildVitestRunPlans(["src/plugins/contracts/memory-embedding-provider.contract.test.ts"]), ).toEqual([ { - config: "vitest.contracts.config.ts", + config: "test/vitest/vitest.contracts.config.ts", forwardedArgs: [], includePatterns: ["src/plugins/contracts/memory-embedding-provider.contract.test.ts"], watchMode: false, @@ -148,7 +148,7 @@ describe("test-projects args", () => { it("routes config baseline integration tests to the contracts config", () => { expect(buildVitestRunPlans(["src/config/doc-baseline.integration.test.ts"])).toEqual([ { - config: "vitest.tooling.config.ts", + config: "test/vitest/vitest.tooling.config.ts", forwardedArgs: [], includePatterns: ["src/config/doc-baseline.integration.test.ts"], watchMode: false, @@ -159,7 +159,7 @@ describe("test-projects args", () => { it("routes runtime config targets to the runtime-config config", () => { expect(buildVitestRunPlans(["src/config/sessions.test.ts"])).toEqual([ { - config: "vitest.runtime-config.config.ts", + config: "test/vitest/vitest.runtime-config.config.ts", forwardedArgs: [], includePatterns: ["src/config/sessions.test.ts"], watchMode: false, @@ -170,7 +170,7 @@ describe("test-projects args", () => { it("routes cron targets to the cron config", () => { expect(buildVitestRunPlans(["src/cron/isolated-agent.lane.test.ts"])).toEqual([ { - config: "vitest.cron.config.ts", + config: "test/vitest/vitest.cron.config.ts", forwardedArgs: [], includePatterns: ["src/cron/isolated-agent.lane.test.ts"], watchMode: false, @@ -181,7 +181,7 @@ describe("test-projects args", () => { it("routes daemon targets to the daemon config", () => { expect(buildVitestRunPlans(["src/daemon/inspect.test.ts"])).toEqual([ { - config: "vitest.daemon.config.ts", + config: "test/vitest/vitest.daemon.config.ts", forwardedArgs: [], includePatterns: ["src/daemon/inspect.test.ts"], watchMode: false, @@ -192,7 +192,7 @@ describe("test-projects args", () => { it("routes media targets to the media config", () => { expect(buildVitestRunPlans(["src/media/fetch.test.ts"])).toEqual([ { - config: "vitest.media.config.ts", + config: "test/vitest/vitest.media.config.ts", forwardedArgs: [], includePatterns: ["src/media/fetch.test.ts"], watchMode: false, @@ -203,7 +203,7 @@ describe("test-projects args", () => { it("routes plugin-sdk targets to the plugin-sdk config", () => { expect(buildVitestRunPlans(["src/plugin-sdk/anthropic-vertex-auth-presence.test.ts"])).toEqual([ { - config: "vitest.plugin-sdk.config.ts", + config: "test/vitest/vitest.plugin-sdk.config.ts", forwardedArgs: [], includePatterns: ["src/plugin-sdk/anthropic-vertex-auth-presence.test.ts"], watchMode: false, @@ -214,7 +214,7 @@ describe("test-projects args", () => { it("routes unit-fast light targets to the cache-friendly unit-fast config", () => { expect(buildVitestRunPlans(["src/plugin-sdk/provider-entry.test.ts"])).toEqual([ { - config: "vitest.unit-fast.config.ts", + config: "test/vitest/vitest.unit-fast.config.ts", forwardedArgs: [], includePatterns: ["src/plugin-sdk/provider-entry.test.ts"], watchMode: false, @@ -225,7 +225,7 @@ describe("test-projects args", () => { it("routes process targets to the process config", () => { expect(buildVitestRunPlans(["src/process/exec.test.ts"])).toEqual([ { - config: "vitest.process.config.ts", + config: "test/vitest/vitest.process.config.ts", forwardedArgs: [], includePatterns: ["src/process/exec.test.ts"], watchMode: false, @@ -236,7 +236,7 @@ describe("test-projects args", () => { it("routes secrets targets to the secrets config", () => { expect(buildVitestRunPlans(["src/secrets/resolve.test.ts"])).toEqual([ { - config: "vitest.secrets.config.ts", + config: "test/vitest/vitest.secrets.config.ts", forwardedArgs: [], includePatterns: ["src/secrets/resolve.test.ts"], watchMode: false, @@ -247,7 +247,7 @@ describe("test-projects args", () => { it("routes unit-fast shared-core targets to the unit-fast config", () => { expect(buildVitestRunPlans(["src/shared/text-chunking.test.ts"])).toEqual([ { - config: "vitest.unit-fast.config.ts", + config: "test/vitest/vitest.unit-fast.config.ts", forwardedArgs: [], includePatterns: ["src/shared/text-chunking.test.ts"], watchMode: false, @@ -258,7 +258,7 @@ describe("test-projects args", () => { it("routes tasks targets to the tasks config", () => { expect(buildVitestRunPlans(["src/tasks/task-registry.test.ts"])).toEqual([ { - config: "vitest.tasks.config.ts", + config: "test/vitest/vitest.tasks.config.ts", forwardedArgs: [], includePatterns: ["src/tasks/task-registry.test.ts"], watchMode: false, @@ -269,7 +269,7 @@ describe("test-projects args", () => { it("routes logging targets to the logging config", () => { expect(buildVitestRunPlans(["src/logging/console-settings.test.ts"])).toEqual([ { - config: "vitest.logging.config.ts", + config: "test/vitest/vitest.logging.config.ts", forwardedArgs: [], includePatterns: ["src/logging/console-settings.test.ts"], watchMode: false, @@ -280,7 +280,7 @@ describe("test-projects args", () => { it("routes wizard targets to the wizard config", () => { expect(buildVitestRunPlans(["src/wizard/setup.test.ts"])).toEqual([ { - config: "vitest.wizard.config.ts", + config: "test/vitest/vitest.wizard.config.ts", forwardedArgs: [], includePatterns: ["src/wizard/setup.test.ts"], watchMode: false, @@ -291,7 +291,7 @@ describe("test-projects args", () => { it("routes tui targets to the tui config", () => { expect(buildVitestRunPlans(["src/tui/tui.test.ts"])).toEqual([ { - config: "vitest.tui.config.ts", + config: "test/vitest/vitest.tui.config.ts", forwardedArgs: [], includePatterns: ["src/tui/tui.test.ts"], watchMode: false, @@ -302,7 +302,7 @@ describe("test-projects args", () => { it("routes media-understanding targets to the media-understanding config", () => { expect(buildVitestRunPlans(["src/media-understanding/runtime.test.ts"])).toEqual([ { - config: "vitest.media-understanding.config.ts", + config: "test/vitest/vitest.media-understanding.config.ts", forwardedArgs: [], includePatterns: ["src/media-understanding/runtime.test.ts"], watchMode: false, @@ -313,7 +313,7 @@ describe("test-projects args", () => { it("routes command targets to the commands config", () => { expect(buildVitestRunPlans(["src/commands/status.summary.test.ts"])).toEqual([ { - config: "vitest.commands.config.ts", + config: "test/vitest/vitest.commands.config.ts", forwardedArgs: [], includePatterns: ["src/commands/status.summary.test.ts"], watchMode: false, @@ -324,7 +324,7 @@ describe("test-projects args", () => { it("routes auto-reply targets to the auto-reply config", () => { expect(buildVitestRunPlans(["src/auto-reply/reply/get-reply.message-hooks.test.ts"])).toEqual([ { - config: "vitest.auto-reply.config.ts", + config: "test/vitest/vitest.auto-reply.config.ts", forwardedArgs: [], includePatterns: ["src/auto-reply/reply/get-reply.message-hooks.test.ts"], watchMode: false, @@ -335,7 +335,7 @@ describe("test-projects args", () => { it("routes agents targets to the agents config", () => { expect(buildVitestRunPlans(["src/agents/tools/image-tool.test.ts"])).toEqual([ { - config: "vitest.agents.config.ts", + config: "test/vitest/vitest.agents.config.ts", forwardedArgs: [], includePatterns: ["src/agents/tools/image-tool.test.ts"], watchMode: false, @@ -346,7 +346,7 @@ describe("test-projects args", () => { it("routes gateway targets to the gateway config", () => { expect(buildVitestRunPlans(["src/gateway/call.test.ts"])).toEqual([ { - config: "vitest.gateway.config.ts", + config: "test/vitest/vitest.gateway.config.ts", forwardedArgs: [], includePatterns: ["src/gateway/call.test.ts"], watchMode: false, @@ -357,7 +357,7 @@ describe("test-projects args", () => { it("routes hooks targets to the hooks config", () => { expect(buildVitestRunPlans(["src/hooks/install.test.ts"])).toEqual([ { - config: "vitest.hooks.config.ts", + config: "test/vitest/vitest.hooks.config.ts", forwardedArgs: [], includePatterns: ["src/hooks/install.test.ts"], watchMode: false, @@ -368,7 +368,7 @@ describe("test-projects args", () => { it("routes channel targets to the channels config", () => { expect(buildVitestRunPlans(["src/channels/session.test.ts"])).toEqual([ { - config: "vitest.channels.config.ts", + config: "test/vitest/vitest.channels.config.ts", forwardedArgs: [], includePatterns: ["src/channels/session.test.ts"], watchMode: false, @@ -379,7 +379,7 @@ describe("test-projects args", () => { it("routes infra targets to the infra config", () => { expect(buildVitestRunPlans(["src/infra/openclaw-root.test.ts"])).toEqual([ { - config: "vitest.boundary.config.ts", + config: "test/vitest/vitest.boundary.config.ts", forwardedArgs: [], includePatterns: ["src/infra/openclaw-root.test.ts"], watchMode: false, @@ -388,7 +388,7 @@ describe("test-projects args", () => { expect(buildVitestRunPlans(["src/infra/migrations.test.ts"])).toEqual([ { - config: "vitest.infra.config.ts", + config: "test/vitest/vitest.infra.config.ts", forwardedArgs: [], includePatterns: ["src/infra/migrations.test.ts"], watchMode: false, @@ -399,7 +399,7 @@ describe("test-projects args", () => { it("routes acp targets to the acp config", () => { expect(buildVitestRunPlans(["src/acp/control-plane/manager.test.ts"])).toEqual([ { - config: "vitest.acp.config.ts", + config: "test/vitest/vitest.acp.config.ts", forwardedArgs: [], includePatterns: ["src/acp/control-plane/manager.test.ts"], watchMode: false, @@ -473,7 +473,7 @@ describe("test-projects args", () => { it("routes cli targets to the cli config", () => { expect(buildVitestRunPlans(["src/cli/test-runtime-capture.test.ts"])).toEqual([ { - config: "vitest.cli.config.ts", + config: "test/vitest/vitest.cli.config.ts", forwardedArgs: [], includePatterns: ["src/cli/test-runtime-capture.test.ts"], watchMode: false, @@ -484,7 +484,7 @@ describe("test-projects args", () => { it("routes plugin targets to the plugins config", () => { expect(buildVitestRunPlans(["src/plugins/loader.test.ts"])).toEqual([ { - config: "vitest.bundled.config.ts", + config: "test/vitest/vitest.bundled.config.ts", forwardedArgs: [], includePatterns: ["src/plugins/loader.test.ts"], watchMode: false, @@ -493,7 +493,7 @@ describe("test-projects args", () => { expect(buildVitestRunPlans(["src/plugins/discovery.test.ts"])).toEqual([ { - config: "vitest.plugins.config.ts", + config: "test/vitest/vitest.plugins.config.ts", forwardedArgs: [], includePatterns: ["src/plugins/discovery.test.ts"], watchMode: false, @@ -504,7 +504,7 @@ describe("test-projects args", () => { it("widens non-test helper file targets to sibling tests inside the routed suite", () => { expect(buildVitestRunPlans(["src/gateway/gateway-connection.test-mocks.ts"])).toEqual([ { - config: "vitest.gateway.config.ts", + config: "test/vitest/vitest.gateway.config.ts", forwardedArgs: [], includePatterns: ["src/gateway/**/*.test.ts"], watchMode: false, @@ -517,7 +517,7 @@ describe("test-projects args", () => { buildVitestRunPlans(["extensions/memory-core/src/memory/test-runtime-mocks.ts"]), ).toEqual([ { - config: "vitest.extension-memory.config.ts", + config: "test/vitest/vitest.extension-memory.config.ts", forwardedArgs: [], includePatterns: ["extensions/memory-core/src/memory/**/*.test.ts"], watchMode: false, @@ -528,7 +528,7 @@ describe("test-projects args", () => { it("routes msteams extension tests to the msteams config", () => { expect(buildVitestRunPlans(["extensions/msteams/src/config.test.ts"])).toEqual([ { - config: "vitest.extension-msteams.config.ts", + config: "test/vitest/vitest.extension-msteams.config.ts", forwardedArgs: [], includePatterns: ["extensions/msteams/src/config.test.ts"], watchMode: false, @@ -539,7 +539,7 @@ describe("test-projects args", () => { it("routes telegram extension tests to the telegram config", () => { expect(buildVitestRunPlans(["extensions/telegram/src/fetch.test.ts"])).toEqual([ { - config: "vitest.extension-telegram.config.ts", + config: "test/vitest/vitest.extension-telegram.config.ts", forwardedArgs: [], includePatterns: ["extensions/telegram/src/fetch.test.ts"], watchMode: false, @@ -550,7 +550,7 @@ describe("test-projects args", () => { it("routes whatsapp extension tests to the whatsapp config", () => { expect(buildVitestRunPlans(["extensions/whatsapp/src/send.test.ts"])).toEqual([ { - config: "vitest.extension-whatsapp.config.ts", + config: "test/vitest/vitest.extension-whatsapp.config.ts", forwardedArgs: [], includePatterns: ["extensions/whatsapp/src/send.test.ts"], watchMode: false, @@ -561,7 +561,7 @@ describe("test-projects args", () => { it("routes voice-call extension tests to the voice-call config", () => { expect(buildVitestRunPlans(["extensions/voice-call/src/runtime.test.ts"])).toEqual([ { - config: "vitest.extension-voice-call.config.ts", + config: "test/vitest/vitest.extension-voice-call.config.ts", forwardedArgs: [], includePatterns: ["extensions/voice-call/src/runtime.test.ts"], watchMode: false, @@ -572,7 +572,7 @@ describe("test-projects args", () => { it("routes mattermost extension tests to the mattermost config", () => { expect(buildVitestRunPlans(["extensions/mattermost/src/channel.test.ts"])).toEqual([ { - config: "vitest.extension-mattermost.config.ts", + config: "test/vitest/vitest.extension-mattermost.config.ts", forwardedArgs: [], includePatterns: ["extensions/mattermost/src/channel.test.ts"], watchMode: false, @@ -583,7 +583,7 @@ describe("test-projects args", () => { it("routes zalo extension tests to the zalo config", () => { expect(buildVitestRunPlans(["extensions/zalo/src/channel.test.ts"])).toEqual([ { - config: "vitest.extension-zalo.config.ts", + config: "test/vitest/vitest.extension-zalo.config.ts", forwardedArgs: [], includePatterns: ["extensions/zalo/src/channel.test.ts"], watchMode: false, @@ -594,7 +594,7 @@ describe("test-projects args", () => { it("routes matrix extension tests to the matrix config", () => { expect(buildVitestRunPlans(["extensions/matrix/src/channel.test.ts"])).toEqual([ { - config: "vitest.extension-matrix.config.ts", + config: "test/vitest/vitest.extension-matrix.config.ts", forwardedArgs: [], includePatterns: ["extensions/matrix/src/channel.test.ts"], watchMode: false, @@ -605,7 +605,7 @@ describe("test-projects args", () => { it("routes bluebubbles extension tests to the bluebubbles config", () => { expect(buildVitestRunPlans(["extensions/bluebubbles/src/monitor.test.ts"])).toEqual([ { - config: "vitest.extension-bluebubbles.config.ts", + config: "test/vitest/vitest.extension-bluebubbles.config.ts", forwardedArgs: [], includePatterns: ["extensions/bluebubbles/src/monitor.test.ts"], watchMode: false, @@ -616,7 +616,7 @@ describe("test-projects args", () => { it("routes feishu extension tests to the feishu config", () => { expect(buildVitestRunPlans(["extensions/feishu/src/channel.test.ts"])).toEqual([ { - config: "vitest.extension-feishu.config.ts", + config: "test/vitest/vitest.extension-feishu.config.ts", forwardedArgs: [], includePatterns: ["extensions/feishu/src/channel.test.ts"], watchMode: false, @@ -627,7 +627,7 @@ describe("test-projects args", () => { it("routes irc extension tests to the irc config", () => { expect(buildVitestRunPlans(["extensions/irc/src/channel.test.ts"])).toEqual([ { - config: "vitest.extension-irc.config.ts", + config: "test/vitest/vitest.extension-irc.config.ts", forwardedArgs: [], includePatterns: ["extensions/irc/src/channel.test.ts"], watchMode: false, @@ -638,7 +638,7 @@ describe("test-projects args", () => { it("routes acpx extension tests to the acpx config", () => { expect(buildVitestRunPlans(["extensions/acpx/src/runtime.test.ts"])).toEqual([ { - config: "vitest.extension-acpx.config.ts", + config: "test/vitest/vitest.extension-acpx.config.ts", forwardedArgs: [], includePatterns: ["extensions/acpx/src/runtime.test.ts"], watchMode: false, @@ -649,7 +649,7 @@ describe("test-projects args", () => { it("routes diffs extension tests to the diffs config", () => { expect(buildVitestRunPlans(["extensions/diffs/src/render.test.ts"])).toEqual([ { - config: "vitest.extension-diffs.config.ts", + config: "test/vitest/vitest.extension-diffs.config.ts", forwardedArgs: [], includePatterns: ["extensions/diffs/src/render.test.ts"], watchMode: false, @@ -660,7 +660,7 @@ describe("test-projects args", () => { it("routes ui targets to the ui config", () => { expect(buildVitestRunPlans(["ui/src/ui/views/channels.test.ts"])).toEqual([ { - config: "vitest.ui.config.ts", + config: "test/vitest/vitest.ui.config.ts", forwardedArgs: [], includePatterns: ["ui/src/ui/views/channels.test.ts"], watchMode: false, @@ -671,7 +671,7 @@ describe("test-projects args", () => { it("routes utils targets to the utils config", () => { expect(buildVitestRunPlans(["src/utils/path.test.ts"])).toEqual([ { - config: "vitest.utils.config.ts", + config: "test/vitest/vitest.utils.config.ts", forwardedArgs: [], includePatterns: ["src/utils/path.test.ts"], watchMode: false, @@ -682,7 +682,7 @@ describe("test-projects args", () => { it("widens top-level test helpers to sibling repo tests under contracts", () => { expect(buildVitestRunPlans(["test/helpers/temp-home.ts"])).toEqual([ { - config: "vitest.tooling.config.ts", + config: "test/vitest/vitest.tooling.config.ts", forwardedArgs: [], includePatterns: ["test/helpers/**/*.test.ts"], watchMode: false, @@ -693,7 +693,7 @@ describe("test-projects args", () => { it("routes e2e targets straight to the e2e config", () => { expect(buildVitestRunPlans(["src/commands/models.set.e2e.test.ts"])).toEqual([ { - config: "vitest.e2e.config.ts", + config: "test/vitest/vitest.e2e.config.ts", forwardedArgs: ["src/commands/models.set.e2e.test.ts"], includePatterns: null, watchMode: false, @@ -706,7 +706,7 @@ describe("test-projects args", () => { buildVitestRunPlans(["extensions/discord/src/monitor/message-handler.preflight.test.ts"]), ).toEqual([ { - config: "vitest.extension-channels.config.ts", + config: "test/vitest/vitest.extension-channels.config.ts", forwardedArgs: [], includePatterns: ["extensions/discord/src/monitor/message-handler.preflight.test.ts"], watchMode: false, @@ -717,7 +717,7 @@ describe("test-projects args", () => { it("routes browser extension targets to the extensions config", () => { expect(buildVitestRunPlans(["extensions/browser/index.test.ts"])).toEqual([ { - config: "vitest.extensions.config.ts", + config: "test/vitest/vitest.extensions.config.ts", forwardedArgs: [], includePatterns: ["extensions/browser/index.test.ts"], watchMode: false, @@ -728,7 +728,7 @@ describe("test-projects args", () => { it("routes line extension targets to the extension channel config", () => { expect(buildVitestRunPlans(["extensions/line/src/send.test.ts"])).toEqual([ { - config: "vitest.extension-channels.config.ts", + config: "test/vitest/vitest.extension-channels.config.ts", forwardedArgs: [], includePatterns: ["extensions/line/src/send.test.ts"], watchMode: false, @@ -739,7 +739,7 @@ describe("test-projects args", () => { it("routes matrix extension file targets to the matrix config", () => { expect(buildVitestRunPlans(["extensions/matrix/src/channel.test.ts"])).toEqual([ { - config: "vitest.extension-matrix.config.ts", + config: "test/vitest/vitest.extension-matrix.config.ts", forwardedArgs: [], includePatterns: ["extensions/matrix/src/channel.test.ts"], watchMode: false, @@ -750,7 +750,7 @@ describe("test-projects args", () => { it("routes direct provider extension file targets to the extension providers config", () => { expect(buildVitestRunPlans(["extensions/openai/openai-codex-provider.test.ts"])).toEqual([ { - config: "vitest.extension-providers.config.ts", + config: "test/vitest/vitest.extension-providers.config.ts", forwardedArgs: [], includePatterns: ["extensions/openai/openai-codex-provider.test.ts"], watchMode: false, @@ -761,7 +761,7 @@ describe("test-projects args", () => { it("keeps non-provider extension file targets on the shared extensions config", () => { expect(buildVitestRunPlans(["extensions/firecrawl/index.test.ts"])).toEqual([ { - config: "vitest.extensions.config.ts", + config: "test/vitest/vitest.extensions.config.ts", forwardedArgs: [], includePatterns: ["extensions/firecrawl/index.test.ts"], watchMode: false, @@ -779,13 +779,13 @@ describe("test-projects args", () => { ]), ).toEqual([ { - config: "vitest.runtime-config.config.ts", + config: "test/vitest/vitest.runtime-config.config.ts", forwardedArgs: ["-t", "mention"], includePatterns: ["src/config/config-misc.test.ts"], watchMode: false, }, { - config: "vitest.extension-channels.config.ts", + config: "test/vitest/vitest.extension-channels.config.ts", forwardedArgs: ["-t", "mention"], includePatterns: ["extensions/discord/src/monitor/message-handler.preflight.test.ts"], watchMode: false, @@ -802,7 +802,7 @@ describe("test-projects args", () => { ...VITEST_NODE_PREFIX, "run", "--config", - "vitest.extension-channels.config.ts", + "test/vitest/vitest.extension-channels.config.ts", ]); expect(spec?.includePatterns).toEqual([ "extensions/discord/src/monitor/message-handler.preflight.test.ts", diff --git a/test/scripts/run-vitest-profile.test.ts b/test/scripts/run-vitest-profile.test.ts index 8eefd0d2817..4aad8a2970c 100644 --- a/test/scripts/run-vitest-profile.test.ts +++ b/test/scripts/run-vitest-profile.test.ts @@ -33,7 +33,7 @@ describe("scripts/run-vitest-profile", () => { "./node_modules/vitest/vitest.mjs", "run", "--config", - "vitest.unit.config.ts", + "test/vitest/vitest.unit.config.ts", "--no-file-parallelism", ], }); @@ -47,7 +47,7 @@ describe("scripts/run-vitest-profile", () => { "vitest", "run", "--config", - "vitest.unit.config.ts", + "test/vitest/vitest.unit.config.ts", "--no-file-parallelism", "--execArgv=--cpu-prof", "--execArgv=--cpu-prof-dir=/tmp/profile-runner", diff --git a/test/scripts/test-extension.test.ts b/test/scripts/test-extension.test.ts index 3f6c9be86ee..6de47d05149 100644 --- a/test/scripts/test-extension.test.ts +++ b/test/scripts/test-extension.test.ts @@ -38,7 +38,7 @@ describe("scripts/test-extension.mjs", () => { expect(plan.extensionId).toBe("slack"); expect(plan.extensionDir).toBe(bundledPluginRoot("slack")); - expect(plan.config).toBe("vitest.extension-channels.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-channels.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("slack")); expect(plan.hasTests).toBe(true); }); @@ -47,7 +47,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "bluebubbles", cwd: process.cwd() }); expect(plan.extensionId).toBe("bluebubbles"); - expect(plan.config).toBe("vitest.extension-bluebubbles.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-bluebubbles.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("bluebubbles")); expect(plan.hasTests).toBe(true); }); @@ -56,7 +56,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "acpx", cwd: process.cwd() }); expect(plan.extensionId).toBe("acpx"); - expect(plan.config).toBe("vitest.extension-acpx.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-acpx.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("acpx")); expect(plan.hasTests).toBe(true); }); @@ -65,7 +65,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "diffs", cwd: process.cwd() }); expect(plan.extensionId).toBe("diffs"); - expect(plan.config).toBe("vitest.extension-diffs.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-diffs.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("diffs")); expect(plan.hasTests).toBe(true); }); @@ -74,7 +74,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "feishu", cwd: process.cwd() }); expect(plan.extensionId).toBe("feishu"); - expect(plan.config).toBe("vitest.extension-feishu.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-feishu.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("feishu")); expect(plan.hasTests).toBe(true); }); @@ -83,7 +83,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "openai", cwd: process.cwd() }); expect(plan.extensionId).toBe("openai"); - expect(plan.config).toBe("vitest.extension-providers.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-providers.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("openai")); expect(plan.hasTests).toBe(true); }); @@ -92,7 +92,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "matrix", cwd: process.cwd() }); expect(plan.extensionId).toBe("matrix"); - expect(plan.config).toBe("vitest.extension-matrix.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-matrix.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("matrix")); expect(plan.hasTests).toBe(true); }); @@ -101,7 +101,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "telegram", cwd: process.cwd() }); expect(plan.extensionId).toBe("telegram"); - expect(plan.config).toBe("vitest.extension-telegram.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-telegram.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("telegram")); expect(plan.hasTests).toBe(true); }); @@ -110,7 +110,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "whatsapp", cwd: process.cwd() }); expect(plan.extensionId).toBe("whatsapp"); - expect(plan.config).toBe("vitest.extension-whatsapp.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-whatsapp.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("whatsapp")); expect(plan.hasTests).toBe(true); }); @@ -119,7 +119,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "voice-call", cwd: process.cwd() }); expect(plan.extensionId).toBe("voice-call"); - expect(plan.config).toBe("vitest.extension-voice-call.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-voice-call.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("voice-call")); expect(plan.hasTests).toBe(true); }); @@ -128,7 +128,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "mattermost", cwd: process.cwd() }); expect(plan.extensionId).toBe("mattermost"); - expect(plan.config).toBe("vitest.extension-mattermost.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-mattermost.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("mattermost")); expect(plan.hasTests).toBe(true); }); @@ -137,7 +137,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "irc", cwd: process.cwd() }); expect(plan.extensionId).toBe("irc"); - expect(plan.config).toBe("vitest.extension-irc.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-irc.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("irc")); expect(plan.hasTests).toBe(true); }); @@ -146,7 +146,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "zalo", cwd: process.cwd() }); expect(plan.extensionId).toBe("zalo"); - expect(plan.config).toBe("vitest.extension-zalo.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-zalo.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("zalo")); expect(plan.hasTests).toBe(true); }); @@ -155,7 +155,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "memory-core", cwd: process.cwd() }); expect(plan.extensionId).toBe("memory-core"); - expect(plan.config).toBe("vitest.extension-memory.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-memory.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("memory-core")); expect(plan.hasTests).toBe(true); }); @@ -164,7 +164,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "msteams", cwd: process.cwd() }); expect(plan.extensionId).toBe("msteams"); - expect(plan.config).toBe("vitest.extension-msteams.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-msteams.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("msteams")); expect(plan.hasTests).toBe(true); }); @@ -173,7 +173,7 @@ describe("scripts/test-extension.mjs", () => { const plan = resolveExtensionTestPlan({ targetArg: "firecrawl", cwd: process.cwd() }); expect(plan.extensionId).toBe("firecrawl"); - expect(plan.config).toBe("vitest.extensions.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extensions.config.ts"); expect(plan.roots).toContain(bundledPluginRoot("firecrawl")); expect(plan.hasTests).toBe(true); }); @@ -183,7 +183,7 @@ describe("scripts/test-extension.mjs", () => { expect(plan.roots).toContain(bundledPluginRoot("line")); expect(plan.roots).not.toContain("src/line"); - expect(plan.config).toBe("vitest.extension-channels.config.ts"); + expect(plan.config).toBe("test/vitest/vitest.extension-channels.config.ts"); expect(plan.hasTests).toBe(true); }); @@ -281,97 +281,97 @@ describe("scripts/test-extension.mjs", () => { ]); expect(batch.planGroups).toEqual([ { - config: "vitest.extension-acpx.config.ts", + config: "test/vitest/vitest.extension-acpx.config.ts", extensionIds: ["acpx"], roots: [bundledPluginRoot("acpx")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-bluebubbles.config.ts", + config: "test/vitest/vitest.extension-bluebubbles.config.ts", extensionIds: ["bluebubbles"], roots: [bundledPluginRoot("bluebubbles")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-channels.config.ts", + config: "test/vitest/vitest.extension-channels.config.ts", extensionIds: ["line", "slack"], roots: [bundledPluginRoot("slack"), bundledPluginRoot("line")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-diffs.config.ts", + config: "test/vitest/vitest.extension-diffs.config.ts", extensionIds: ["diffs"], roots: [bundledPluginRoot("diffs")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-feishu.config.ts", + config: "test/vitest/vitest.extension-feishu.config.ts", extensionIds: ["feishu"], roots: [bundledPluginRoot("feishu")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-irc.config.ts", + config: "test/vitest/vitest.extension-irc.config.ts", extensionIds: ["irc"], roots: [bundledPluginRoot("irc")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-matrix.config.ts", + config: "test/vitest/vitest.extension-matrix.config.ts", extensionIds: ["matrix"], roots: [bundledPluginRoot("matrix")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-mattermost.config.ts", + config: "test/vitest/vitest.extension-mattermost.config.ts", extensionIds: ["mattermost"], roots: [bundledPluginRoot("mattermost")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-memory.config.ts", + config: "test/vitest/vitest.extension-memory.config.ts", extensionIds: ["memory-core"], roots: [bundledPluginRoot("memory-core")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-msteams.config.ts", + config: "test/vitest/vitest.extension-msteams.config.ts", extensionIds: ["msteams"], roots: [bundledPluginRoot("msteams")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-providers.config.ts", + config: "test/vitest/vitest.extension-providers.config.ts", extensionIds: ["openai"], roots: [bundledPluginRoot("openai")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-telegram.config.ts", + config: "test/vitest/vitest.extension-telegram.config.ts", extensionIds: ["telegram"], roots: [bundledPluginRoot("telegram")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-voice-call.config.ts", + config: "test/vitest/vitest.extension-voice-call.config.ts", extensionIds: ["voice-call"], roots: [bundledPluginRoot("voice-call")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-whatsapp.config.ts", + config: "test/vitest/vitest.extension-whatsapp.config.ts", extensionIds: ["whatsapp"], roots: [bundledPluginRoot("whatsapp")], testFileCount: expect.any(Number), }, { - config: "vitest.extension-zalo.config.ts", + config: "test/vitest/vitest.extension-zalo.config.ts", extensionIds: ["zalo", "zalouser"], roots: [bundledPluginRoot("zalo"), bundledPluginRoot("zalouser")], testFileCount: expect.any(Number), }, { - config: "vitest.extensions.config.ts", + config: "test/vitest/vitest.extensions.config.ts", extensionIds: ["firecrawl"], roots: [bundledPluginRoot("firecrawl")], testFileCount: expect.any(Number), diff --git a/test/scripts/test-projects.test.ts b/test/scripts/test-projects.test.ts index 06213b8438a..de1f3fe5d72 100644 --- a/test/scripts/test-projects.test.ts +++ b/test/scripts/test-projects.test.ts @@ -18,7 +18,7 @@ describe("scripts/test-projects changed-target routing", () => { it("keeps the broad changed run for Vitest wiring edits", () => { expect( resolveChangedTargetArgs(["--changed", "origin/main"], process.cwd(), () => [ - "vitest.shared.config.ts", + "test/vitest/vitest.shared.config.ts", "src/utils/provider-utils.ts", ]), ).toBeNull(); @@ -39,7 +39,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.unit.config.ts", + config: "test/vitest/vitest.unit.config.ts", forwardedArgs: [], includePatterns: ["packages/sdk/src/**/*.test.ts"], watchMode: false, @@ -55,13 +55,13 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.unit-fast.config.ts", + config: "test/vitest/vitest.unit-fast.config.ts", forwardedArgs: [], includePatterns: ["src/shared/string-normalization.test.ts"], watchMode: false, }, { - config: "vitest.utils.config.ts", + config: "test/vitest/vitest.utils.config.ts", forwardedArgs: [], includePatterns: ["src/utils/**/*.test.ts"], watchMode: false, @@ -74,7 +74,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.plugin-sdk-light.config.ts", + config: "test/vitest/vitest.plugin-sdk-light.config.ts", forwardedArgs: [], includePatterns: ["src/plugin-sdk/temp-path.test.ts"], watchMode: false, @@ -87,7 +87,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.commands-light.config.ts", + config: "test/vitest/vitest.commands-light.config.ts", forwardedArgs: [], includePatterns: ["src/commands/status-json-runtime.test.ts"], watchMode: false, @@ -103,7 +103,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.unit-fast.config.ts", + config: "test/vitest/vitest.unit-fast.config.ts", forwardedArgs: [], includePatterns: ["src/commands/status-overview-values.test.ts"], watchMode: false, @@ -118,7 +118,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.unit-fast.config.ts", + config: "test/vitest/vitest.unit-fast.config.ts", forwardedArgs: [], includePatterns: ["src/plugin-sdk/provider-entry.test.ts"], watchMode: false, @@ -134,7 +134,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.unit-fast.config.ts", + config: "test/vitest/vitest.unit-fast.config.ts", forwardedArgs: [], includePatterns: [ "src/commands/status-overview-values.test.ts", @@ -152,7 +152,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.plugin-sdk.config.ts", + config: "test/vitest/vitest.plugin-sdk.config.ts", forwardedArgs: [], includePatterns: ["src/plugin-sdk/**/*.test.ts"], watchMode: false, @@ -167,7 +167,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.commands.config.ts", + config: "test/vitest/vitest.commands.config.ts", forwardedArgs: [], includePatterns: ["src/commands/**/*.test.ts"], watchMode: false, @@ -184,7 +184,7 @@ describe("scripts/test-projects changed-target routing", () => { expect(plans).toEqual([ { - config: "vitest.e2e.config.ts", + config: "test/vitest/vitest.e2e.config.ts", forwardedArgs: [target], includePatterns: null, watchMode: false, @@ -203,37 +203,37 @@ describe("scripts/test-projects full-suite sharding", () => { process.env.OPENCLAW_TEST_PROJECTS_SERIAL = "1"; try { expect(buildFullSuiteVitestRunPlans([], process.cwd()).map((plan) => plan.config)).toEqual([ - "vitest.full-core-unit-fast.config.ts", - "vitest.full-core-unit-src.config.ts", - "vitest.full-core-unit-security.config.ts", - "vitest.full-core-unit-ui.config.ts", - "vitest.full-core-unit-support.config.ts", - "vitest.full-core-support-boundary.config.ts", - "vitest.full-core-contracts.config.ts", - "vitest.full-core-bundled.config.ts", - "vitest.full-core-runtime.config.ts", - "vitest.full-agentic.config.ts", - "vitest.full-auto-reply.config.ts", - "vitest.extension-acpx.config.ts", - "vitest.extension-bluebubbles.config.ts", - "vitest.extension-channels.config.ts", - "vitest.extension-diffs.config.ts", - "vitest.extension-feishu.config.ts", - "vitest.extension-irc.config.ts", - "vitest.extension-mattermost.config.ts", - "vitest.extension-matrix.config.ts", - "vitest.extension-memory.config.ts", - "vitest.extension-messaging.config.ts", - "vitest.extension-msteams.config.ts", - "vitest.extension-providers.config.ts", - "vitest.extension-telegram.config.ts", - "vitest.extension-voice-call.config.ts", - "vitest.extension-whatsapp.config.ts", - "vitest.extension-zalo.config.ts", - "vitest.extension-browser.config.ts", - "vitest.extension-qa.config.ts", - "vitest.extension-media.config.ts", - "vitest.extension-misc.config.ts", + "test/vitest/vitest.full-core-unit-fast.config.ts", + "test/vitest/vitest.full-core-unit-src.config.ts", + "test/vitest/vitest.full-core-unit-security.config.ts", + "test/vitest/vitest.full-core-unit-ui.config.ts", + "test/vitest/vitest.full-core-unit-support.config.ts", + "test/vitest/vitest.full-core-support-boundary.config.ts", + "test/vitest/vitest.full-core-contracts.config.ts", + "test/vitest/vitest.full-core-bundled.config.ts", + "test/vitest/vitest.full-core-runtime.config.ts", + "test/vitest/vitest.full-agentic.config.ts", + "test/vitest/vitest.full-auto-reply.config.ts", + "test/vitest/vitest.extension-acpx.config.ts", + "test/vitest/vitest.extension-bluebubbles.config.ts", + "test/vitest/vitest.extension-channels.config.ts", + "test/vitest/vitest.extension-diffs.config.ts", + "test/vitest/vitest.extension-feishu.config.ts", + "test/vitest/vitest.extension-irc.config.ts", + "test/vitest/vitest.extension-mattermost.config.ts", + "test/vitest/vitest.extension-matrix.config.ts", + "test/vitest/vitest.extension-memory.config.ts", + "test/vitest/vitest.extension-messaging.config.ts", + "test/vitest/vitest.extension-msteams.config.ts", + "test/vitest/vitest.extension-providers.config.ts", + "test/vitest/vitest.extension-telegram.config.ts", + "test/vitest/vitest.extension-voice-call.config.ts", + "test/vitest/vitest.extension-whatsapp.config.ts", + "test/vitest/vitest.extension-zalo.config.ts", + "test/vitest/vitest.extension-browser.config.ts", + "test/vitest/vitest.extension-qa.config.ts", + "test/vitest/vitest.extension-media.config.ts", + "test/vitest/vitest.extension-misc.config.ts", ]); } finally { if (previousParallel === undefined) { @@ -267,10 +267,10 @@ describe("scripts/test-projects full-suite sharding", () => { try { const configs = buildFullSuiteVitestRunPlans([], process.cwd()).map((plan) => plan.config); - expect(configs).toContain("vitest.gateway.config.ts"); - expect(configs).toContain("vitest.extension-telegram.config.ts"); - expect(configs).not.toContain("vitest.full-agentic.config.ts"); - expect(configs).not.toContain("vitest.full-core-unit-fast.config.ts"); + expect(configs).toContain("test/vitest/vitest.gateway-server.config.ts"); + expect(configs).toContain("test/vitest/vitest.extension-telegram.config.ts"); + expect(configs).not.toContain("test/vitest/vitest.full-agentic.config.ts"); + expect(configs).not.toContain("test/vitest/vitest.full-core-unit-fast.config.ts"); } finally { if (previousLeafShards === undefined) { delete process.env.OPENCLAW_TEST_PROJECTS_LEAF_SHARDS; @@ -320,8 +320,8 @@ describe("scripts/test-projects full-suite sharding", () => { try { const configs = buildFullSuiteVitestRunPlans([], process.cwd()).map((plan) => plan.config); - expect(configs).not.toContain("vitest.full-extensions.config.ts"); - expect(configs).toContain("vitest.full-auto-reply.config.ts"); + expect(configs).not.toContain("test/vitest/vitest.full-extensions.config.ts"); + expect(configs).toContain("test/vitest/vitest.full-auto-reply.config.ts"); } finally { if (previous === undefined) { delete process.env.OPENCLAW_TEST_SKIP_FULL_EXTENSIONS_SHARD; @@ -356,64 +356,67 @@ describe("scripts/test-projects full-suite sharding", () => { } expect(plans.map((plan) => plan.config)).toEqual([ - "vitest.unit-fast.config.ts", - "vitest.unit-src.config.ts", - "vitest.unit-security.config.ts", - "vitest.unit-ui.config.ts", - "vitest.unit-support.config.ts", - "vitest.boundary.config.ts", - "vitest.tooling.config.ts", - "vitest.contracts.config.ts", - "vitest.bundled.config.ts", - "vitest.infra.config.ts", - "vitest.hooks.config.ts", - "vitest.acp.config.ts", - "vitest.runtime-config.config.ts", - "vitest.secrets.config.ts", - "vitest.logging.config.ts", - "vitest.process.config.ts", - "vitest.cron.config.ts", - "vitest.media.config.ts", - "vitest.media-understanding.config.ts", - "vitest.shared-core.config.ts", - "vitest.tasks.config.ts", - "vitest.tui.config.ts", - "vitest.ui.config.ts", - "vitest.utils.config.ts", - "vitest.wizard.config.ts", - "vitest.gateway.config.ts", - "vitest.cli.config.ts", - "vitest.commands-light.config.ts", - "vitest.commands.config.ts", - "vitest.agents.config.ts", - "vitest.daemon.config.ts", - "vitest.plugin-sdk-light.config.ts", - "vitest.plugin-sdk.config.ts", - "vitest.plugins.config.ts", - "vitest.channels.config.ts", - "vitest.auto-reply-core.config.ts", - "vitest.auto-reply-top-level.config.ts", - "vitest.auto-reply-reply.config.ts", - "vitest.extension-acpx.config.ts", - "vitest.extension-bluebubbles.config.ts", - "vitest.extension-channels.config.ts", - "vitest.extension-diffs.config.ts", - "vitest.extension-feishu.config.ts", - "vitest.extension-irc.config.ts", - "vitest.extension-mattermost.config.ts", - "vitest.extension-matrix.config.ts", - "vitest.extension-memory.config.ts", - "vitest.extension-messaging.config.ts", - "vitest.extension-msteams.config.ts", - "vitest.extension-providers.config.ts", - "vitest.extension-telegram.config.ts", - "vitest.extension-voice-call.config.ts", - "vitest.extension-whatsapp.config.ts", - "vitest.extension-zalo.config.ts", - "vitest.extension-browser.config.ts", - "vitest.extension-qa.config.ts", - "vitest.extension-media.config.ts", - "vitest.extension-misc.config.ts", + "test/vitest/vitest.unit-fast.config.ts", + "test/vitest/vitest.unit-src.config.ts", + "test/vitest/vitest.unit-security.config.ts", + "test/vitest/vitest.unit-ui.config.ts", + "test/vitest/vitest.unit-support.config.ts", + "test/vitest/vitest.boundary.config.ts", + "test/vitest/vitest.tooling.config.ts", + "test/vitest/vitest.contracts.config.ts", + "test/vitest/vitest.bundled.config.ts", + "test/vitest/vitest.infra.config.ts", + "test/vitest/vitest.hooks.config.ts", + "test/vitest/vitest.acp.config.ts", + "test/vitest/vitest.runtime-config.config.ts", + "test/vitest/vitest.secrets.config.ts", + "test/vitest/vitest.logging.config.ts", + "test/vitest/vitest.process.config.ts", + "test/vitest/vitest.cron.config.ts", + "test/vitest/vitest.media.config.ts", + "test/vitest/vitest.media-understanding.config.ts", + "test/vitest/vitest.shared-core.config.ts", + "test/vitest/vitest.tasks.config.ts", + "test/vitest/vitest.tui.config.ts", + "test/vitest/vitest.ui.config.ts", + "test/vitest/vitest.utils.config.ts", + "test/vitest/vitest.wizard.config.ts", + "test/vitest/vitest.gateway-core.config.ts", + "test/vitest/vitest.gateway-client.config.ts", + "test/vitest/vitest.gateway-methods.config.ts", + "test/vitest/vitest.gateway-server.config.ts", + "test/vitest/vitest.cli.config.ts", + "test/vitest/vitest.commands-light.config.ts", + "test/vitest/vitest.commands.config.ts", + "test/vitest/vitest.agents.config.ts", + "test/vitest/vitest.daemon.config.ts", + "test/vitest/vitest.plugin-sdk-light.config.ts", + "test/vitest/vitest.plugin-sdk.config.ts", + "test/vitest/vitest.plugins.config.ts", + "test/vitest/vitest.channels.config.ts", + "test/vitest/vitest.auto-reply-core.config.ts", + "test/vitest/vitest.auto-reply-top-level.config.ts", + "test/vitest/vitest.auto-reply-reply.config.ts", + "test/vitest/vitest.extension-acpx.config.ts", + "test/vitest/vitest.extension-bluebubbles.config.ts", + "test/vitest/vitest.extension-channels.config.ts", + "test/vitest/vitest.extension-diffs.config.ts", + "test/vitest/vitest.extension-feishu.config.ts", + "test/vitest/vitest.extension-irc.config.ts", + "test/vitest/vitest.extension-mattermost.config.ts", + "test/vitest/vitest.extension-matrix.config.ts", + "test/vitest/vitest.extension-memory.config.ts", + "test/vitest/vitest.extension-messaging.config.ts", + "test/vitest/vitest.extension-msteams.config.ts", + "test/vitest/vitest.extension-providers.config.ts", + "test/vitest/vitest.extension-telegram.config.ts", + "test/vitest/vitest.extension-voice-call.config.ts", + "test/vitest/vitest.extension-whatsapp.config.ts", + "test/vitest/vitest.extension-zalo.config.ts", + "test/vitest/vitest.extension-browser.config.ts", + "test/vitest/vitest.extension-qa.config.ts", + "test/vitest/vitest.extension-media.config.ts", + "test/vitest/vitest.extension-misc.config.ts", ]); expect(plans).toEqual( plans.map((plan) => ({ @@ -433,9 +436,9 @@ describe("scripts/test-projects full-suite sharding", () => { try { const configs = buildFullSuiteVitestRunPlans([], process.cwd()).map((plan) => plan.config); - expect(configs).not.toContain("vitest.extensions.config.ts"); - expect(configs).not.toContain("vitest.extension-providers.config.ts"); - expect(configs).toContain("vitest.auto-reply-reply.config.ts"); + expect(configs).not.toContain("test/vitest/vitest.extensions.config.ts"); + expect(configs).not.toContain("test/vitest/vitest.extension-providers.config.ts"); + expect(configs).toContain("test/vitest/vitest.auto-reply-reply.config.ts"); } finally { if (previousLeafShards === undefined) { delete process.env.OPENCLAW_TEST_PROJECTS_LEAF_SHARDS; @@ -458,8 +461,8 @@ describe("scripts/test-projects full-suite sharding", () => { try { const configs = buildFullSuiteVitestRunPlans([], process.cwd()).map((plan) => plan.config); - expect(configs).toContain("vitest.extension-telegram.config.ts"); - expect(configs).not.toContain("vitest.full-extensions.config.ts"); + expect(configs).toContain("test/vitest/vitest.extension-telegram.config.ts"); + expect(configs).not.toContain("test/vitest/vitest.full-extensions.config.ts"); } finally { if (previousLeafShards === undefined) { delete process.env.OPENCLAW_TEST_PROJECTS_LEAF_SHARDS; diff --git a/test/scripts/test-report-utils.test.ts b/test/scripts/test-report-utils.test.ts index 7e35dbbaab1..a0ac8068bfb 100644 --- a/test/scripts/test-report-utils.test.ts +++ b/test/scripts/test-report-utils.test.ts @@ -95,7 +95,7 @@ describe("scripts/test-report-utils runVitestJsonReport", () => { expect( runVitestJsonReport({ - config: "vitest.unit.config.ts", + config: "test/vitest/vitest.unit.config.ts", reportPath, }), ).toBe(reportPath); @@ -107,7 +107,7 @@ describe("scripts/test-report-utils runVitestJsonReport", () => { "vitest", "run", "--config", - "vitest.unit.config.ts", + "test/vitest/vitest.unit.config.ts", "--reporter=json", "--outputFile", reportPath, diff --git a/test/vitest-boundary-config.test.ts b/test/vitest-boundary-config.test.ts index cd3356548e4..5f4b7ef238a 100644 --- a/test/vitest-boundary-config.test.ts +++ b/test/vitest-boundary-config.test.ts @@ -2,8 +2,8 @@ import { describe, expect, it } from "vitest"; import { createBoundaryVitestConfig, loadBoundaryIncludePatternsFromEnv, -} from "../vitest.boundary.config.ts"; -import { boundaryTestFiles } from "../vitest.unit-paths.mjs"; +} from "./vitest/vitest.boundary.config.ts"; +import { boundaryTestFiles } from "./vitest/vitest.unit-paths.mjs"; describe("loadBoundaryIncludePatternsFromEnv", () => { it("returns null when no include file is configured", () => { diff --git a/test/vitest-extensions-config.test.ts b/test/vitest-extensions-config.test.ts index 391e2f7f9d4..37556a50101 100644 --- a/test/vitest-extensions-config.test.ts +++ b/test/vitest-extensions-config.test.ts @@ -1,7 +1,7 @@ import { afterEach, describe, expect, it } from "vitest"; -import { loadIncludePatternsFromEnv } from "../vitest.extensions.config.ts"; import { bundledPluginFile } from "./helpers/bundled-plugin-paths.js"; import { createPatternFileHelper } from "./helpers/pattern-file.js"; +import { loadIncludePatternsFromEnv } from "./vitest/vitest.extensions.config.ts"; const patternFiles = createPatternFileHelper("openclaw-vitest-extensions-config-"); diff --git a/test/vitest-light-paths.test.ts b/test/vitest-light-paths.test.ts index c28570d69c0..7e960460587 100644 --- a/test/vitest-light-paths.test.ts +++ b/test/vitest-light-paths.test.ts @@ -2,11 +2,11 @@ import { describe, expect, it } from "vitest"; import { isCommandsLightTarget, resolveCommandsLightIncludePattern, -} from "../vitest.commands-light-paths.mjs"; +} from "./vitest/vitest.commands-light-paths.mjs"; import { isPluginSdkLightTarget, resolvePluginSdkLightIncludePattern, -} from "../vitest.plugin-sdk-paths.mjs"; +} from "./vitest/vitest.plugin-sdk-paths.mjs"; describe("light vitest path routing", () => { it("maps plugin-sdk allowlist source and test files to sibling light tests", () => { diff --git a/test/vitest-performance-config.test.ts b/test/vitest-performance-config.test.ts index 83bf900a8c0..f75ab0ce2b7 100644 --- a/test/vitest-performance-config.test.ts +++ b/test/vitest-performance-config.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { loadVitestExperimentalConfig } from "../vitest.performance-config.ts"; +import { loadVitestExperimentalConfig } from "./vitest/vitest.performance-config.ts"; describe("loadVitestExperimentalConfig", () => { it("enables the filesystem module cache by default", () => { diff --git a/test/vitest-projects-config.test.ts b/test/vitest-projects-config.test.ts index 677718605db..83d7bd4783e 100644 --- a/test/vitest-projects-config.test.ts +++ b/test/vitest-projects-config.test.ts @@ -1,15 +1,15 @@ import { describe, expect, it } from "vitest"; -import { createAgentsVitestConfig } from "../vitest.agents.config.ts"; -import bundledConfig from "../vitest.bundled.config.ts"; -import { createCommandsLightVitestConfig } from "../vitest.commands-light.config.ts"; -import { createCommandsVitestConfig } from "../vitest.commands.config.ts"; -import baseConfig, { rootVitestProjects } from "../vitest.config.ts"; -import { createContractsVitestConfig } from "../vitest.contracts.config.ts"; -import { createGatewayVitestConfig } from "../vitest.gateway.config.ts"; -import { createPluginSdkLightVitestConfig } from "../vitest.plugin-sdk-light.config.ts"; -import { createUiVitestConfig } from "../vitest.ui.config.ts"; -import { createUnitFastVitestConfig } from "../vitest.unit-fast.config.ts"; -import { createUnitVitestConfig } from "../vitest.unit.config.ts"; +import { createAgentsVitestConfig } from "./vitest/vitest.agents.config.ts"; +import bundledConfig from "./vitest/vitest.bundled.config.ts"; +import { createCommandsLightVitestConfig } from "./vitest/vitest.commands-light.config.ts"; +import { createCommandsVitestConfig } from "./vitest/vitest.commands.config.ts"; +import baseConfig, { rootVitestProjects } from "./vitest/vitest.config.ts"; +import { createContractsVitestConfig } from "./vitest/vitest.contracts.config.ts"; +import { createGatewayVitestConfig } from "./vitest/vitest.gateway.config.ts"; +import { createPluginSdkLightVitestConfig } from "./vitest/vitest.plugin-sdk-light.config.ts"; +import { createUiVitestConfig } from "./vitest/vitest.ui.config.ts"; +import { createUnitFastVitestConfig } from "./vitest/vitest.unit-fast.config.ts"; +import { createUnitVitestConfig } from "./vitest/vitest.unit.config.ts"; describe("projects vitest config", () => { it("defines the native root project list for all non-live Vitest lanes", () => { diff --git a/test/vitest-scoped-config.test.ts b/test/vitest-scoped-config.test.ts index 43f1be9602c..9abd65cb15d 100644 --- a/test/vitest-scoped-config.test.ts +++ b/test/vitest-scoped-config.test.ts @@ -2,59 +2,59 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; import { describe, expect, it } from "vitest"; -import { createAcpVitestConfig } from "../vitest.acp.config.ts"; -import { createAgentsVitestConfig } from "../vitest.agents.config.ts"; -import { createAutoReplyCoreVitestConfig } from "../vitest.auto-reply-core.config.ts"; -import { createAutoReplyReplyVitestConfig } from "../vitest.auto-reply-reply.config.ts"; -import { createAutoReplyTopLevelVitestConfig } from "../vitest.auto-reply-top-level.config.ts"; -import { createAutoReplyVitestConfig } from "../vitest.auto-reply.config.ts"; -import bundledVitestConfig from "../vitest.bundled.config.ts"; -import { createChannelsVitestConfig } from "../vitest.channels.config.ts"; -import { createCliVitestConfig } from "../vitest.cli.config.ts"; -import { createCommandsLightVitestConfig } from "../vitest.commands-light.config.ts"; -import { createCommandsVitestConfig } from "../vitest.commands.config.ts"; -import { createCronVitestConfig } from "../vitest.cron.config.ts"; -import { createDaemonVitestConfig } from "../vitest.daemon.config.ts"; -import { createExtensionAcpxVitestConfig } from "../vitest.extension-acpx.config.ts"; -import { createExtensionBlueBubblesVitestConfig } from "../vitest.extension-bluebubbles.config.ts"; -import { createExtensionChannelsVitestConfig } from "../vitest.extension-channels.config.ts"; -import { createExtensionDiffsVitestConfig } from "../vitest.extension-diffs.config.ts"; -import { createExtensionFeishuVitestConfig } from "../vitest.extension-feishu.config.ts"; -import { createExtensionIrcVitestConfig } from "../vitest.extension-irc.config.ts"; -import { createExtensionMatrixVitestConfig } from "../vitest.extension-matrix.config.ts"; -import { createExtensionMattermostVitestConfig } from "../vitest.extension-mattermost.config.ts"; -import { createExtensionMemoryVitestConfig } from "../vitest.extension-memory.config.ts"; -import { createExtensionMessagingVitestConfig } from "../vitest.extension-messaging.config.ts"; -import { createExtensionMsTeamsVitestConfig } from "../vitest.extension-msteams.config.ts"; -import { createExtensionProvidersVitestConfig } from "../vitest.extension-providers.config.ts"; -import { createExtensionTelegramVitestConfig } from "../vitest.extension-telegram.config.ts"; -import { createExtensionVoiceCallVitestConfig } from "../vitest.extension-voice-call.config.ts"; -import { createExtensionWhatsAppVitestConfig } from "../vitest.extension-whatsapp.config.ts"; -import { createExtensionZaloVitestConfig } from "../vitest.extension-zalo.config.ts"; -import { createExtensionsVitestConfig } from "../vitest.extensions.config.ts"; -import { createGatewayVitestConfig } from "../vitest.gateway.config.ts"; -import { createHooksVitestConfig } from "../vitest.hooks.config.ts"; -import { createInfraVitestConfig } from "../vitest.infra.config.ts"; -import { createLoggingVitestConfig } from "../vitest.logging.config.ts"; -import { createMediaUnderstandingVitestConfig } from "../vitest.media-understanding.config.ts"; -import { createMediaVitestConfig } from "../vitest.media.config.ts"; -import { createPluginSdkLightVitestConfig } from "../vitest.plugin-sdk-light.config.ts"; -import { createPluginSdkVitestConfig } from "../vitest.plugin-sdk.config.ts"; -import { createPluginsVitestConfig } from "../vitest.plugins.config.ts"; -import { createProcessVitestConfig } from "../vitest.process.config.ts"; -import { createRuntimeConfigVitestConfig } from "../vitest.runtime-config.config.ts"; -import { createScopedVitestConfig, resolveVitestIsolation } from "../vitest.scoped-config.ts"; -import { createSecretsVitestConfig } from "../vitest.secrets.config.ts"; -import { createSharedCoreVitestConfig } from "../vitest.shared-core.config.ts"; -import { createTasksVitestConfig } from "../vitest.tasks.config.ts"; -import { createToolingVitestConfig } from "../vitest.tooling.config.ts"; -import { createTuiVitestConfig } from "../vitest.tui.config.ts"; -import { createUiVitestConfig } from "../vitest.ui.config.ts"; -import { bundledPluginDependentUnitTestFiles } from "../vitest.unit-paths.mjs"; -import { createUtilsVitestConfig } from "../vitest.utils.config.ts"; -import { createWizardVitestConfig } from "../vitest.wizard.config.ts"; import { BUNDLED_PLUGIN_TEST_GLOB, bundledPluginFile } from "./helpers/bundled-plugin-paths.js"; import { cleanupTempDirs, makeTempDir } from "./helpers/temp-dir.js"; +import { createAcpVitestConfig } from "./vitest/vitest.acp.config.ts"; +import { createAgentsVitestConfig } from "./vitest/vitest.agents.config.ts"; +import { createAutoReplyCoreVitestConfig } from "./vitest/vitest.auto-reply-core.config.ts"; +import { createAutoReplyReplyVitestConfig } from "./vitest/vitest.auto-reply-reply.config.ts"; +import { createAutoReplyTopLevelVitestConfig } from "./vitest/vitest.auto-reply-top-level.config.ts"; +import { createAutoReplyVitestConfig } from "./vitest/vitest.auto-reply.config.ts"; +import bundledVitestConfig from "./vitest/vitest.bundled.config.ts"; +import { createChannelsVitestConfig } from "./vitest/vitest.channels.config.ts"; +import { createCliVitestConfig } from "./vitest/vitest.cli.config.ts"; +import { createCommandsLightVitestConfig } from "./vitest/vitest.commands-light.config.ts"; +import { createCommandsVitestConfig } from "./vitest/vitest.commands.config.ts"; +import { createCronVitestConfig } from "./vitest/vitest.cron.config.ts"; +import { createDaemonVitestConfig } from "./vitest/vitest.daemon.config.ts"; +import { createExtensionAcpxVitestConfig } from "./vitest/vitest.extension-acpx.config.ts"; +import { createExtensionBlueBubblesVitestConfig } from "./vitest/vitest.extension-bluebubbles.config.ts"; +import { createExtensionChannelsVitestConfig } from "./vitest/vitest.extension-channels.config.ts"; +import { createExtensionDiffsVitestConfig } from "./vitest/vitest.extension-diffs.config.ts"; +import { createExtensionFeishuVitestConfig } from "./vitest/vitest.extension-feishu.config.ts"; +import { createExtensionIrcVitestConfig } from "./vitest/vitest.extension-irc.config.ts"; +import { createExtensionMatrixVitestConfig } from "./vitest/vitest.extension-matrix.config.ts"; +import { createExtensionMattermostVitestConfig } from "./vitest/vitest.extension-mattermost.config.ts"; +import { createExtensionMemoryVitestConfig } from "./vitest/vitest.extension-memory.config.ts"; +import { createExtensionMessagingVitestConfig } from "./vitest/vitest.extension-messaging.config.ts"; +import { createExtensionMsTeamsVitestConfig } from "./vitest/vitest.extension-msteams.config.ts"; +import { createExtensionProvidersVitestConfig } from "./vitest/vitest.extension-providers.config.ts"; +import { createExtensionTelegramVitestConfig } from "./vitest/vitest.extension-telegram.config.ts"; +import { createExtensionVoiceCallVitestConfig } from "./vitest/vitest.extension-voice-call.config.ts"; +import { createExtensionWhatsAppVitestConfig } from "./vitest/vitest.extension-whatsapp.config.ts"; +import { createExtensionZaloVitestConfig } from "./vitest/vitest.extension-zalo.config.ts"; +import { createExtensionsVitestConfig } from "./vitest/vitest.extensions.config.ts"; +import { createGatewayVitestConfig } from "./vitest/vitest.gateway.config.ts"; +import { createHooksVitestConfig } from "./vitest/vitest.hooks.config.ts"; +import { createInfraVitestConfig } from "./vitest/vitest.infra.config.ts"; +import { createLoggingVitestConfig } from "./vitest/vitest.logging.config.ts"; +import { createMediaUnderstandingVitestConfig } from "./vitest/vitest.media-understanding.config.ts"; +import { createMediaVitestConfig } from "./vitest/vitest.media.config.ts"; +import { createPluginSdkLightVitestConfig } from "./vitest/vitest.plugin-sdk-light.config.ts"; +import { createPluginSdkVitestConfig } from "./vitest/vitest.plugin-sdk.config.ts"; +import { createPluginsVitestConfig } from "./vitest/vitest.plugins.config.ts"; +import { createProcessVitestConfig } from "./vitest/vitest.process.config.ts"; +import { createRuntimeConfigVitestConfig } from "./vitest/vitest.runtime-config.config.ts"; +import { createScopedVitestConfig, resolveVitestIsolation } from "./vitest/vitest.scoped-config.ts"; +import { createSecretsVitestConfig } from "./vitest/vitest.secrets.config.ts"; +import { createSharedCoreVitestConfig } from "./vitest/vitest.shared-core.config.ts"; +import { createTasksVitestConfig } from "./vitest/vitest.tasks.config.ts"; +import { createToolingVitestConfig } from "./vitest/vitest.tooling.config.ts"; +import { createTuiVitestConfig } from "./vitest/vitest.tui.config.ts"; +import { createUiVitestConfig } from "./vitest/vitest.ui.config.ts"; +import { bundledPluginDependentUnitTestFiles } from "./vitest/vitest.unit-paths.mjs"; +import { createUtilsVitestConfig } from "./vitest/vitest.utils.config.ts"; +import { createWizardVitestConfig } from "./vitest/vitest.wizard.config.ts"; const EXTENSIONS_CHANNEL_GLOB = ["extensions", "channel", "**"].join("/"); diff --git a/test/vitest-unit-config.test.ts b/test/vitest-unit-config.test.ts index 92ffd1c37b5..92ecf470bea 100644 --- a/test/vitest-unit-config.test.ts +++ b/test/vitest-unit-config.test.ts @@ -1,11 +1,11 @@ import { afterEach, describe, expect, it } from "vitest"; +import { createPatternFileHelper } from "./helpers/pattern-file.js"; import { createUnitVitestConfig, createUnitVitestConfigWithOptions, loadExtraExcludePatternsFromEnv, loadIncludePatternsFromEnv, -} from "../vitest.unit.config.ts"; -import { createPatternFileHelper } from "./helpers/pattern-file.js"; +} from "./vitest/vitest.unit.config.ts"; const patternFiles = createPatternFileHelper("openclaw-vitest-unit-config-"); diff --git a/test/vitest-unit-fast-config.test.ts b/test/vitest-unit-fast-config.test.ts index e984626fc35..4a037b97204 100644 --- a/test/vitest-unit-fast-config.test.ts +++ b/test/vitest-unit-fast-config.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { createCommandsLightVitestConfig } from "../vitest.commands-light.config.ts"; -import { createPluginSdkLightVitestConfig } from "../vitest.plugin-sdk-light.config.ts"; +import { createCommandsLightVitestConfig } from "./vitest/vitest.commands-light.config.ts"; +import { createPluginSdkLightVitestConfig } from "./vitest/vitest.plugin-sdk-light.config.ts"; import { classifyUnitFastTestFileContent, collectBroadUnitFastTestCandidates, @@ -9,8 +9,8 @@ import { isUnitFastTestFile, unitFastTestFiles, resolveUnitFastTestIncludePattern, -} from "../vitest.unit-fast-paths.mjs"; -import { createUnitFastVitestConfig } from "../vitest.unit-fast.config.ts"; +} from "./vitest/vitest.unit-fast-paths.mjs"; +import { createUnitFastVitestConfig } from "./vitest/vitest.unit-fast.config.ts"; describe("unit-fast vitest lane", () => { it("runs cache-friendly tests without the reset-heavy runner or runtime setup", () => { diff --git a/test/vitest-unit-paths.test.ts b/test/vitest-unit-paths.test.ts index a1ca1354572..3e6d459725d 100644 --- a/test/vitest-unit-paths.test.ts +++ b/test/vitest-unit-paths.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { isUnitConfigTestFile } from "../vitest.unit-paths.mjs"; import { bundledPluginFile } from "./helpers/bundled-plugin-paths.js"; +import { isUnitConfigTestFile } from "./vitest/vitest.unit-paths.mjs"; describe("isUnitConfigTestFile", () => { it("accepts unit-config src tests", () => { diff --git a/vitest.acp.config.ts b/test/vitest/vitest.acp.config.ts similarity index 100% rename from vitest.acp.config.ts rename to test/vitest/vitest.acp.config.ts diff --git a/vitest.agents.config.ts b/test/vitest/vitest.agents.config.ts similarity index 100% rename from vitest.agents.config.ts rename to test/vitest/vitest.agents.config.ts diff --git a/vitest.auto-reply-core.config.ts b/test/vitest/vitest.auto-reply-core.config.ts similarity index 100% rename from vitest.auto-reply-core.config.ts rename to test/vitest/vitest.auto-reply-core.config.ts diff --git a/vitest.auto-reply-reply.config.ts b/test/vitest/vitest.auto-reply-reply.config.ts similarity index 100% rename from vitest.auto-reply-reply.config.ts rename to test/vitest/vitest.auto-reply-reply.config.ts diff --git a/vitest.auto-reply-top-level.config.ts b/test/vitest/vitest.auto-reply-top-level.config.ts similarity index 100% rename from vitest.auto-reply-top-level.config.ts rename to test/vitest/vitest.auto-reply-top-level.config.ts diff --git a/vitest.auto-reply.config.ts b/test/vitest/vitest.auto-reply.config.ts similarity index 100% rename from vitest.auto-reply.config.ts rename to test/vitest/vitest.auto-reply.config.ts diff --git a/vitest.boundary.config.ts b/test/vitest/vitest.boundary.config.ts similarity index 100% rename from vitest.boundary.config.ts rename to test/vitest/vitest.boundary.config.ts diff --git a/vitest.bundled-plugin-paths.ts b/test/vitest/vitest.bundled-plugin-paths.ts similarity index 100% rename from vitest.bundled-plugin-paths.ts rename to test/vitest/vitest.bundled-plugin-paths.ts diff --git a/vitest.bundled.config.ts b/test/vitest/vitest.bundled.config.ts similarity index 100% rename from vitest.bundled.config.ts rename to test/vitest/vitest.bundled.config.ts diff --git a/vitest.channel-paths.mjs b/test/vitest/vitest.channel-paths.mjs similarity index 98% rename from vitest.channel-paths.mjs rename to test/vitest/vitest.channel-paths.mjs index 6e0341cdecd..b3336d14808 100644 --- a/vitest.channel-paths.mjs +++ b/test/vitest/vitest.channel-paths.mjs @@ -2,7 +2,7 @@ import path from "node:path"; import { BUNDLED_PLUGIN_PATH_PREFIX, bundledPluginRoot, -} from "./scripts/lib/bundled-plugin-paths.mjs"; +} from "../../scripts/lib/bundled-plugin-paths.mjs"; const normalizeRepoPath = (value) => value.split(path.sep).join("/"); diff --git a/vitest.channels.config.ts b/test/vitest/vitest.channels.config.ts similarity index 100% rename from vitest.channels.config.ts rename to test/vitest/vitest.channels.config.ts diff --git a/vitest.cli.config.ts b/test/vitest/vitest.cli.config.ts similarity index 100% rename from vitest.cli.config.ts rename to test/vitest/vitest.cli.config.ts diff --git a/vitest.commands-light-paths.mjs b/test/vitest/vitest.commands-light-paths.mjs similarity index 100% rename from vitest.commands-light-paths.mjs rename to test/vitest/vitest.commands-light-paths.mjs diff --git a/vitest.commands-light.config.ts b/test/vitest/vitest.commands-light.config.ts similarity index 100% rename from vitest.commands-light.config.ts rename to test/vitest/vitest.commands-light.config.ts diff --git a/vitest.commands.config.ts b/test/vitest/vitest.commands.config.ts similarity index 100% rename from vitest.commands.config.ts rename to test/vitest/vitest.commands.config.ts diff --git a/test/vitest/vitest.config.ts b/test/vitest/vitest.config.ts new file mode 100644 index 00000000000..5795b67cc03 --- /dev/null +++ b/test/vitest/vitest.config.ts @@ -0,0 +1,74 @@ +import { defineConfig } from "vitest/config"; +import { + resolveDefaultVitestPool, + resolveLocalVitestMaxWorkers, + resolveLocalVitestScheduling, + sharedVitestConfig, +} from "./vitest.shared.config.ts"; + +export { resolveDefaultVitestPool, resolveLocalVitestMaxWorkers, resolveLocalVitestScheduling }; + +export const rootVitestProjects = [ + "test/vitest/vitest.unit.config.ts", + "test/vitest/vitest.infra.config.ts", + "test/vitest/vitest.boundary.config.ts", + "test/vitest/vitest.contracts.config.ts", + "test/vitest/vitest.bundled.config.ts", + "test/vitest/vitest.gateway-core.config.ts", + "test/vitest/vitest.gateway-client.config.ts", + "test/vitest/vitest.gateway-methods.config.ts", + "test/vitest/vitest.gateway-server.config.ts", + "test/vitest/vitest.hooks.config.ts", + "test/vitest/vitest.acp.config.ts", + "test/vitest/vitest.runtime-config.config.ts", + "test/vitest/vitest.secrets.config.ts", + "test/vitest/vitest.cli.config.ts", + "test/vitest/vitest.commands-light.config.ts", + "test/vitest/vitest.commands.config.ts", + "test/vitest/vitest.auto-reply.config.ts", + "test/vitest/vitest.agents.config.ts", + "test/vitest/vitest.daemon.config.ts", + "test/vitest/vitest.media.config.ts", + "test/vitest/vitest.unit-fast.config.ts", + "test/vitest/vitest.plugin-sdk-light.config.ts", + "test/vitest/vitest.plugin-sdk.config.ts", + "test/vitest/vitest.plugins.config.ts", + "test/vitest/vitest.logging.config.ts", + "test/vitest/vitest.process.config.ts", + "test/vitest/vitest.cron.config.ts", + "test/vitest/vitest.media-understanding.config.ts", + "test/vitest/vitest.shared-core.config.ts", + "test/vitest/vitest.tasks.config.ts", + "test/vitest/vitest.tooling.config.ts", + "test/vitest/vitest.tui.config.ts", + "test/vitest/vitest.ui.config.ts", + "test/vitest/vitest.utils.config.ts", + "test/vitest/vitest.wizard.config.ts", + "test/vitest/vitest.channels.config.ts", + "test/vitest/vitest.extension-acpx.config.ts", + "test/vitest/vitest.extension-bluebubbles.config.ts", + "test/vitest/vitest.extension-channels.config.ts", + "test/vitest/vitest.extension-diffs.config.ts", + "test/vitest/vitest.extension-feishu.config.ts", + "test/vitest/vitest.extension-irc.config.ts", + "test/vitest/vitest.extension-mattermost.config.ts", + "test/vitest/vitest.extension-matrix.config.ts", + "test/vitest/vitest.extension-memory.config.ts", + "test/vitest/vitest.extension-msteams.config.ts", + "test/vitest/vitest.extension-messaging.config.ts", + "test/vitest/vitest.extension-providers.config.ts", + "test/vitest/vitest.extension-telegram.config.ts", + "test/vitest/vitest.extension-voice-call.config.ts", + "test/vitest/vitest.extension-whatsapp.config.ts", + "test/vitest/vitest.extension-zalo.config.ts", + "test/vitest/vitest.extensions.config.ts", +] as const; + +export default defineConfig({ + ...sharedVitestConfig, + test: { + ...sharedVitestConfig.test, + runner: "./test/non-isolated-runner.ts", + projects: [...rootVitestProjects], + }, +}); diff --git a/vitest.contracts.config.ts b/test/vitest/vitest.contracts.config.ts similarity index 100% rename from vitest.contracts.config.ts rename to test/vitest/vitest.contracts.config.ts diff --git a/vitest.cron.config.ts b/test/vitest/vitest.cron.config.ts similarity index 100% rename from vitest.cron.config.ts rename to test/vitest/vitest.cron.config.ts diff --git a/vitest.daemon.config.ts b/test/vitest/vitest.daemon.config.ts similarity index 100% rename from vitest.daemon.config.ts rename to test/vitest/vitest.daemon.config.ts diff --git a/vitest.e2e.config.ts b/test/vitest/vitest.e2e.config.ts similarity index 100% rename from vitest.e2e.config.ts rename to test/vitest/vitest.e2e.config.ts diff --git a/vitest.extension-acpx-paths.mjs b/test/vitest/vitest.extension-acpx-paths.mjs similarity index 100% rename from vitest.extension-acpx-paths.mjs rename to test/vitest/vitest.extension-acpx-paths.mjs diff --git a/vitest.extension-acpx.config.ts b/test/vitest/vitest.extension-acpx.config.ts similarity index 100% rename from vitest.extension-acpx.config.ts rename to test/vitest/vitest.extension-acpx.config.ts diff --git a/vitest.extension-bluebubbles-paths.mjs b/test/vitest/vitest.extension-bluebubbles-paths.mjs similarity index 100% rename from vitest.extension-bluebubbles-paths.mjs rename to test/vitest/vitest.extension-bluebubbles-paths.mjs diff --git a/vitest.extension-bluebubbles.config.ts b/test/vitest/vitest.extension-bluebubbles.config.ts similarity index 100% rename from vitest.extension-bluebubbles.config.ts rename to test/vitest/vitest.extension-bluebubbles.config.ts diff --git a/vitest.extension-browser.config.ts b/test/vitest/vitest.extension-browser.config.ts similarity index 100% rename from vitest.extension-browser.config.ts rename to test/vitest/vitest.extension-browser.config.ts diff --git a/vitest.extension-channels.config.ts b/test/vitest/vitest.extension-channels.config.ts similarity index 100% rename from vitest.extension-channels.config.ts rename to test/vitest/vitest.extension-channels.config.ts diff --git a/vitest.extension-diffs-paths.mjs b/test/vitest/vitest.extension-diffs-paths.mjs similarity index 100% rename from vitest.extension-diffs-paths.mjs rename to test/vitest/vitest.extension-diffs-paths.mjs diff --git a/vitest.extension-diffs.config.ts b/test/vitest/vitest.extension-diffs.config.ts similarity index 100% rename from vitest.extension-diffs.config.ts rename to test/vitest/vitest.extension-diffs.config.ts diff --git a/vitest.extension-feishu-paths.mjs b/test/vitest/vitest.extension-feishu-paths.mjs similarity index 75% rename from vitest.extension-feishu-paths.mjs rename to test/vitest/vitest.extension-feishu-paths.mjs index f7cfd5c25cb..e61ef2a2cdd 100644 --- a/vitest.extension-feishu-paths.mjs +++ b/test/vitest/vitest.extension-feishu-paths.mjs @@ -1,4 +1,4 @@ -import { bundledPluginRoot } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { bundledPluginRoot } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const feishuExtensionIds = ["feishu"]; diff --git a/vitest.extension-feishu.config.ts b/test/vitest/vitest.extension-feishu.config.ts similarity index 100% rename from vitest.extension-feishu.config.ts rename to test/vitest/vitest.extension-feishu.config.ts diff --git a/vitest.extension-irc-paths.mjs b/test/vitest/vitest.extension-irc-paths.mjs similarity index 100% rename from vitest.extension-irc-paths.mjs rename to test/vitest/vitest.extension-irc-paths.mjs diff --git a/vitest.extension-irc.config.ts b/test/vitest/vitest.extension-irc.config.ts similarity index 100% rename from vitest.extension-irc.config.ts rename to test/vitest/vitest.extension-irc.config.ts diff --git a/vitest.extension-matrix-paths.mjs b/test/vitest/vitest.extension-matrix-paths.mjs similarity index 75% rename from vitest.extension-matrix-paths.mjs rename to test/vitest/vitest.extension-matrix-paths.mjs index 29d9856200b..5e8fd703f61 100644 --- a/vitest.extension-matrix-paths.mjs +++ b/test/vitest/vitest.extension-matrix-paths.mjs @@ -1,4 +1,4 @@ -import { bundledPluginRoot } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { bundledPluginRoot } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const matrixExtensionIds = ["matrix"]; diff --git a/vitest.extension-matrix.config.ts b/test/vitest/vitest.extension-matrix.config.ts similarity index 100% rename from vitest.extension-matrix.config.ts rename to test/vitest/vitest.extension-matrix.config.ts diff --git a/vitest.extension-mattermost-paths.mjs b/test/vitest/vitest.extension-mattermost-paths.mjs similarity index 77% rename from vitest.extension-mattermost-paths.mjs rename to test/vitest/vitest.extension-mattermost-paths.mjs index d4dcd4cdb2e..0eb602207f5 100644 --- a/vitest.extension-mattermost-paths.mjs +++ b/test/vitest/vitest.extension-mattermost-paths.mjs @@ -1,4 +1,4 @@ -import { bundledPluginRoot } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { bundledPluginRoot } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const mattermostExtensionIds = ["mattermost"]; diff --git a/vitest.extension-mattermost.config.ts b/test/vitest/vitest.extension-mattermost.config.ts similarity index 100% rename from vitest.extension-mattermost.config.ts rename to test/vitest/vitest.extension-mattermost.config.ts diff --git a/vitest.extension-media.config.ts b/test/vitest/vitest.extension-media.config.ts similarity index 100% rename from vitest.extension-media.config.ts rename to test/vitest/vitest.extension-media.config.ts diff --git a/vitest.extension-memory-paths.mjs b/test/vitest/vitest.extension-memory-paths.mjs similarity index 100% rename from vitest.extension-memory-paths.mjs rename to test/vitest/vitest.extension-memory-paths.mjs diff --git a/vitest.extension-memory.config.ts b/test/vitest/vitest.extension-memory.config.ts similarity index 100% rename from vitest.extension-memory.config.ts rename to test/vitest/vitest.extension-memory.config.ts diff --git a/vitest.extension-messaging-paths.mjs b/test/vitest/vitest.extension-messaging-paths.mjs similarity index 83% rename from vitest.extension-messaging-paths.mjs rename to test/vitest/vitest.extension-messaging-paths.mjs index 838a01eeff0..83bfe2cbf22 100644 --- a/vitest.extension-messaging-paths.mjs +++ b/test/vitest/vitest.extension-messaging-paths.mjs @@ -1,4 +1,4 @@ -import { bundledPluginRoot } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { bundledPluginRoot } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const messagingExtensionIds = [ "bluebubbles", diff --git a/vitest.extension-messaging.config.ts b/test/vitest/vitest.extension-messaging.config.ts similarity index 100% rename from vitest.extension-messaging.config.ts rename to test/vitest/vitest.extension-messaging.config.ts diff --git a/vitest.extension-misc.config.ts b/test/vitest/vitest.extension-misc.config.ts similarity index 100% rename from vitest.extension-misc.config.ts rename to test/vitest/vitest.extension-misc.config.ts diff --git a/vitest.extension-msteams-paths.mjs b/test/vitest/vitest.extension-msteams-paths.mjs similarity index 75% rename from vitest.extension-msteams-paths.mjs rename to test/vitest/vitest.extension-msteams-paths.mjs index a1c9284dbaf..6da3d049752 100644 --- a/vitest.extension-msteams-paths.mjs +++ b/test/vitest/vitest.extension-msteams-paths.mjs @@ -1,4 +1,4 @@ -import { bundledPluginRoot } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { bundledPluginRoot } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const msTeamsExtensionIds = ["msteams"]; diff --git a/vitest.extension-msteams.config.ts b/test/vitest/vitest.extension-msteams.config.ts similarity index 100% rename from vitest.extension-msteams.config.ts rename to test/vitest/vitest.extension-msteams.config.ts diff --git a/vitest.extension-provider-paths.mjs b/test/vitest/vitest.extension-provider-paths.mjs similarity index 89% rename from vitest.extension-provider-paths.mjs rename to test/vitest/vitest.extension-provider-paths.mjs index 4b0ea5839d6..2e60e311ad2 100644 --- a/vitest.extension-provider-paths.mjs +++ b/test/vitest/vitest.extension-provider-paths.mjs @@ -1,4 +1,4 @@ -import { bundledPluginRoot } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { bundledPluginRoot } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const providerExtensionIds = [ "amazon-bedrock", diff --git a/vitest.extension-providers.config.ts b/test/vitest/vitest.extension-providers.config.ts similarity index 100% rename from vitest.extension-providers.config.ts rename to test/vitest/vitest.extension-providers.config.ts diff --git a/vitest.extension-qa.config.ts b/test/vitest/vitest.extension-qa.config.ts similarity index 100% rename from vitest.extension-qa.config.ts rename to test/vitest/vitest.extension-qa.config.ts diff --git a/vitest.extension-telegram-paths.mjs b/test/vitest/vitest.extension-telegram-paths.mjs similarity index 100% rename from vitest.extension-telegram-paths.mjs rename to test/vitest/vitest.extension-telegram-paths.mjs diff --git a/vitest.extension-telegram.config.ts b/test/vitest/vitest.extension-telegram.config.ts similarity index 100% rename from vitest.extension-telegram.config.ts rename to test/vitest/vitest.extension-telegram.config.ts diff --git a/vitest.extension-voice-call-paths.mjs b/test/vitest/vitest.extension-voice-call-paths.mjs similarity index 76% rename from vitest.extension-voice-call-paths.mjs rename to test/vitest/vitest.extension-voice-call-paths.mjs index a10542aa35b..43380f1ddc2 100644 --- a/vitest.extension-voice-call-paths.mjs +++ b/test/vitest/vitest.extension-voice-call-paths.mjs @@ -1,4 +1,4 @@ -import { bundledPluginRoot } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { bundledPluginRoot } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const voiceCallExtensionIds = ["voice-call"]; diff --git a/vitest.extension-voice-call.config.ts b/test/vitest/vitest.extension-voice-call.config.ts similarity index 100% rename from vitest.extension-voice-call.config.ts rename to test/vitest/vitest.extension-voice-call.config.ts diff --git a/vitest.extension-whatsapp-paths.mjs b/test/vitest/vitest.extension-whatsapp-paths.mjs similarity index 76% rename from vitest.extension-whatsapp-paths.mjs rename to test/vitest/vitest.extension-whatsapp-paths.mjs index b82b7b463d1..c0b8781b31a 100644 --- a/vitest.extension-whatsapp-paths.mjs +++ b/test/vitest/vitest.extension-whatsapp-paths.mjs @@ -1,4 +1,4 @@ -import { bundledPluginRoot } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { bundledPluginRoot } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const whatsAppExtensionIds = ["whatsapp"]; diff --git a/vitest.extension-whatsapp.config.ts b/test/vitest/vitest.extension-whatsapp.config.ts similarity index 100% rename from vitest.extension-whatsapp.config.ts rename to test/vitest/vitest.extension-whatsapp.config.ts diff --git a/vitest.extension-zalo-paths.mjs b/test/vitest/vitest.extension-zalo-paths.mjs similarity index 100% rename from vitest.extension-zalo-paths.mjs rename to test/vitest/vitest.extension-zalo-paths.mjs diff --git a/vitest.extension-zalo.config.ts b/test/vitest/vitest.extension-zalo.config.ts similarity index 100% rename from vitest.extension-zalo.config.ts rename to test/vitest/vitest.extension-zalo.config.ts diff --git a/vitest.extensions.config.ts b/test/vitest/vitest.extensions.config.ts similarity index 100% rename from vitest.extensions.config.ts rename to test/vitest/vitest.extensions.config.ts diff --git a/vitest.full-core-support-boundary.config.ts b/test/vitest/vitest.full-agentic.config.ts similarity index 76% rename from vitest.full-core-support-boundary.config.ts rename to test/vitest/vitest.full-agentic.config.ts index a270d7fb004..b00eb99cd76 100644 --- a/vitest.full-core-support-boundary.config.ts +++ b/test/vitest/vitest.full-agentic.config.ts @@ -3,6 +3,6 @@ import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( fullSuiteVitestShards.find( - (shard) => shard.config === "vitest.full-core-support-boundary.config.ts", + (shard) => shard.config === "test/vitest/vitest.full-agentic.config.ts", )?.projects ?? [], ); diff --git a/vitest.full-auto-reply.config.ts b/test/vitest/vitest.full-auto-reply.config.ts similarity index 60% rename from vitest.full-auto-reply.config.ts rename to test/vitest/vitest.full-auto-reply.config.ts index b5d14a2790f..a20039f0075 100644 --- a/vitest.full-auto-reply.config.ts +++ b/test/vitest/vitest.full-auto-reply.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-auto-reply.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-auto-reply.config.ts", + )?.projects ?? [], ); diff --git a/vitest.full-core-bundled.config.ts b/test/vitest/vitest.full-core-bundled.config.ts similarity index 60% rename from vitest.full-core-bundled.config.ts rename to test/vitest/vitest.full-core-bundled.config.ts index 1fbe7221d07..c5fd5361862 100644 --- a/vitest.full-core-bundled.config.ts +++ b/test/vitest/vitest.full-core-bundled.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-core-bundled.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-core-bundled.config.ts", + )?.projects ?? [], ); diff --git a/vitest.full-core-contracts.config.ts b/test/vitest/vitest.full-core-contracts.config.ts similarity index 59% rename from vitest.full-core-contracts.config.ts rename to test/vitest/vitest.full-core-contracts.config.ts index b007a1560fa..732325de6cf 100644 --- a/vitest.full-core-contracts.config.ts +++ b/test/vitest/vitest.full-core-contracts.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-core-contracts.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-core-contracts.config.ts", + )?.projects ?? [], ); diff --git a/vitest.full-core-runtime.config.ts b/test/vitest/vitest.full-core-runtime.config.ts similarity index 60% rename from vitest.full-core-runtime.config.ts rename to test/vitest/vitest.full-core-runtime.config.ts index 03c3c79fffa..daa83155a9e 100644 --- a/vitest.full-core-runtime.config.ts +++ b/test/vitest/vitest.full-core-runtime.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-core-runtime.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-core-runtime.config.ts", + )?.projects ?? [], ); diff --git a/test/vitest/vitest.full-core-support-boundary.config.ts b/test/vitest/vitest.full-core-support-boundary.config.ts new file mode 100644 index 00000000000..f484821603e --- /dev/null +++ b/test/vitest/vitest.full-core-support-boundary.config.ts @@ -0,0 +1,8 @@ +import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts"; +import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; + +export default createProjectShardVitestConfig( + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-core-support-boundary.config.ts", + )?.projects ?? [], +); diff --git a/vitest.full-core-unit-fast.config.ts b/test/vitest/vitest.full-core-unit-fast.config.ts similarity index 80% rename from vitest.full-core-unit-fast.config.ts rename to test/vitest/vitest.full-core-unit-fast.config.ts index 1ed50bfc366..74c74d9fe6e 100644 --- a/vitest.full-core-unit-fast.config.ts +++ b/test/vitest/vitest.full-core-unit-fast.config.ts @@ -6,6 +6,6 @@ export default defineConfig({ test: { ...sharedVitestConfig.test, runner: undefined, - projects: ["vitest.unit-fast.config.ts"], + projects: ["test/vitest/vitest.unit-fast.config.ts"], }, }); diff --git a/vitest.full-core-unit-security.config.ts b/test/vitest/vitest.full-core-unit-security.config.ts similarity index 58% rename from vitest.full-core-unit-security.config.ts rename to test/vitest/vitest.full-core-unit-security.config.ts index 40f13fe8eaf..ea58fe811a9 100644 --- a/vitest.full-core-unit-security.config.ts +++ b/test/vitest/vitest.full-core-unit-security.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-core-unit-security.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-core-unit-security.config.ts", + )?.projects ?? [], ); diff --git a/vitest.full-core-unit-src.config.ts b/test/vitest/vitest.full-core-unit-src.config.ts similarity index 59% rename from vitest.full-core-unit-src.config.ts rename to test/vitest/vitest.full-core-unit-src.config.ts index 21a2664df0f..3dfd8eb8e66 100644 --- a/vitest.full-core-unit-src.config.ts +++ b/test/vitest/vitest.full-core-unit-src.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-core-unit-src.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-core-unit-src.config.ts", + )?.projects ?? [], ); diff --git a/vitest.full-core-unit-support.config.ts b/test/vitest/vitest.full-core-unit-support.config.ts similarity index 59% rename from vitest.full-core-unit-support.config.ts rename to test/vitest/vitest.full-core-unit-support.config.ts index 8237c2d5605..8554879e63a 100644 --- a/vitest.full-core-unit-support.config.ts +++ b/test/vitest/vitest.full-core-unit-support.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-core-unit-support.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-core-unit-support.config.ts", + )?.projects ?? [], ); diff --git a/vitest.full-core-unit-ui.config.ts b/test/vitest/vitest.full-core-unit-ui.config.ts similarity index 60% rename from vitest.full-core-unit-ui.config.ts rename to test/vitest/vitest.full-core-unit-ui.config.ts index 7a81d854e7e..d197f5a46d0 100644 --- a/vitest.full-core-unit-ui.config.ts +++ b/test/vitest/vitest.full-core-unit-ui.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-core-unit-ui.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-core-unit-ui.config.ts", + )?.projects ?? [], ); diff --git a/vitest.full-core-unit.config.ts b/test/vitest/vitest.full-core-unit.config.ts similarity index 100% rename from vitest.full-core-unit.config.ts rename to test/vitest/vitest.full-core-unit.config.ts diff --git a/vitest.full-extensions.config.ts b/test/vitest/vitest.full-extensions.config.ts similarity index 60% rename from vitest.full-extensions.config.ts rename to test/vitest/vitest.full-extensions.config.ts index fb745758d47..8fbea84ed78 100644 --- a/vitest.full-extensions.config.ts +++ b/test/vitest/vitest.full-extensions.config.ts @@ -2,6 +2,7 @@ import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-extensions.config.ts") - ?.projects ?? [], + fullSuiteVitestShards.find( + (shard) => shard.config === "test/vitest/vitest.full-extensions.config.ts", + )?.projects ?? [], ); diff --git a/test/vitest/vitest.gateway-client.config.ts b/test/vitest/vitest.gateway-client.config.ts new file mode 100644 index 00000000000..44c30f6047e --- /dev/null +++ b/test/vitest/vitest.gateway-client.config.ts @@ -0,0 +1,21 @@ +import { createScopedVitestConfig } from "./vitest.scoped-config.ts"; + +export function createGatewayClientVitestConfig(env?: Record) { + return createScopedVitestConfig( + [ + "src/gateway/protocol/**/*.test.ts", + "src/gateway/**/*client*.test.ts", + "src/gateway/**/*reconnect*.test.ts", + "src/gateway/**/*android-node*.test.ts", + "src/gateway/**/*gateway-cli-backend*.test.ts", + ], + { + dir: "src/gateway", + env, + exclude: ["src/gateway/**/*server*.test.ts"], + name: "gateway-client", + }, + ); +} + +export default createGatewayClientVitestConfig(); diff --git a/test/vitest/vitest.gateway-core.config.ts b/test/vitest/vitest.gateway-core.config.ts new file mode 100644 index 00000000000..77c8b13ce92 --- /dev/null +++ b/test/vitest/vitest.gateway-core.config.ts @@ -0,0 +1,25 @@ +import { createScopedVitestConfig } from "./vitest.scoped-config.ts"; + +const nonCoreGatewayTestExclude = [ + "src/gateway/server-methods/**/*.test.ts", + "src/gateway/protocol/**/*.test.ts", + "src/gateway/**/*client*.test.ts", + "src/gateway/**/*reconnect*.test.ts", + "src/gateway/**/*android-node*.test.ts", + "src/gateway/**/*gateway-cli-backend*.test.ts", + "src/gateway/**/*server*.test.ts", + "src/gateway/gateway.test.ts", + "src/gateway/server.startup-matrix-migration.integration.test.ts", + "src/gateway/sessions-history-http.test.ts", +]; + +export function createGatewayCoreVitestConfig(env?: Record) { + return createScopedVitestConfig(["src/gateway/**/*.test.ts"], { + dir: "src/gateway", + env, + exclude: nonCoreGatewayTestExclude, + name: "gateway-core", + }); +} + +export default createGatewayCoreVitestConfig(); diff --git a/test/vitest/vitest.gateway-methods.config.ts b/test/vitest/vitest.gateway-methods.config.ts new file mode 100644 index 00000000000..0c9bb86960f --- /dev/null +++ b/test/vitest/vitest.gateway-methods.config.ts @@ -0,0 +1,11 @@ +import { createScopedVitestConfig } from "./vitest.scoped-config.ts"; + +export function createGatewayMethodsVitestConfig(env?: Record) { + return createScopedVitestConfig(["src/gateway/server-methods/**/*.test.ts"], { + dir: "src/gateway", + env, + name: "gateway-methods", + }); +} + +export default createGatewayMethodsVitestConfig(); diff --git a/test/vitest/vitest.gateway-server.config.ts b/test/vitest/vitest.gateway-server.config.ts new file mode 100644 index 00000000000..8648cc98ac6 --- /dev/null +++ b/test/vitest/vitest.gateway-server.config.ts @@ -0,0 +1,17 @@ +import { createScopedVitestConfig } from "./vitest.scoped-config.ts"; + +export function createGatewayServerVitestConfig(env?: Record) { + return createScopedVitestConfig(["src/gateway/**/*server*.test.ts"], { + dir: "src/gateway", + env, + exclude: [ + "src/gateway/server-methods/**/*.test.ts", + "src/gateway/gateway.test.ts", + "src/gateway/server.startup-matrix-migration.integration.test.ts", + "src/gateway/sessions-history-http.test.ts", + ], + name: "gateway-server", + }); +} + +export default createGatewayServerVitestConfig(); diff --git a/vitest.gateway.config.ts b/test/vitest/vitest.gateway.config.ts similarity index 100% rename from vitest.gateway.config.ts rename to test/vitest/vitest.gateway.config.ts diff --git a/vitest.hooks.config.ts b/test/vitest/vitest.hooks.config.ts similarity index 100% rename from vitest.hooks.config.ts rename to test/vitest/vitest.hooks.config.ts diff --git a/vitest.infra.config.ts b/test/vitest/vitest.infra.config.ts similarity index 100% rename from vitest.infra.config.ts rename to test/vitest/vitest.infra.config.ts diff --git a/vitest.live.config.ts b/test/vitest/vitest.live.config.ts similarity index 100% rename from vitest.live.config.ts rename to test/vitest/vitest.live.config.ts diff --git a/vitest.logging.config.ts b/test/vitest/vitest.logging.config.ts similarity index 100% rename from vitest.logging.config.ts rename to test/vitest/vitest.logging.config.ts diff --git a/vitest.media-understanding.config.ts b/test/vitest/vitest.media-understanding.config.ts similarity index 100% rename from vitest.media-understanding.config.ts rename to test/vitest/vitest.media-understanding.config.ts diff --git a/vitest.media.config.ts b/test/vitest/vitest.media.config.ts similarity index 100% rename from vitest.media.config.ts rename to test/vitest/vitest.media.config.ts diff --git a/vitest.pattern-file.ts b/test/vitest/vitest.pattern-file.ts similarity index 100% rename from vitest.pattern-file.ts rename to test/vitest/vitest.pattern-file.ts diff --git a/vitest.performance-config.ts b/test/vitest/vitest.performance-config.ts similarity index 100% rename from vitest.performance-config.ts rename to test/vitest/vitest.performance-config.ts diff --git a/vitest.plugin-sdk-light.config.ts b/test/vitest/vitest.plugin-sdk-light.config.ts similarity index 100% rename from vitest.plugin-sdk-light.config.ts rename to test/vitest/vitest.plugin-sdk-light.config.ts diff --git a/vitest.plugin-sdk-paths.mjs b/test/vitest/vitest.plugin-sdk-paths.mjs similarity index 100% rename from vitest.plugin-sdk-paths.mjs rename to test/vitest/vitest.plugin-sdk-paths.mjs diff --git a/vitest.plugin-sdk.config.ts b/test/vitest/vitest.plugin-sdk.config.ts similarity index 100% rename from vitest.plugin-sdk.config.ts rename to test/vitest/vitest.plugin-sdk.config.ts diff --git a/vitest.plugins.config.ts b/test/vitest/vitest.plugins.config.ts similarity index 100% rename from vitest.plugins.config.ts rename to test/vitest/vitest.plugins.config.ts diff --git a/vitest.process.config.ts b/test/vitest/vitest.process.config.ts similarity index 100% rename from vitest.process.config.ts rename to test/vitest/vitest.process.config.ts diff --git a/vitest.project-shard-config.ts b/test/vitest/vitest.project-shard-config.ts similarity index 100% rename from vitest.project-shard-config.ts rename to test/vitest/vitest.project-shard-config.ts diff --git a/vitest.runtime-config.config.ts b/test/vitest/vitest.runtime-config.config.ts similarity index 100% rename from vitest.runtime-config.config.ts rename to test/vitest/vitest.runtime-config.config.ts diff --git a/vitest.scoped-config.ts b/test/vitest/vitest.scoped-config.ts similarity index 100% rename from vitest.scoped-config.ts rename to test/vitest/vitest.scoped-config.ts diff --git a/vitest.secrets.config.ts b/test/vitest/vitest.secrets.config.ts similarity index 100% rename from vitest.secrets.config.ts rename to test/vitest/vitest.secrets.config.ts diff --git a/vitest.shared-core.config.ts b/test/vitest/vitest.shared-core.config.ts similarity index 100% rename from vitest.shared-core.config.ts rename to test/vitest/vitest.shared-core.config.ts diff --git a/vitest.shared.config.ts b/test/vitest/vitest.shared.config.ts similarity index 72% rename from vitest.shared.config.ts rename to test/vitest/vitest.shared.config.ts index 2c359667af3..1c545623750 100644 --- a/vitest.shared.config.ts +++ b/test/vitest/vitest.shared.config.ts @@ -1,7 +1,7 @@ import os from "node:os"; import path from "node:path"; import { fileURLToPath } from "node:url"; -import { pluginSdkSubpaths } from "./scripts/lib/plugin-sdk-entries.mjs"; +import { pluginSdkSubpaths } from "../../scripts/lib/plugin-sdk-entries.mjs"; import { BUNDLED_PLUGIN_ROOT_DIR, BUNDLED_PLUGIN_TEST_GLOB, @@ -159,7 +159,7 @@ export function resolveDefaultVitestPool( return "threads"; } -const repoRoot = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../.."); const isCI = process.env.CI === "true" || process.env.GITHUB_ACTIONS === "true"; const isWindows = process.platform === "win32"; const defaultPool = resolveDefaultVitestPool(); @@ -216,75 +216,79 @@ export const sharedVitestConfig = { "test/setup.shared.ts", "test/setup.extensions.ts", "test/setup-openclaw-runtime.ts", - "vitest.channel-paths.mjs", - "vitest.channels.config.ts", - "vitest.acp.config.ts", - "vitest.boundary.config.ts", - "vitest.bundled.config.ts", - "vitest.cli.config.ts", + "test/vitest/vitest.channel-paths.mjs", + "test/vitest/vitest.channels.config.ts", + "test/vitest/vitest.acp.config.ts", + "test/vitest/vitest.boundary.config.ts", + "test/vitest/vitest.bundled.config.ts", + "test/vitest/vitest.cli.config.ts", "vitest.config.ts", - "vitest.contracts.config.ts", - "vitest.cron.config.ts", - "vitest.daemon.config.ts", - "vitest.e2e.config.ts", - "vitest.extension-acpx-paths.mjs", - "vitest.extension-acpx.config.ts", - "vitest.extension-bluebubbles-paths.mjs", - "vitest.extension-bluebubbles.config.ts", - "vitest.extension-channels.config.ts", - "vitest.extension-diffs-paths.mjs", - "vitest.extension-diffs.config.ts", - "vitest.extension-feishu-paths.mjs", - "vitest.extension-feishu.config.ts", - "vitest.extension-irc-paths.mjs", - "vitest.extension-irc.config.ts", - "vitest.extension-mattermost-paths.mjs", - "vitest.extension-mattermost.config.ts", - "vitest.extension-matrix-paths.mjs", - "vitest.extension-matrix.config.ts", - "vitest.extension-memory-paths.mjs", - "vitest.extension-memory.config.ts", - "vitest.extension-messaging-paths.mjs", - "vitest.extension-messaging.config.ts", - "vitest.extension-msteams-paths.mjs", - "vitest.extension-msteams.config.ts", - "vitest.extensions.config.ts", - "vitest.gateway.config.ts", - "vitest.hooks.config.ts", - "vitest.infra.config.ts", - "vitest.live.config.ts", - "vitest.media.config.ts", - "vitest.media-understanding.config.ts", - "vitest.performance-config.ts", - "vitest.unit-fast.config.ts", - "vitest.unit-fast-paths.mjs", - "vitest.scoped-config.ts", - "vitest.shared-core.config.ts", - "vitest.shared.config.ts", - "vitest.tooling.config.ts", - "vitest.tui.config.ts", - "vitest.ui.config.ts", - "vitest.utils.config.ts", - "vitest.unit.config.ts", - "vitest.unit-paths.mjs", - "vitest.runtime-config.config.ts", - "vitest.secrets.config.ts", - "vitest.plugin-sdk.config.ts", - "vitest.plugins.config.ts", - "vitest.extension-telegram-paths.mjs", - "vitest.extension-telegram.config.ts", - "vitest.extension-voice-call-paths.mjs", - "vitest.extension-voice-call.config.ts", - "vitest.extension-whatsapp-paths.mjs", - "vitest.extension-whatsapp.config.ts", - "vitest.extension-zalo-paths.mjs", - "vitest.extension-zalo.config.ts", - "vitest.extension-provider-paths.mjs", - "vitest.extension-providers.config.ts", - "vitest.logging.config.ts", - "vitest.process.config.ts", - "vitest.tasks.config.ts", - "vitest.wizard.config.ts", + "test/vitest/vitest.contracts.config.ts", + "test/vitest/vitest.cron.config.ts", + "test/vitest/vitest.daemon.config.ts", + "test/vitest/vitest.e2e.config.ts", + "test/vitest/vitest.extension-acpx-paths.mjs", + "test/vitest/vitest.extension-acpx.config.ts", + "test/vitest/vitest.extension-bluebubbles-paths.mjs", + "test/vitest/vitest.extension-bluebubbles.config.ts", + "test/vitest/vitest.extension-channels.config.ts", + "test/vitest/vitest.extension-diffs-paths.mjs", + "test/vitest/vitest.extension-diffs.config.ts", + "test/vitest/vitest.extension-feishu-paths.mjs", + "test/vitest/vitest.extension-feishu.config.ts", + "test/vitest/vitest.extension-irc-paths.mjs", + "test/vitest/vitest.extension-irc.config.ts", + "test/vitest/vitest.extension-mattermost-paths.mjs", + "test/vitest/vitest.extension-mattermost.config.ts", + "test/vitest/vitest.extension-matrix-paths.mjs", + "test/vitest/vitest.extension-matrix.config.ts", + "test/vitest/vitest.extension-memory-paths.mjs", + "test/vitest/vitest.extension-memory.config.ts", + "test/vitest/vitest.extension-messaging-paths.mjs", + "test/vitest/vitest.extension-messaging.config.ts", + "test/vitest/vitest.extension-msteams-paths.mjs", + "test/vitest/vitest.extension-msteams.config.ts", + "test/vitest/vitest.extensions.config.ts", + "test/vitest/vitest.gateway.config.ts", + "test/vitest/vitest.gateway-core.config.ts", + "test/vitest/vitest.gateway-client.config.ts", + "test/vitest/vitest.gateway-methods.config.ts", + "test/vitest/vitest.gateway-server.config.ts", + "test/vitest/vitest.hooks.config.ts", + "test/vitest/vitest.infra.config.ts", + "test/vitest/vitest.live.config.ts", + "test/vitest/vitest.media.config.ts", + "test/vitest/vitest.media-understanding.config.ts", + "test/vitest/vitest.performance-config.ts", + "test/vitest/vitest.unit-fast.config.ts", + "test/vitest/vitest.unit-fast-paths.mjs", + "test/vitest/vitest.scoped-config.ts", + "test/vitest/vitest.shared-core.config.ts", + "test/vitest/vitest.shared.config.ts", + "test/vitest/vitest.tooling.config.ts", + "test/vitest/vitest.tui.config.ts", + "test/vitest/vitest.ui.config.ts", + "test/vitest/vitest.utils.config.ts", + "test/vitest/vitest.unit.config.ts", + "test/vitest/vitest.unit-paths.mjs", + "test/vitest/vitest.runtime-config.config.ts", + "test/vitest/vitest.secrets.config.ts", + "test/vitest/vitest.plugin-sdk.config.ts", + "test/vitest/vitest.plugins.config.ts", + "test/vitest/vitest.extension-telegram-paths.mjs", + "test/vitest/vitest.extension-telegram.config.ts", + "test/vitest/vitest.extension-voice-call-paths.mjs", + "test/vitest/vitest.extension-voice-call.config.ts", + "test/vitest/vitest.extension-whatsapp-paths.mjs", + "test/vitest/vitest.extension-whatsapp.config.ts", + "test/vitest/vitest.extension-zalo-paths.mjs", + "test/vitest/vitest.extension-zalo.config.ts", + "test/vitest/vitest.extension-provider-paths.mjs", + "test/vitest/vitest.extension-providers.config.ts", + "test/vitest/vitest.logging.config.ts", + "test/vitest/vitest.process.config.ts", + "test/vitest/vitest.tasks.config.ts", + "test/vitest/vitest.wizard.config.ts", ], include: [ "src/**/*.test.ts", diff --git a/vitest.system-load.ts b/test/vitest/vitest.system-load.ts similarity index 100% rename from vitest.system-load.ts rename to test/vitest/vitest.system-load.ts diff --git a/vitest.tasks.config.ts b/test/vitest/vitest.tasks.config.ts similarity index 100% rename from vitest.tasks.config.ts rename to test/vitest/vitest.tasks.config.ts diff --git a/test/vitest/vitest.test-shards.mjs b/test/vitest/vitest.test-shards.mjs new file mode 100644 index 00000000000..87c3ff7a489 --- /dev/null +++ b/test/vitest/vitest.test-shards.mjs @@ -0,0 +1,126 @@ +export const autoReplyCoreTestInclude = ["src/auto-reply/*.test.ts"]; + +export const autoReplyCoreTestExclude = ["src/auto-reply/reply*.test.ts"]; + +export const autoReplyTopLevelReplyTestInclude = ["src/auto-reply/reply*.test.ts"]; + +export const autoReplyReplySubtreeTestInclude = ["src/auto-reply/reply/**/*.test.ts"]; + +export const fullSuiteVitestShards = [ + { + config: "test/vitest/vitest.full-core-unit-fast.config.ts", + name: "core-unit-fast", + projects: ["test/vitest/vitest.unit-fast.config.ts"], + }, + { + config: "test/vitest/vitest.full-core-unit-src.config.ts", + name: "core-unit-src", + projects: ["test/vitest/vitest.unit-src.config.ts"], + }, + { + config: "test/vitest/vitest.full-core-unit-security.config.ts", + name: "core-unit-security", + projects: ["test/vitest/vitest.unit-security.config.ts"], + }, + { + config: "test/vitest/vitest.full-core-unit-ui.config.ts", + name: "core-unit-ui", + projects: ["test/vitest/vitest.unit-ui.config.ts"], + }, + { + config: "test/vitest/vitest.full-core-unit-support.config.ts", + name: "core-unit-support", + projects: ["test/vitest/vitest.unit-support.config.ts"], + }, + { + config: "test/vitest/vitest.full-core-support-boundary.config.ts", + name: "core-support-boundary", + projects: ["test/vitest/vitest.boundary.config.ts", "test/vitest/vitest.tooling.config.ts"], + }, + { + config: "test/vitest/vitest.full-core-contracts.config.ts", + name: "core-contracts", + projects: ["test/vitest/vitest.contracts.config.ts"], + }, + { + config: "test/vitest/vitest.full-core-bundled.config.ts", + name: "core-bundled", + projects: ["test/vitest/vitest.bundled.config.ts"], + }, + { + config: "test/vitest/vitest.full-core-runtime.config.ts", + name: "core-runtime", + projects: [ + "test/vitest/vitest.infra.config.ts", + "test/vitest/vitest.hooks.config.ts", + "test/vitest/vitest.acp.config.ts", + "test/vitest/vitest.runtime-config.config.ts", + "test/vitest/vitest.secrets.config.ts", + "test/vitest/vitest.logging.config.ts", + "test/vitest/vitest.process.config.ts", + "test/vitest/vitest.cron.config.ts", + "test/vitest/vitest.media.config.ts", + "test/vitest/vitest.media-understanding.config.ts", + "test/vitest/vitest.shared-core.config.ts", + "test/vitest/vitest.tasks.config.ts", + "test/vitest/vitest.tui.config.ts", + "test/vitest/vitest.ui.config.ts", + "test/vitest/vitest.utils.config.ts", + "test/vitest/vitest.wizard.config.ts", + ], + }, + { + config: "test/vitest/vitest.full-agentic.config.ts", + name: "agentic", + projects: [ + "test/vitest/vitest.gateway-core.config.ts", + "test/vitest/vitest.gateway-client.config.ts", + "test/vitest/vitest.gateway-methods.config.ts", + "test/vitest/vitest.gateway-server.config.ts", + "test/vitest/vitest.cli.config.ts", + "test/vitest/vitest.commands-light.config.ts", + "test/vitest/vitest.commands.config.ts", + "test/vitest/vitest.agents.config.ts", + "test/vitest/vitest.daemon.config.ts", + "test/vitest/vitest.plugin-sdk-light.config.ts", + "test/vitest/vitest.plugin-sdk.config.ts", + "test/vitest/vitest.plugins.config.ts", + "test/vitest/vitest.channels.config.ts", + ], + }, + { + config: "test/vitest/vitest.full-auto-reply.config.ts", + name: "auto-reply", + projects: [ + "test/vitest/vitest.auto-reply-core.config.ts", + "test/vitest/vitest.auto-reply-top-level.config.ts", + "test/vitest/vitest.auto-reply-reply.config.ts", + ], + }, + { + config: "test/vitest/vitest.full-extensions.config.ts", + name: "extensions", + projects: [ + "test/vitest/vitest.extension-acpx.config.ts", + "test/vitest/vitest.extension-bluebubbles.config.ts", + "test/vitest/vitest.extension-channels.config.ts", + "test/vitest/vitest.extension-diffs.config.ts", + "test/vitest/vitest.extension-feishu.config.ts", + "test/vitest/vitest.extension-irc.config.ts", + "test/vitest/vitest.extension-mattermost.config.ts", + "test/vitest/vitest.extension-matrix.config.ts", + "test/vitest/vitest.extension-memory.config.ts", + "test/vitest/vitest.extension-messaging.config.ts", + "test/vitest/vitest.extension-msteams.config.ts", + "test/vitest/vitest.extension-providers.config.ts", + "test/vitest/vitest.extension-telegram.config.ts", + "test/vitest/vitest.extension-voice-call.config.ts", + "test/vitest/vitest.extension-whatsapp.config.ts", + "test/vitest/vitest.extension-zalo.config.ts", + "test/vitest/vitest.extension-browser.config.ts", + "test/vitest/vitest.extension-qa.config.ts", + "test/vitest/vitest.extension-media.config.ts", + "test/vitest/vitest.extension-misc.config.ts", + ], + }, +]; diff --git a/vitest.tooling.config.ts b/test/vitest/vitest.tooling.config.ts similarity index 100% rename from vitest.tooling.config.ts rename to test/vitest/vitest.tooling.config.ts diff --git a/vitest.tui.config.ts b/test/vitest/vitest.tui.config.ts similarity index 100% rename from vitest.tui.config.ts rename to test/vitest/vitest.tui.config.ts diff --git a/vitest.ui.config.ts b/test/vitest/vitest.ui.config.ts similarity index 100% rename from vitest.ui.config.ts rename to test/vitest/vitest.ui.config.ts diff --git a/vitest.unit-fast-paths.mjs b/test/vitest/vitest.unit-fast-paths.mjs similarity index 100% rename from vitest.unit-fast-paths.mjs rename to test/vitest/vitest.unit-fast-paths.mjs diff --git a/vitest.unit-fast.config.ts b/test/vitest/vitest.unit-fast.config.ts similarity index 100% rename from vitest.unit-fast.config.ts rename to test/vitest/vitest.unit-fast.config.ts diff --git a/vitest.unit-paths.mjs b/test/vitest/vitest.unit-paths.mjs similarity index 97% rename from vitest.unit-paths.mjs rename to test/vitest/vitest.unit-paths.mjs index 3df3ca604e7..017cd4d1c6c 100644 --- a/vitest.unit-paths.mjs +++ b/test/vitest/vitest.unit-paths.mjs @@ -1,5 +1,5 @@ import path from "node:path"; -import { BUNDLED_PLUGIN_ROOT_DIR } from "./scripts/lib/bundled-plugin-paths.mjs"; +import { BUNDLED_PLUGIN_ROOT_DIR } from "../../scripts/lib/bundled-plugin-paths.mjs"; export const unitTestIncludePatterns = [ "src/**/*.test.ts", diff --git a/vitest.unit-security.config.ts b/test/vitest/vitest.unit-security.config.ts similarity index 100% rename from vitest.unit-security.config.ts rename to test/vitest/vitest.unit-security.config.ts diff --git a/vitest.unit-src.config.ts b/test/vitest/vitest.unit-src.config.ts similarity index 100% rename from vitest.unit-src.config.ts rename to test/vitest/vitest.unit-src.config.ts diff --git a/vitest.unit-support.config.ts b/test/vitest/vitest.unit-support.config.ts similarity index 100% rename from vitest.unit-support.config.ts rename to test/vitest/vitest.unit-support.config.ts diff --git a/vitest.unit-ui.config.ts b/test/vitest/vitest.unit-ui.config.ts similarity index 100% rename from vitest.unit-ui.config.ts rename to test/vitest/vitest.unit-ui.config.ts diff --git a/vitest.unit.config.ts b/test/vitest/vitest.unit.config.ts similarity index 100% rename from vitest.unit.config.ts rename to test/vitest/vitest.unit.config.ts diff --git a/vitest.utils.config.ts b/test/vitest/vitest.utils.config.ts similarity index 100% rename from vitest.utils.config.ts rename to test/vitest/vitest.utils.config.ts diff --git a/vitest.wizard.config.ts b/test/vitest/vitest.wizard.config.ts similarity index 100% rename from vitest.wizard.config.ts rename to test/vitest/vitest.wizard.config.ts diff --git a/ui/vitest.config.ts b/ui/vitest.config.ts index cab975b255a..ef72b3cb28e 100644 --- a/ui/vitest.config.ts +++ b/ui/vitest.config.ts @@ -1,6 +1,9 @@ import { playwright } from "@vitest/browser-playwright"; import { defineConfig, defineProject } from "vitest/config"; -import { jsdomOptimizedDeps, resolveDefaultVitestPool } from "../vitest.shared.config.ts"; +import { + jsdomOptimizedDeps, + resolveDefaultVitestPool, +} from "../test/vitest/vitest.shared.config.ts"; const sharedUiTestConfig = { isolate: true, diff --git a/ui/vitest.node.config.ts b/ui/vitest.node.config.ts index bf379186ec9..e6895270c78 100644 --- a/ui/vitest.node.config.ts +++ b/ui/vitest.node.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "vitest/config"; -import { resolveDefaultVitestPool } from "../vitest.shared.config.ts"; +import { resolveDefaultVitestPool } from "../test/vitest/vitest.shared.config.ts"; // Node-only tests for pure logic (no Playwright/browser dependency). export default defineConfig({ diff --git a/vitest.config.ts b/vitest.config.ts index 5e4a302dad4..a6ad4a877da 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,71 +1,7 @@ -import { defineConfig } from "vitest/config"; -import { +export { + default, resolveDefaultVitestPool, resolveLocalVitestMaxWorkers, resolveLocalVitestScheduling, - sharedVitestConfig, -} from "./vitest.shared.config.ts"; - -export { resolveDefaultVitestPool, resolveLocalVitestMaxWorkers, resolveLocalVitestScheduling }; - -export const rootVitestProjects = [ - "vitest.unit.config.ts", - "vitest.infra.config.ts", - "vitest.boundary.config.ts", - "vitest.contracts.config.ts", - "vitest.bundled.config.ts", - "vitest.gateway.config.ts", - "vitest.hooks.config.ts", - "vitest.acp.config.ts", - "vitest.runtime-config.config.ts", - "vitest.secrets.config.ts", - "vitest.cli.config.ts", - "vitest.commands-light.config.ts", - "vitest.commands.config.ts", - "vitest.auto-reply.config.ts", - "vitest.agents.config.ts", - "vitest.daemon.config.ts", - "vitest.media.config.ts", - "vitest.unit-fast.config.ts", - "vitest.plugin-sdk-light.config.ts", - "vitest.plugin-sdk.config.ts", - "vitest.plugins.config.ts", - "vitest.logging.config.ts", - "vitest.process.config.ts", - "vitest.cron.config.ts", - "vitest.media-understanding.config.ts", - "vitest.shared-core.config.ts", - "vitest.tasks.config.ts", - "vitest.tooling.config.ts", - "vitest.tui.config.ts", - "vitest.ui.config.ts", - "vitest.utils.config.ts", - "vitest.wizard.config.ts", - "vitest.channels.config.ts", - "vitest.extension-acpx.config.ts", - "vitest.extension-bluebubbles.config.ts", - "vitest.extension-channels.config.ts", - "vitest.extension-diffs.config.ts", - "vitest.extension-feishu.config.ts", - "vitest.extension-irc.config.ts", - "vitest.extension-mattermost.config.ts", - "vitest.extension-matrix.config.ts", - "vitest.extension-memory.config.ts", - "vitest.extension-msteams.config.ts", - "vitest.extension-messaging.config.ts", - "vitest.extension-providers.config.ts", - "vitest.extension-telegram.config.ts", - "vitest.extension-voice-call.config.ts", - "vitest.extension-whatsapp.config.ts", - "vitest.extension-zalo.config.ts", - "vitest.extensions.config.ts", -] as const; - -export default defineConfig({ - ...sharedVitestConfig, - test: { - ...sharedVitestConfig.test, - runner: "./test/non-isolated-runner.ts", - projects: [...rootVitestProjects], - }, -}); + rootVitestProjects, +} from "./test/vitest/vitest.config.ts"; diff --git a/vitest.full-agentic.config.ts b/vitest.full-agentic.config.ts deleted file mode 100644 index eb1763213e4..00000000000 --- a/vitest.full-agentic.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createProjectShardVitestConfig } from "./vitest.project-shard-config.ts"; -import { fullSuiteVitestShards } from "./vitest.test-shards.mjs"; - -export default createProjectShardVitestConfig( - fullSuiteVitestShards.find((shard) => shard.config === "vitest.full-agentic.config.ts") - ?.projects ?? [], -); diff --git a/vitest.test-shards.mjs b/vitest.test-shards.mjs deleted file mode 100644 index d0976e49810..00000000000 --- a/vitest.test-shards.mjs +++ /dev/null @@ -1,123 +0,0 @@ -export const autoReplyCoreTestInclude = ["src/auto-reply/*.test.ts"]; - -export const autoReplyCoreTestExclude = ["src/auto-reply/reply*.test.ts"]; - -export const autoReplyTopLevelReplyTestInclude = ["src/auto-reply/reply*.test.ts"]; - -export const autoReplyReplySubtreeTestInclude = ["src/auto-reply/reply/**/*.test.ts"]; - -export const fullSuiteVitestShards = [ - { - config: "vitest.full-core-unit-fast.config.ts", - name: "core-unit-fast", - projects: ["vitest.unit-fast.config.ts"], - }, - { - config: "vitest.full-core-unit-src.config.ts", - name: "core-unit-src", - projects: ["vitest.unit-src.config.ts"], - }, - { - config: "vitest.full-core-unit-security.config.ts", - name: "core-unit-security", - projects: ["vitest.unit-security.config.ts"], - }, - { - config: "vitest.full-core-unit-ui.config.ts", - name: "core-unit-ui", - projects: ["vitest.unit-ui.config.ts"], - }, - { - config: "vitest.full-core-unit-support.config.ts", - name: "core-unit-support", - projects: ["vitest.unit-support.config.ts"], - }, - { - config: "vitest.full-core-support-boundary.config.ts", - name: "core-support-boundary", - projects: ["vitest.boundary.config.ts", "vitest.tooling.config.ts"], - }, - { - config: "vitest.full-core-contracts.config.ts", - name: "core-contracts", - projects: ["vitest.contracts.config.ts"], - }, - { - config: "vitest.full-core-bundled.config.ts", - name: "core-bundled", - projects: ["vitest.bundled.config.ts"], - }, - { - config: "vitest.full-core-runtime.config.ts", - name: "core-runtime", - projects: [ - "vitest.infra.config.ts", - "vitest.hooks.config.ts", - "vitest.acp.config.ts", - "vitest.runtime-config.config.ts", - "vitest.secrets.config.ts", - "vitest.logging.config.ts", - "vitest.process.config.ts", - "vitest.cron.config.ts", - "vitest.media.config.ts", - "vitest.media-understanding.config.ts", - "vitest.shared-core.config.ts", - "vitest.tasks.config.ts", - "vitest.tui.config.ts", - "vitest.ui.config.ts", - "vitest.utils.config.ts", - "vitest.wizard.config.ts", - ], - }, - { - config: "vitest.full-agentic.config.ts", - name: "agentic", - projects: [ - "vitest.gateway.config.ts", - "vitest.cli.config.ts", - "vitest.commands-light.config.ts", - "vitest.commands.config.ts", - "vitest.agents.config.ts", - "vitest.daemon.config.ts", - "vitest.plugin-sdk-light.config.ts", - "vitest.plugin-sdk.config.ts", - "vitest.plugins.config.ts", - "vitest.channels.config.ts", - ], - }, - { - config: "vitest.full-auto-reply.config.ts", - name: "auto-reply", - projects: [ - "vitest.auto-reply-core.config.ts", - "vitest.auto-reply-top-level.config.ts", - "vitest.auto-reply-reply.config.ts", - ], - }, - { - config: "vitest.full-extensions.config.ts", - name: "extensions", - projects: [ - "vitest.extension-acpx.config.ts", - "vitest.extension-bluebubbles.config.ts", - "vitest.extension-channels.config.ts", - "vitest.extension-diffs.config.ts", - "vitest.extension-feishu.config.ts", - "vitest.extension-irc.config.ts", - "vitest.extension-mattermost.config.ts", - "vitest.extension-matrix.config.ts", - "vitest.extension-memory.config.ts", - "vitest.extension-messaging.config.ts", - "vitest.extension-msteams.config.ts", - "vitest.extension-providers.config.ts", - "vitest.extension-telegram.config.ts", - "vitest.extension-voice-call.config.ts", - "vitest.extension-whatsapp.config.ts", - "vitest.extension-zalo.config.ts", - "vitest.extension-browser.config.ts", - "vitest.extension-qa.config.ts", - "vitest.extension-media.config.ts", - "vitest.extension-misc.config.ts", - ], - }, -];