|
1 | 1 | import { describe, expect, it } from "vitest"; |
2 | 2 | import { withEnv } from "../test-utils/env.js"; |
3 | 3 | import { resolveBrowserConfig, resolveProfile, shouldStartLocalBrowserServer } from "./config.js"; |
| 4 | +import { getBrowserProfileCapabilities } from "./profile-capabilities.js"; |
4 | 5 |
|
5 | 6 | describe("browser config", () => { |
6 | 7 | it("defaults to enabled with loopback defaults and lobster-orange color", () => { |
@@ -278,6 +279,47 @@ describe("browser config", () => { |
278 | 279 | expect(resolved.ssrfPolicy).toEqual({}); |
279 | 280 | }); |
280 | 281 |
|
| 282 | + it("resolves existing-session profiles without cdpPort or cdpUrl", () => { |
| 283 | + const resolved = resolveBrowserConfig({ |
| 284 | + profiles: { |
| 285 | + "chrome-live": { |
| 286 | + driver: "existing-session", |
| 287 | + attachOnly: true, |
| 288 | + color: "#00AA00", |
| 289 | + }, |
| 290 | + }, |
| 291 | + }); |
| 292 | + const profile = resolveProfile(resolved, "chrome-live"); |
| 293 | + expect(profile).not.toBeNull(); |
| 294 | + expect(profile?.driver).toBe("existing-session"); |
| 295 | + expect(profile?.attachOnly).toBe(true); |
| 296 | + expect(profile?.cdpPort).toBe(0); |
| 297 | + expect(profile?.cdpUrl).toBe(""); |
| 298 | + expect(profile?.cdpIsLoopback).toBe(true); |
| 299 | + expect(profile?.color).toBe("#00AA00"); |
| 300 | + }); |
| 301 | + |
| 302 | + it("sets usesChromeMcp only for existing-session profiles", () => { |
| 303 | + const resolved = resolveBrowserConfig({ |
| 304 | + profiles: { |
| 305 | + "chrome-live": { driver: "existing-session", attachOnly: true, color: "#00AA00" }, |
| 306 | + work: { cdpPort: 18801, color: "#0066CC" }, |
| 307 | + }, |
| 308 | + }); |
| 309 | + |
| 310 | + const existingSession = resolveProfile(resolved, "chrome-live")!; |
| 311 | + expect(getBrowserProfileCapabilities(existingSession).usesChromeMcp).toBe(true); |
| 312 | + |
| 313 | + const managed = resolveProfile(resolved, "openclaw")!; |
| 314 | + expect(getBrowserProfileCapabilities(managed).usesChromeMcp).toBe(false); |
| 315 | + |
| 316 | + const extension = resolveProfile(resolved, "chrome")!; |
| 317 | + expect(getBrowserProfileCapabilities(extension).usesChromeMcp).toBe(false); |
| 318 | + |
| 319 | + const work = resolveProfile(resolved, "work")!; |
| 320 | + expect(getBrowserProfileCapabilities(work).usesChromeMcp).toBe(false); |
| 321 | + }); |
| 322 | + |
281 | 323 | describe("default profile preference", () => { |
282 | 324 | it("defaults to openclaw profile when defaultProfile is not configured", () => { |
283 | 325 | const resolved = resolveBrowserConfig({ |
|
0 commit comments