codeceptjs 4.0.2-beta.6 → 4.0.2-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/workers.js +30 -2
- package/package.json +1 -1
package/lib/workers.js
CHANGED
|
@@ -518,8 +518,24 @@ class Workers extends EventEmitter {
|
|
|
518
518
|
// Workers are already running, this is just a placeholder step
|
|
519
519
|
})
|
|
520
520
|
|
|
521
|
+
// Add overall timeout to prevent infinite hanging
|
|
522
|
+
const overallTimeout = setTimeout(() => {
|
|
523
|
+
console.error('[Main] Overall timeout reached (10 minutes). Force terminating remaining workers...')
|
|
524
|
+
workerThreads.forEach(w => {
|
|
525
|
+
try {
|
|
526
|
+
w.terminate()
|
|
527
|
+
} catch (e) {
|
|
528
|
+
// ignore
|
|
529
|
+
}
|
|
530
|
+
})
|
|
531
|
+
this._finishRun()
|
|
532
|
+
}, 600000) // 10 minutes
|
|
533
|
+
|
|
521
534
|
return new Promise(resolve => {
|
|
522
|
-
this.on('end',
|
|
535
|
+
this.on('end', () => {
|
|
536
|
+
clearTimeout(overallTimeout)
|
|
537
|
+
resolve()
|
|
538
|
+
})
|
|
523
539
|
})
|
|
524
540
|
}
|
|
525
541
|
|
|
@@ -566,6 +582,11 @@ class Workers extends EventEmitter {
|
|
|
566
582
|
// Track current test
|
|
567
583
|
if (message.event === event.test.started && message.data) {
|
|
568
584
|
currentTest = message.data.title || message.data.fullTitle
|
|
585
|
+
console.log(`[Worker ${message.workerIndex}] Started: ${currentTest}`)
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
if (message.event === event.test.finished && message.data) {
|
|
589
|
+
console.log(`[Worker ${message.workerIndex}] Finished: ${message.data.title || currentTest}`)
|
|
569
590
|
}
|
|
570
591
|
|
|
571
592
|
output.process(message.workerIndex)
|
|
@@ -700,7 +721,11 @@ class Workers extends EventEmitter {
|
|
|
700
721
|
if (currentTest) {
|
|
701
722
|
console.error(`[Main] Last test running: ${currentTest}`)
|
|
702
723
|
}
|
|
724
|
+
// Mark as failed
|
|
725
|
+
process.exitCode = 1
|
|
703
726
|
}
|
|
727
|
+
|
|
728
|
+
console.log(`[Main] Workers closed: ${this.closedWorkers}/${this.numberOfWorkers}`)
|
|
704
729
|
|
|
705
730
|
if (this.isPoolMode) {
|
|
706
731
|
// Pool mode: finish when all workers have exited and no more tests
|
|
@@ -715,8 +740,9 @@ class Workers extends EventEmitter {
|
|
|
715
740
|
}
|
|
716
741
|
|
|
717
742
|
_finishRun() {
|
|
743
|
+
console.log('[Main] Finishing test run...')
|
|
718
744
|
event.dispatcher.emit(event.workers.after, { tests: this.workers.map(worker => worker.tests) })
|
|
719
|
-
if (Container.result().hasFailed) {
|
|
745
|
+
if (Container.result().hasFailed || this.errors.length > 0) {
|
|
720
746
|
process.exitCode = 1
|
|
721
747
|
} else {
|
|
722
748
|
process.exitCode = 0
|
|
@@ -756,8 +782,10 @@ class Workers extends EventEmitter {
|
|
|
756
782
|
this._testStates.clear()
|
|
757
783
|
}
|
|
758
784
|
|
|
785
|
+
console.log('[Main] Emitting final results...')
|
|
759
786
|
this.emit(event.all.result, Container.result())
|
|
760
787
|
event.dispatcher.emit(event.workers.result, Container.result())
|
|
788
|
+
console.log('[Main] Emitting end event...')
|
|
761
789
|
this.emit('end') // internal event
|
|
762
790
|
}
|
|
763
791
|
|