Files
openclaw/src/gateway/server.worker-desktop-advertisement.test.ts
T
Peter Steinberger b5d5ec340f feat(cloud-workers): add desktop apps and browser autonomy (#121475)
* feat(cloud-workers): add desktop apps and browser autonomy

provider-attested Browser/Terminal launchers, shared visible loopback CDP Browser tool, no MCP/cookies/generic command.

* feat(ui): add cloud desktop app launcher

* docs(gateway): document cloud desktop apps and browser autonomy

* perf(ui): trim desktop launcher startup copy

* refactor(ui): simplify desktop launch feedback

* perf(ui): reuse desktop app labels

* fix(ui): keep desktop launch failures actionable

* fix(crabbox): allow browser bootstrap to finish

* fix(cloud-workers): honor provider provision budgets

* fix(cloud-workers): persist browser screenshot receipts

* fix(cloud-workers): bound browser screenshot lifecycle

* fix(cloud-workers): avoid replaying desktop launches

* test(cloud-workers): isolate browser runtime integration

* refactor(cloud-workers): tighten desktop runtime boundaries

* test(cloud-workers): keep browser runtime mock synchronous

* fix(cloud-workers): break gateway type import cycle

* fix(ci): settle admitted setup sessions in tests

* build(plugin-sdk): refresh desktop app contract

* ci: refresh merge-tree validation

* build(plugin-sdk): regenerate desktop app baseline

* style(gateway): format merged method order test
2026-08-10 20:31:07 -07:00

39 lines
1.4 KiB
TypeScript

// Gateway startup advertisement tests for the cloud-worker Desktop Labs gate.
import { describe, expect, it } from "vitest";
import { writeConfigFile } from "../config/config.js";
import { connectOk, installGatewayTestHooks, startServerWithClient } from "./test-helpers.js";
installGatewayTestHooks();
describe("cloud worker desktop method advertisement", () => {
it.each([
{ desktop: undefined, advertised: false },
{ desktop: true, advertised: true },
])("advertises desktop methods only when the Labs gate is $desktop", async (testCase) => {
process.env.OPENCLAW_TEST_MINIMAL_GATEWAY = "0";
await writeConfigFile({
cloudWorkers: {
...(testCase.desktop === undefined ? {} : { desktop: testCase.desktop }),
profiles: {
development: {
provider: "test-worker-provider",
settings: {},
},
},
},
});
const { server, ws } = await startServerWithClient(undefined, { auth: { mode: "none" } });
try {
const hello = await connectOk(ws);
const methods = (hello as { features?: { methods?: string[] } }).features?.methods ?? [];
expect(methods).toContain("sessions.dispatch");
expect(methods.includes("worker.desktop.observe")).toBe(testCase.advertised);
expect(methods.includes("worker.desktop.launch")).toBe(testCase.advertised);
} finally {
ws.close();
await server.close();
}
});
});