mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 17:44:33 +00:00
fix: add timeout cleanup regression for browser CDP readiness (#29538) (thanks @AaronWander)
This commit is contained in:
@@ -27,6 +27,8 @@ function makeBrowserState(): BrowserServerState {
|
||||
cdpProtocol: "http",
|
||||
cdpHost: "127.0.0.1",
|
||||
cdpIsLoopback: true,
|
||||
cdpPortRangeStart: null,
|
||||
cdpPortRangeEnd: null,
|
||||
evaluateEnabled: false,
|
||||
remoteCdpTimeoutMs: 1500,
|
||||
remoteCdpHandshakeTimeoutMs: 3000,
|
||||
@@ -47,6 +49,7 @@ function makeBrowserState(): BrowserServerState {
|
||||
|
||||
afterEach(() => {
|
||||
vi.useRealTimers();
|
||||
vi.clearAllMocks();
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
@@ -84,4 +87,38 @@ describe("browser server-context ensureBrowserAvailable", () => {
|
||||
expect(isChromeCdpReady).toHaveBeenCalled();
|
||||
expect(stopOpenClawChrome).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("stops launched chrome when CDP readiness never arrives", async () => {
|
||||
vi.useFakeTimers();
|
||||
|
||||
const launchOpenClawChrome = vi.mocked(chromeModule.launchOpenClawChrome);
|
||||
const stopOpenClawChrome = vi.mocked(chromeModule.stopOpenClawChrome);
|
||||
const isChromeReachable = vi.mocked(chromeModule.isChromeReachable);
|
||||
const isChromeCdpReady = vi.mocked(chromeModule.isChromeCdpReady);
|
||||
|
||||
isChromeReachable.mockResolvedValue(false);
|
||||
isChromeCdpReady.mockResolvedValue(false);
|
||||
|
||||
const proc = new EventEmitter() as unknown as ChildProcessWithoutNullStreams;
|
||||
launchOpenClawChrome.mockResolvedValue({
|
||||
pid: 321,
|
||||
exe: { kind: "chromium", path: "/usr/bin/chromium" },
|
||||
userDataDir: "/tmp/openclaw-test",
|
||||
cdpPort: 18800,
|
||||
startedAt: Date.now(),
|
||||
proc,
|
||||
});
|
||||
|
||||
const state = makeBrowserState();
|
||||
const ctx = createBrowserRouteContext({ getState: () => state });
|
||||
const profile = ctx.forProfile("openclaw");
|
||||
|
||||
const promise = profile.ensureBrowserAvailable();
|
||||
const rejected = expect(promise).rejects.toThrow("not reachable after start");
|
||||
await vi.advanceTimersByTimeAsync(8100);
|
||||
await rejected;
|
||||
|
||||
expect(launchOpenClawChrome).toHaveBeenCalledTimes(1);
|
||||
expect(stopOpenClawChrome).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user