mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 11:40:43 +00:00
test: require browser async callbacks
This commit is contained in:
@@ -13,12 +13,15 @@ beforeEach(() => {
|
||||
});
|
||||
|
||||
function createDeferred<T = void>() {
|
||||
let resolve!: (value: T | PromiseLike<T>) => void;
|
||||
let reject!: (reason?: unknown) => void;
|
||||
let resolve: ((value: T | PromiseLike<T>) => void) | undefined;
|
||||
let reject: ((reason?: unknown) => void) | undefined;
|
||||
const promise = new Promise<T>((res, rej) => {
|
||||
resolve = res;
|
||||
reject = rej;
|
||||
});
|
||||
if (!resolve || !reject) {
|
||||
throw new Error("Expected deferred callbacks to be initialized");
|
||||
}
|
||||
return { promise, resolve, reject };
|
||||
}
|
||||
|
||||
|
||||
@@ -349,10 +349,13 @@ describe("chrome MCP page parsing", () => {
|
||||
|
||||
it("reuses a single pending session for concurrent requests", async () => {
|
||||
let factoryCalls = 0;
|
||||
let releaseFactory!: () => void;
|
||||
let releaseFactory: (() => void) | undefined;
|
||||
const factoryGate = new Promise<void>((resolve) => {
|
||||
releaseFactory = resolve;
|
||||
});
|
||||
if (!releaseFactory) {
|
||||
throw new Error("Expected Chrome MCP factory release callback to be initialized");
|
||||
}
|
||||
|
||||
const factory: ChromeMcpSessionFactory = async () => {
|
||||
factoryCalls += 1;
|
||||
|
||||
@@ -34,10 +34,13 @@ vi.mock("./pw-session.js", () => {
|
||||
const { evaluateViaPlaywright } = await import("./pw-tools-core.interactions.js");
|
||||
|
||||
function createPendingEval() {
|
||||
let evalCalled!: () => void;
|
||||
let evalCalled: (() => void) | undefined;
|
||||
const evalCalledPromise = new Promise<void>((resolve) => {
|
||||
evalCalled = resolve;
|
||||
});
|
||||
if (!evalCalled) {
|
||||
throw new Error("Expected evaluate callback to be initialized");
|
||||
}
|
||||
return {
|
||||
evalCalledPromise,
|
||||
resolveEvalCalled: evalCalled,
|
||||
|
||||
@@ -96,6 +96,15 @@ function requireGeneratedVideo(result: OpenRouterVideoResult, index: number) {
|
||||
return video;
|
||||
}
|
||||
|
||||
function requireGeneratedVideoBuffer(result: OpenRouterVideoResult, index: number) {
|
||||
const video = requireGeneratedVideo(result, index);
|
||||
expect(video.buffer).toBeInstanceOf(Buffer);
|
||||
if (!video.buffer) {
|
||||
throw new Error(`expected OpenRouter generated video ${index} buffer`);
|
||||
}
|
||||
return { video, buffer: video.buffer };
|
||||
}
|
||||
|
||||
describe("openrouter video generation provider", () => {
|
||||
afterEach(() => {
|
||||
assertOkOrThrowHttpErrorMock.mockClear();
|
||||
@@ -250,8 +259,8 @@ describe("openrouter video generation provider", () => {
|
||||
expect.objectContaining({ auditContext: "openrouter-video-download" }),
|
||||
);
|
||||
expect(requireFetchCallHeaders(1).get("authorization")).toBe("Bearer openrouter-key");
|
||||
const video = requireGeneratedVideo(result, 0);
|
||||
expect(video.buffer.toString()).toBe("mp4-bytes");
|
||||
const { video, buffer } = requireGeneratedVideoBuffer(result, 0);
|
||||
expect(buffer.toString()).toBe("mp4-bytes");
|
||||
expect(video.mimeType).toBe("video/mp4");
|
||||
expect(result.metadata).toEqual({
|
||||
jobId: "job-123",
|
||||
@@ -334,8 +343,8 @@ describe("openrouter video generation provider", () => {
|
||||
expect.any(Function),
|
||||
expect.objectContaining({ auditContext: "openrouter-video-download" }),
|
||||
);
|
||||
const video = requireGeneratedVideo(result, 0);
|
||||
expect(video.buffer.toString()).toBe("webm-bytes");
|
||||
const { video, buffer } = requireGeneratedVideoBuffer(result, 0);
|
||||
expect(buffer.toString()).toBe("webm-bytes");
|
||||
expect(video.fileName).toBe("video-1.webm");
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user