Files
openclaw/scripts/ci-changed-scope.d.mts
Peter Steinberger 6268eeef15 test: wire Control UI suite into CI, fix its broken tests, drop dead harness surface (#104361)
* 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
2026-07-11 03:04:11 -07:00

49 lines
1.2 KiB
TypeScript

export type ChangedScope = {
runNode: boolean;
runMacos: boolean;
runIosBuild: boolean;
runAndroid: boolean;
runWindows: boolean;
runSkillsPython: boolean;
runChangedSmoke: boolean;
runControlUiI18n: boolean;
runUiTests: boolean;
};
export type InstallSmokeScope = {
runFastInstallSmoke: boolean;
runFullInstallSmoke: boolean;
};
export type NodeFastScope = {
runFastOnly: boolean;
runPluginContracts: boolean;
runCiRouting: boolean;
};
export type ChangedScopeArgs = {
base: string;
head: string;
mergeHeadFirstParent: boolean;
};
export function detectChangedScope(changedPaths: string[]): ChangedScope;
export function shouldRunNativeI18n(changedPaths: string[]): boolean;
export function detectNodeFastScope(changedPaths: string[]): NodeFastScope;
export function detectInstallSmokeScope(changedPaths: string[]): InstallSmokeScope;
export function listChangedPaths(
base: string,
head?: string,
cwd?: string,
preferMergeHeadFirstParent?: boolean,
): string[];
export function writeGitHubOutput(
scope: ChangedScope,
outputPath?: string,
installSmokeScope?: InstallSmokeScope,
nodeFastScope?: NodeFastScope,
runNativeI18n?: boolean,
): void;
export function parseArgs(argv: string[]): ChangedScopeArgs;