70bf21e064
Deploy (to testing) and Test Playground Preview Worker / Deploy Playground Preview Worker (testing) (push) Has been skipped
Deploy Workers Shared Staging / Deploy Workers Shared Staging (push) Failing after 0s
Prerelease / build (push) Has been skipped
Handle Changesets / Handle Changesets (push) Has been cancelled
Semgrep OSS scan / semgrep-oss (push) Has been cancelled
25 lines
744 B
TypeScript
25 lines
744 B
TypeScript
import { getWorkerRegistry } from "miniflare";
|
|
|
|
/**
|
|
* Poll the dev registry until all expected workers are registered.
|
|
* This avoids flakey tests that rely on fixed timeouts.
|
|
*/
|
|
export async function waitForWorkersInRegistry(
|
|
registryPath: string,
|
|
expectedWorkers: string[],
|
|
timeoutMs = 5000
|
|
): Promise<void> {
|
|
const startTime = Date.now();
|
|
while (Date.now() - startTime < timeoutMs) {
|
|
const registry = getWorkerRegistry(registryPath);
|
|
const registeredWorkers = Object.keys(registry);
|
|
if (expectedWorkers.every((w) => registeredWorkers.includes(w))) {
|
|
return;
|
|
}
|
|
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
}
|
|
throw new Error(
|
|
`Timed out waiting for workers to register: ${expectedWorkers.join(", ")}`
|
|
);
|
|
}
|