Files
cypress/npm/webpack-dev-server/test/devServer-unit.spec.ts
Bill Glesias d7e9d6068c feat: support webpack-dev-server v5 in @cypress/webpack-dev-server (#29306)
* feat: support webpack-dev-server-5 for @cypress/webpack-dev-server [run ci]

* sidestep Forge types installed by webpack dev server [run ci]

* add changelog entry

* remove webpack 4 types

* format changelog

* Update cli/CHANGELOG.md

* Update npm/webpack-dev-server/src/helpers/sourceRelativeWebpackModules.ts

Co-authored-by: Matt Schile <mschile@cypress.io>

* add back in importsNotUsedAsValues and update system test snapshot

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Matt Schile <mschile@cypress.io>
2024-04-18 11:17:04 -04:00

105 lines
3.2 KiB
TypeScript

import path from 'path'
import proxyquire from 'proxyquire'
import { expect } from 'chai'
import { createModuleMatrixResult } from './test-helpers/createModuleMatrixResult'
import EventEmitter from 'events'
const cypressConfig = {
projectRoot: path.join(__dirname, 'test-fixtures'),
devServerPublicPathRoute: path.join(__dirname, './test-public-path'),
indexHtmlFile: path.join(__dirname, 'component-index.html'),
} as Cypress.PluginConfigOptions
describe('devServer', function () {
this.timeout(10 * 1000)
it('creates a new devServer webpack4, webpackDevServer3', async () => {
const { devServer } = proxyquire('../src/devServer', {
'./helpers/sourceRelativeWebpackModules': {
sourceDefaultWebpackDependencies: () => {
return createModuleMatrixResult({
webpack: 4,
webpackDevServer: 3,
})
} },
}) as typeof import('../src/devServer')
const result = await devServer.create({
specs: [],
cypressConfig,
webpackConfig: {},
devServerEvents: new EventEmitter(),
})
expect(result.server).to.be.instanceOf(require('webpack-dev-server-3'))
expect(result.version).to.eq(3)
})
it('creates a new devServer webpack4, webpackDevServer4', async () => {
const { devServer } = proxyquire('../src/devServer', {
'./helpers/sourceRelativeWebpackModules': {
sourceDefaultWebpackDependencies: () => {
return createModuleMatrixResult({
webpack: 4,
webpackDevServer: 4,
})
} },
}) as typeof import('../src/devServer')
const result = await devServer.create({
specs: [],
cypressConfig,
webpackConfig: {},
devServerEvents: new EventEmitter(),
})
expect(result.server).to.be.instanceOf(require('webpack-dev-server'))
expect(result.version).to.eq(4)
})
it('creates a new devServer webpack5, webpackDevServer4', async () => {
const { devServer } = proxyquire('../src/devServer', {
'./helpers/sourceRelativeWebpackModules': {
sourceDefaultWebpackDependencies: () => {
return createModuleMatrixResult({
webpack: 5,
webpackDevServer: 4,
})
} },
}) as typeof import('../src/devServer')
const result = await devServer.create({
specs: [],
cypressConfig,
webpackConfig: {},
devServerEvents: new EventEmitter(),
})
expect(result.server).to.be.instanceOf(require('webpack-dev-server'))
expect(result.version).to.eq(4)
})
it('creates a new devServer webpack5, webpackDevServer5', async () => {
const { devServer } = proxyquire('../src/devServer', {
'./helpers/sourceRelativeWebpackModules': {
sourceDefaultWebpackDependencies: () => {
return createModuleMatrixResult({
webpack: 5,
webpackDevServer: 5,
})
} },
}) as typeof import('../src/devServer')
const result = await devServer.create({
specs: [],
cypressConfig,
webpackConfig: {},
devServerEvents: new EventEmitter(),
})
expect(result.server).to.be.instanceOf(require('webpack-dev-server-5'))
expect(result.version).to.eq(5)
})
})