(runPromise, timeout)
| 413 | } |
| 414 | |
| 415 | async function waitForTestResult(runPromise, timeout) { |
| 416 | const pausedPromise = new Promise(resolve => pauseEvents.once('paused', () => resolve('paused'))) |
| 417 | const completedPromise = runPromise.then(() => 'completed', () => 'completed') |
| 418 | let timeoutId |
| 419 | const timeoutPromise = new Promise((_, reject) => { |
| 420 | timeoutId = setTimeout(() => reject(new Error(`Timeout after ${timeout}ms`)), timeout) |
| 421 | }) |
| 422 | try { |
| 423 | return { status: await Promise.race([completedPromise, pausedPromise, timeoutPromise]) } |
| 424 | } catch (err) { |
| 425 | await cancelRun() |
| 426 | return { status: 'aborted', error: err.message } |
| 427 | } finally { |
| 428 | clearTimeout(timeoutId) |
| 429 | } |
| 430 | } |
| 431 | |
| 432 | async function closeBrowser() { |
| 433 | if (!containerInitialized) return |
no test coverage detected