diff --git a/lib/codecept.js b/lib/codecept.js index ce21e5c68..adb1dbcff 100644 --- a/lib/codecept.js +++ b/lib/codecept.js @@ -8,6 +8,7 @@ const Config = require('./config'); const event = require('./event'); const runHook = require('./hooks'); const output = require('./output'); +const { emptyFolder } = require('./utils'); /** * CodeceptJS runner @@ -66,6 +67,8 @@ class Codecept { global.codecept_dir = dir; global.output_dir = fsPath.resolve(dir, this.config.output); + if (this.config.emptyOutputFolder) emptyFolder(global.output_dir); + if (!this.config.noGlobals) { global.Helper = global.codecept_helper = require('@codeceptjs/helper'); global.actor = global.codecept_actor = require('./actor'); diff --git a/lib/utils.js b/lib/utils.js index a4b8a2655..4e41a7e0d 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -455,3 +455,7 @@ module.exports.isNotSet = function (obj) { if (obj === undefined) return true; return false; }; + +module.exports.emptyFolder = async (directoryPath) => { + require('child_process').execSync(`rm -rf ${directoryPath}/*`); +}; diff --git a/typings/index.d.ts b/typings/index.d.ts index d9fe5e7a2..8a3809b2b 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -67,6 +67,14 @@ declare namespace CodeceptJS { * ``` */ output: string; + /** + * empty output folder for next run + * + * ```js + * emptyOutputFolder: true + * ``` + */ + emptyOutputFolder?: boolean; /** * Pattern to filter tests by name. * This option is useful if you plan to use multiple configs for different environments.