Files
2026-08-09 12:06:38 +01:00

35 lines
974 B
TypeScript

import type { Page } from "@playwright/test";
export async function holdPluginInstallResponse(page: Page) {
let release = () => {};
let requestStarted = false;
let markResponseSettled = () => {};
const responseHeld = new Promise<void>((resolve) => {
release = resolve;
});
const responseSettled = new Promise<void>((resolve) => {
markResponseSettled = resolve;
});
let markRequestSeen = () => {};
const requestSeen = new Promise<void>((resolve) => {
markRequestSeen = resolve;
});
await page.route("**/api/plugins/install", async (route) => {
requestStarted = true;
markRequestSeen();
try {
await responseHeld;
await route.fulfill({
status: 500,
contentType: "application/json",
body: JSON.stringify({ error: "install failed" }),
});
} finally {
markResponseSettled();
}
});
return { requestSeen, responseSettled, release, requestStarted: () => requestStarted };
}