From 7a6b5e40d96bef59659c40d6a187717f8b70adc1 Mon Sep 17 00:00:00 2001 From: Marc Rousavy Date: Sat, 5 Sep 2026 16:02:19 +0300 Subject: [PATCH] test: Check promise concurrency without wall-clock timing --- apps/example/src/getTests.ts | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/apps/example/src/getTests.ts b/apps/example/src/getTests.ts index 0c698e436..d5a1c47e9 100644 --- a/apps/example/src/getTests.ts +++ b/apps/example/src/getTests.ts @@ -1572,12 +1572,22 @@ export function getTests( createTest('twoPromises can run in parallel', async () => ( await it(async () => { - const start = performance.now() - // 0.5s + 0.5s = ~1s in serial, ~0.5s in parallel - await Promise.all([testObject.wait(0.5), testObject.wait(0.5)]) - const end = performance.now() - const didRunInParallel = end - start < 1000 - return didRunInParallel + let started = 0 + let release = () => {} + const bothStarted = new Promise((resolve) => { + release = resolve + }) + const onStarted = () => { + started++ + if (started === 2) release() + return bothStarted + } + // Each native operation waits until both have invoked their callback. + await Promise.all([ + testObject.callCallbackThatReturnsPromiseVoid(onStarted), + testObject.callCallbackThatReturnsPromiseVoid(onStarted), + ]) + return started === 2 }) ) .didNotThrow()