From 18ebaeaf27b9491ee2c64371c19fc00190de8fa4 Mon Sep 17 00:00:00 2001 From: DavertMik Date: Wed, 12 Feb 2025 04:49:05 +0200 Subject: [PATCH] fixed event suites --- lib/mocha/asyncWrapper.js | 12 ++++++++---- lib/mocha/suite.js | 1 + lib/mocha/test.js | 2 ++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/mocha/asyncWrapper.js b/lib/mocha/asyncWrapper.js index fa3fe3d57..354cb35ed 100644 --- a/lib/mocha/asyncWrapper.js +++ b/lib/mocha/asyncWrapper.js @@ -187,30 +187,34 @@ module.exports.injected = function (fn, suite, hookName) { * Starts promise chain, so helpers could enqueue their hooks */ module.exports.setup = function (suite) { + const { enhanceMochaTest } = require('./test') return injectHook(() => { recorder.startUnlessRunning() - event.emit(event.test.before, suite && suite.ctx && suite.ctx.currentTest) + event.emit(event.test.before, enhanceMochaTest(suite?.ctx?.currentTest)) }, suite) } module.exports.teardown = function (suite) { + const { enhanceMochaTest } = require('./test') return injectHook(() => { recorder.startUnlessRunning() - event.emit(event.test.after, suite && suite.ctx && suite.ctx.currentTest) + event.emit(event.test.after, enhanceMochaTest(suite?.ctx?.currentTest)) }, suite) } module.exports.suiteSetup = function (suite) { + const { enhanceMochaSuite } = require('./suite') return injectHook(() => { recorder.startUnlessRunning() - event.emit(event.suite.before, suite) + event.emit(event.suite.before, enhanceMochaSuite(suite)) }, suite) } module.exports.suiteTeardown = function (suite) { + const { enhanceMochaSuite } = require('./suite') return injectHook(() => { recorder.startUnlessRunning() - event.emit(event.suite.after, suite) + event.emit(event.suite.after, enhanceMochaSuite(suite)) }, suite) } diff --git a/lib/mocha/suite.js b/lib/mocha/suite.js index ab9e5ec1f..9fd134492 100644 --- a/lib/mocha/suite.js +++ b/lib/mocha/suite.js @@ -7,6 +7,7 @@ const MochaSuite = require('mocha/lib/suite') * Enhances MochaSuite with CodeceptJS specific functionality using composition */ function enhanceMochaSuite(suite) { + if (!suite) suite = new MochaSuite('Suite', null, false) // already enhanced if (suite.codeceptjs) return suite diff --git a/lib/mocha/test.js b/lib/mocha/test.js index ffe950711..14c202085 100644 --- a/lib/mocha/test.js +++ b/lib/mocha/test.js @@ -21,6 +21,8 @@ function createTest(title, fn) { * @returns {CodeceptJS.Test & Mocha.Test} Enhanced test instance */ function enhanceMochaTest(test) { + // if no test, create a dummy one + if (!test) test = createTest('...', () => {}) // already enhanced if (test.codeceptjs) return test