@revoloo/cypress6
Version:
Cypress.io end to end testing tool
36 lines (28 loc) • 1.23 kB
JavaScript
// @ts-check
const path = require('path')
const { startDevServer } = require('@cypress/webpack-dev-server')
const tryLoadWebpackConfig = require('../utils/tryLoadWebpackConfig')
/** @type {(config: Cypress.PluginConfigOptions, path: string) => string} */
function normalizeWebpackPath (config, webpackConfigPath) {
return path.isAbsolute(webpackConfigPath)
? webpackConfigPath
: path.resolve(config.projectRoot, webpackConfigPath)
}
/**
* Injects dev-server based on the webpack config file.
*
* **Important:** `webpackFilename` path is relative to the project root (cypress.json location)
* @type {(on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions, options: { webpackFilename: string }) => Cypress.PluginConfigOptions}
*/
function injectWebpackDevServer (on, config, { webpackFilename }) {
const webpackConfig = tryLoadWebpackConfig(normalizeWebpackPath(config, webpackFilename))
if (!webpackConfig) {
throw new Error(`Can not load webpack config from path ${webpackFilename}.`)
}
on('dev-server:start', async (options) => {
return startDevServer({ options, webpackConfig })
})
config.env.reactDevtools = true
return config
}
module.exports = injectWebpackDevServer