Let your CodeceptJS tests run commands in the console/terminal
This is a Helper for CodeceptJS that allows you to run commands in the console/terminal. It is especially useful for preparing the execution environment before/after executing test cases.
👉 It works with CodeceptJS 1, 2, and 3.
npm i -D codeceptjs-cmdhelperIn your configuration file (e.g., codecept.conf.js, codecept.json), include CmdHelper in the property helpers :
  ...
  "helpers": {
    ...
    "CmdHelper": {
      "require": "./node_modules/codeceptjs-cmdhelper"
    }
  },
  ...Optionally, you can set an options property with an object that accepts the same parameters as NodeJS spawn's, plus showOutput: boolean. The default value is { shell: true, showOutput: true }.
Example:
  ...
  "helpers": {
    ...
    "CmdHelper": {
      "require": "./node_modules/codeceptjs-cmdhelper",
      "options": {
          "showOutput": false
      },
    }
  },
  ...In CodeceptJS 2, your callbacks receive I as argument:
Scenario('test something', async ( I ) => {   // CodeceptJS 2 notation
   /* ... */
} );In CodeceptJS 3, your callbacks receive an object with I - that is, { I }:
Scenario('test something', async ( { I } ) => {   // CodeceptJS 3 notation
   /* ... */
} );See the CodeceptJS docs for more information on how to upgrade your codebase.
The following examples are written with CodeceptJS 3.
Now the object I (of your callbacks) has new methods.
BeforeSuite( async ( { I } ) => {
    await I.runCommand( 'echo "Hello world!" >foo.txt' );
} );
AfterSuite( async ( { I } ) => {
    await I.runCommand( 'rm foo.txt' );
    // await I.runCommand( 'del foo.txt' ); // on Windows
} );
// ... your feature ...
// ... your scenarios ...Feature( 'Foo' );
Scenario( 'Bar', async ( { I } ) => {
    await I.runCommand( 'mkdir foo' );
    await I.runCommand( 'mkdir bar', { showOutput: false } );
} );Make sure to handle errors properly, with try..catch.
    try {
        const code = await I.runCommand( 'mkdir foo' );
        console.log( 0 === code ? 'success' : 'some problem occurred' );
    } catch ( e ) {
        console.warn( e );
    }/**
 * Executes the given command.
 *
 * @param {string} command Command to execute.
 * @param {object} [options] Same options as in NodeJS' spawn(), plus `showOutput: boolean`. Optional. Default is `{ shell: true, showOutput: true }`.
 *
 * @returns {Promise< number >} Promise with the returning execution status code (0 means success).
 */
runCommand( command, options )codeceptjs-dbhelper - Connect to databases and run SQL commands
MIT © Thiago Delgado Pinto