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.
Files changed (2) hide show
  1. package/lib/workers.js +30 -2
  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', resolve)
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeceptjs",
3
- "version": "4.0.2-beta.6",
3
+ "version": "4.0.2-beta.8",
4
4
  "type": "module",
5
5
  "description": "Supercharged End 2 End Testing Framework for NodeJS",
6
6
  "keywords": [