Adding to module.exports on cypress/plugins/index.js file Cypress

Viewed 1880

I am struggling to add a second module.export cypress/plugin/index.js

My Current cypress/plugin/index.js file look like this

/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************

// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)

/**
 * @type {Cypress.PluginConfig}
 */
// eslint-disable-next-line no-unused-vars

const { on } = require('events');
const fs = require('fs-extra');
const path = require('path');

function getConfigurationByFile(file) {
  const pathToConfigFile = path.resolve('config', `${file}.json`);

  return fs.readJson(pathToConfigFile);
}

module.exports = (on, config) => {
  // `on` is used to hook into various events Cypress emits
  // `config` is the resolved Cypress config
  const file = config.env.configFile || 'qa';

  return getConfigurationByFile(file);
};

I want to add the following to cypress/plugin/index.js:

require('cypress-grep/src/plugin')(config)
// make sure to return the config object
// as it might have been modified by the plugin
return config
2 Answers

I believe that you can pass in the config from your function to your require and then return that new config.

module.exports = (on, config) => {
  // `on` is used to hook into various events Cypress emits
  // `config` is the resolved Cypress config
  const file = config.env.configFile || 'qa';
  let newConfig = getConfigurationByFile(file);
  
  require('cypress-grep/src/plugin')(newConfig);
  
  return newConfig;
};

Since your getConfigurationByFile() function returns a JSON Object like the original config, and the cypress-grep plugin takes in a JSON Object, you can probably just add the resolved JSON from getConfigurationByFile instead of the standard one provided by config.

If you have your plugins set up correctly, then it may be the environment variables passed via command line. Here is an example repo of using cypress-grep and configuration files.

Related