mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-16 14:51:39 +00:00
* test: wire Control UI suite into CI, fix its broken tests, drop dead harness surface
- fix 7 Control UI tests broken on main: module-mock factories are unreliable
under isolate:false shared workers; use RealtimeTalkSession prototype spies
and real jsdom storage instead (chat-realtime, chat-pull-requests)
- add gated checks-ui CI job (runUiTests changed-scope output): chromium
provisioning, lint:ui:no-raw-window-open, pnpm --dir ui test; ~30s on a
4vcpu runner, runs only when ui-affecting paths change
- add weekly node22-compat workflow exercising the supported lower Node bound
with the same command set as the dispatch-only ci.yml job
- delete the unreachable channels entry in EXTENSION_TEST_CONFIG_ROUTES and
the never-populated extensionRoutedChannelTestFiles override machinery
(born empty in 2ccb5cff22); resolved globs are provably identical
- guard run-vitest.mjs hardcoded path maps with existence tests so renames
cannot silently drop extended stall watchdogs
- remove unenforced coverage thresholds; test:coverage is informational, docs
updated (reference/test, help/testing, plugins/sdk-testing)
Closes #104321
* test: pin OPENCLAW_CI_RUN_UI_TESTS in the manifest env expectation
* test(ui): capture the realtime start spy instead of referencing the unbound prototype method
* test(ui): raise ui vitest timeouts for real-browser layout tests on small CI runners
34 lines
1.5 KiB
JavaScript
34 lines
1.5 KiB
JavaScript
// Test routing roots and globs for core channel tests and channel plugin tests.
|
|
import path from "node:path";
|
|
import { BUNDLED_PLUGIN_PATH_PREFIX } from "../../scripts/lib/bundled-plugin-paths.mjs";
|
|
import { splitChannelExtensionTestRoots } from "./vitest.extension-channel-split-paths.mjs";
|
|
|
|
const normalizeRepoPath = (value) => value.split(path.sep).join("/");
|
|
|
|
export const channelTestRoots = ["src/channels", ...splitChannelExtensionTestRoots];
|
|
|
|
const splitChannelExtensionTestRootSet = new Set(splitChannelExtensionTestRoots);
|
|
|
|
export const extensionChannelTestRoots = channelTestRoots.filter(
|
|
(root) =>
|
|
root.startsWith(BUNDLED_PLUGIN_PATH_PREFIX) && !splitChannelExtensionTestRootSet.has(root),
|
|
);
|
|
export const coreChannelTestRoots = channelTestRoots.filter(
|
|
(root) => !root.startsWith(BUNDLED_PLUGIN_PATH_PREFIX),
|
|
);
|
|
export const channelTestPrefixes = channelTestRoots.map((root) => `${root}/`);
|
|
export const extensionChannelTestInclude = extensionChannelTestRoots.map(
|
|
(root) => `${root}/**/*.test.ts`,
|
|
);
|
|
export const coreChannelTestInclude = coreChannelTestRoots.map((root) => `${root}/**/*.test.ts`);
|
|
|
|
export const extensionExcludedChannelTestGlobs = channelTestRoots
|
|
.filter((root) => root.startsWith(BUNDLED_PLUGIN_PATH_PREFIX))
|
|
.map((root) => root.slice(BUNDLED_PLUGIN_PATH_PREFIX.length))
|
|
.map((relativeRoot) => `${relativeRoot}/**`);
|
|
|
|
export function isChannelSurfaceTestFile(filePath) {
|
|
const normalizedFile = normalizeRepoPath(filePath);
|
|
return channelTestPrefixes.some((prefix) => normalizedFile.startsWith(prefix));
|
|
}
|