test: require browser async callbacks

This commit is contained in:
Peter Steinberger
2026-05-08 19:23:39 +01:00
parent 17127ef022
commit 73faa75be1
4 changed files with 26 additions and 8 deletions

View File

@@ -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 };
}

View File

@@ -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;

View File

@@ -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,

View File

@@ -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");
});