Skip to content

Commit e458cbc

Browse files
Merge branch 'release/15.0.0' into feat/wbip_full_resolve_ts_config
2 parents 499c559 + 0e74d2c commit e458cbc

File tree

99 files changed

+2132
-1435
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+2132
-1435
lines changed

.circleci/cache-version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Bump this version to force CI to re-create the cache from scratch.
22

3-
4-28-2025
3+
5-14-2025

.circleci/workflows.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
version: 2.1
22

3-
chrome-stable-version: &chrome-stable-version "136.0.7103.92"
4-
chrome-beta-version: &chrome-beta-version "137.0.7151.6"
3+
chrome-stable-version: &chrome-stable-version "136.0.7103.113"
4+
chrome-beta-version: &chrome-beta-version "137.0.7151.27"
55
firefox-stable-version: &firefox-stable-version "137.0"
66

77
orbs:

cli/CHANGELOG.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,40 @@ _Released 07/01/2025 (PENDING)_
2222

2323
- Migration helpers and related errors are no longer shown when upgrading from Cypress versions earlier than 10.0.0. To migrate from a pre-10.0.0 version, upgrade one major version at a time to receive the appropriate guidance. Addresses [#31345](https://github.com/cypress-io/cypress/issues/31345). Addressed in [https://github.com/cypress-io/cypress/pull/31629/](https://github.com/cypress-io/cypress/pull/31629/).
2424

25+
## 14.4.1
26+
27+
_Released 6/3/2025 (PENDING)_
28+
29+
**Dependency Updates:**
30+
31+
- Updated `@sinonjs/fake-timers` from `10.3.0` to `11.3.1`. Addressed in [#31746](https://github.com/cypress-io/cypress/pull/31746).
32+
33+
## 14.4.0
34+
35+
_Released 5/20/2025_
36+
37+
**Features:**
38+
39+
- `@cypress/webpack-dev-server` and `@cypress/webpack-batteries-included-preprocessor` now ship with [webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer) as a diagnostic tool to determine bundle statistics, which can be enabled via `DEBUG=cypress-verbose:webpack-dev-server:bundle-analyzer` ( component tests using webpack) or `DEBUG=cypress-verbose:webpack-batteries-included-preprocessor:bundle-analyzer` (e2e tests using webpack, which is the default preprocessor), respectively. Addresses [#30461](https://github.com/cypress-io/cypress/issues/30461).
40+
41+
**Bugfixes:**
42+
43+
- Fixed an issue where framebusting was occurring when `top.window.location` was being set explicitly. This fix does not require the `experimentalModifyObstructiveThirdPartyCode` configuration option. Addresses [#31687](https://github.com/cypress-io/cypress/issues/31687).
44+
- `cy.press()` now has a return type of `Chainable<null>` instead of `void` to match the convention of other commands that yield `null`. Addressed in [#31698](https://github.com/cypress-io/cypress/pull/31698).
45+
- Fixed an issue with the experimental usage of WebKit where Cypress incorrectly displayed `0` as the WebKit version. Addresses [#31684](https://github.com/cypress-io/cypress/issues/31684).
46+
47+
**Misc:**
48+
49+
- Chrome 137+ no longer supports `--load-extension` in branded Chrome, breaking the `@cypress/puppeteer` plugin in `open` mode and headed `run` mode and [`launchOptions.extensions`](https://docs.cypress.io/api/node-events/browser-launch-api#Add-browser-extensions). We recommend using Electron, Chrome for Testing or Chromium to continue using these features. See Cypress Docker image examples for [Chrome for Testing](https://github.com/cypress-io/cypress-docker-images/tree/master/examples/chrome-for-testing) and [Chromium](https://github.com/cypress-io/cypress-docker-images/tree/master/examples/chromium). Addresses [#31702](https://github.com/cypress-io/cypress/issues/31702) and [#31703](https://github.com/cypress-io/cypress/issues/31703).
50+
- Cursor is now available as an IDE option for opening files in Cypress, if it is installed on your system. Addressed in [#31691](https://github.com/cypress-io/cypress/pull/31691).
51+
- The error shown when the `--record` flag is missing has been updated to be shorter. Addressed in [#31676](https://github.com/cypress-io/cypress/pull/31676).
52+
53+
**Dependency Updates:**
54+
55+
- Upgraded `@sinonjs/fake-timers` from `8.1.0` to `10.3.0`. Addressed in [#31725](https://github.com/cypress-io/cypress/pull/31725) and [#31737](https://github.com/cypress-io/cypress/pull/31737).
56+
- Upgraded `trash` from `5.2.0` to `7.2.0`. Addressed in [#31667](https://github.com/cypress-io/cypress/pull/31667).
57+
- Upgraded `webdriver` from `9.11.0` to `9.14.0`. Addressed in [#31689](https://github.com/cypress-io/cypress/pull/31689).
58+
2559
## 14.3.3
2660

2761
_Released 5/6/2025_

cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
"@types/minimatch": "3.0.5",
8484
"@types/mocha": "8.0.3",
8585
"@types/sinon": "9.0.9",
86-
"@types/sinon-chai": "3.2.5",
86+
"@types/sinon-chai": "3.2.12",
8787
"chai": "3.5.0",
8888
"chai-as-promised": "7.1.1",
8989
"chai-string": "1.5.0",

cli/scripts/post-install.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ makeReferenceTypesCommentRelative('chai', '../chai/index.d.ts', sinonChaiFilenam
7171
makeReferenceTypesCommentRelative('sinon', '../sinon/index.d.ts', sinonChaiFilename)
7272

7373
// and an import sinon line to be changed to relative path
74-
shell.sed('-i', 'from \'sinon\';', 'from \'../sinon\';', sinonChaiFilename)
74+
shell.sed('-i', 'from \"sinon\";', 'from \"../sinon\";', sinonChaiFilename)
7575

7676
// copy experimental network stubbing type definitions
7777
// so users can import: `import 'cypress/types/net-stubbing'`

cli/types/cypress.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1755,7 +1755,7 @@ declare namespace Cypress {
17551755
* cy.press(Cypress.Keyboard.Keys.TAB) // dispatches a keydown and press event to the browser, followed by a keyup event.
17561756
* @see https://on.cypress.io/press
17571757
*/
1758-
press(key: typeof Cypress.Keyboard.Keys[keyof typeof Cypress.Keyboard.Keys], options?: Partial<Loggable & Timeoutable>): void
1758+
press(key: typeof Cypress.Keyboard.Keys[keyof typeof Cypress.Keyboard.Keys], options?: Partial<Loggable & Timeoutable>): Chainable<null>
17591759

17601760
/**
17611761
* Get the immediately preceding sibling of each element in a set of the elements.

guides/v8-snapshots.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,65 @@ This cache should be maintained and updated over time. Rather than having this m
3333

3434
## Troubleshooting
3535

36+
### Missing Dependency
37+
38+
#### Background on Snapshot Dependencies
39+
40+
When we generate snapshots, we create a metadata file that contains information about all dependencies included in the snapshot. In theory, these dependencies could be removed from the binary to save space, since they're already included in the snapshot. This helps offset the size increase from the snapshot itself.
41+
42+
However, not all dependencies can be safely removed. There are two main categories of dependencies that must be preserved:
43+
44+
1. Dependencies (and their sub-dependencies) that are used in child processes
45+
2. Dependencies (and their sub-dependencies) that are dynamically loaded and cannot be determined by `esbuild`
46+
47+
To handle this, we maintain a list of these dependencies and use `esbuild` to retrieve all their child dependencies. This list is defined in [binary-cleanup.js](https://github.com/cypress-io/cypress/blob/develop/scripts/binary/binary-cleanup.js#L40-L64). We then remove these dependencies from the list of v8 snapshot metadata dependencies, leaving only the ones that are safe to remove.
48+
49+
#### Handling Missing Dependencies
50+
51+
If you encounter a missing dependency error that looks something like:
52+
53+
```
54+
Error: Cannot find module 'get-stream'
55+
Require stack:
56+
- /root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/node_modules/extract-zip/index.js
57+
at Module._resolveFilename (node:internal/modules/cjs/loader:1232:15)
58+
at s._resolveFilename (node:electron/js2c/browser_init:2:124107)
59+
at PackherdModuleLoader._tryResolveFilename (/root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/packages/server/index.jsc:1:786120)
60+
at PackherdModuleLoader._resolvePaths (/root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/packages/server/index.jsc:1:782910)
61+
at PackherdModuleLoader.tryLoad (/root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/packages/server/index.jsc:1:780953)
62+
at Function.<anonymous> (/root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/packages/server/index.jsc:1:791773)
63+
at d._load (<embedded>:2752:176394)
64+
at Module.require (node:internal/modules/cjs/loader:1318:19)
65+
at require (node:internal/modules/helpers:179:18)
66+
at Object.<anonymous> (/root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/node_modules/extract-zip/index.js:4:19)
67+
at Module._compile (node:internal/modules/cjs/loader:1484:14)
68+
at Module._extensions..js (node:internal/modules/cjs/loader:1564:10)
69+
at Module.load (node:internal/modules/cjs/loader:1295:32)
70+
at Module._load (node:internal/modules/cjs/loader:1111:12)
71+
at c._load [as origLoad] (node:electron/js2c/node_init:2:16955)
72+
at PackherdModuleLoader.tryLoad (/root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/packages/server/index.jsc:1:781559)
73+
at Function.<anonymous> (/root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/packages/server/index.jsc:1:791773)
74+
at d._load (<embedded>:2752:176394)
75+
at node:internal/modules/esm/translators:350:17
76+
at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:286:7)
77+
at ModuleJob.run (node:internal/modules/esm/module_job:234:25)
78+
at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)
79+
at async startWebDriver (file:///root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/packages/server/node_modules/@wdio/utils/build/index.js:503:49)
80+
at async _WebDriver.newSession (file:///root/.cache/Cypress/beta-14.3.4-update-trash-d37e059a/Cypress/resources/app/packages/server/node_modules/webdriver/build/node.js:1327:27)
81+
at async Object.Z (<embedded>:2752:13515)
82+
at async Object.open (<embedded>:2752:30921)
83+
at async v.relaunchBrowser (<embedded>:2861:42528)
84+
```
85+
86+
Follow these steps:
87+
88+
1. Look through the stack trace of the missing dependency error
89+
2. Try to identify where the dependency is being dynamically required/imported
90+
3. Validate that the dynamically required/imported dependency is missing from the binary
91+
4. Add the dependency to the list in [binary-cleanup.js](https://github.com/cypress-io/cypress/blob/develop/scripts/binary/binary-cleanup.js#L40-L64)
92+
93+
This will ensure the dependency is preserved in the binary and available when needed.
94+
3695
### Local Development
3796

3897
If you're running into problems locally, either with generating the snapshot or at runtime, a good first step is to clean everything and start from scratch. This command will accomplish that (note that it will delete any new unstaged files, so if you want to keep them, either stash them or stage them):

npm/eslint-plugin-dev/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"eslint-plugin-mocha": "^8.2.0",
2424
"eslint-plugin-promise": "^4.2.1",
2525
"sinon": "^7.3.2",
26-
"sinon-chai": "^3.3.0"
26+
"sinon-chai": "^3.7.0"
2727
},
2828
"peerDependencies": {
2929
"@babel/eslint-parser": "^7.25.1",

npm/puppeteer/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# [@cypress/puppeteer-v0.1.6](https://github.com/cypress-io/cypress/compare/@cypress/puppeteer-v0.1.5...@cypress/puppeteer-v0.1.6) (2025-05-16)
2+
13
# [@cypress/puppeteer-v0.1.5](https://github.com/cypress-io/cypress/compare/@cypress/puppeteer-v0.1.4...@cypress/puppeteer-v0.1.5) (2024-06-07)
24

35

npm/puppeteer/README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,11 @@ Add the following in `tsconfig.json`:
4242

4343
## Compatibility
4444

45-
`@cypress/puppeteer` requires Cypress version 13.6.0 or greater.
45+
Before using `@cypress/puppeteer`, ensure the following requirements are met:
4646

47-
Only Chromium-based browsers (e.g. Chrome, Chromium, Electron) are supported.
47+
- Cypress 13.6.0+ is required.
48+
- Only Chromium-based browsers are supported, such as Chrome for Testing, Chromium, and Electron.
49+
- Chrome-branded browsers (e.g., standard Chrome) are not supported in version 137+ due to Chrome's removal of the `--load-extension` flag. We recommend using Electron, Chrome for Testing or Chromium instead. See Cypress Docker image examples for [Chrome for Testing](https://github.com/cypress-io/cypress-docker-images/tree/master/examples/chrome-for-testing) and [Chromium](https://github.com/cypress-io/cypress-docker-images/tree/master/examples/chromium). Note this change only applies to headed applications such as `cypress open` or `cypress run --headed`. The plugin will work as expected in `cypress run` mode in any version of Chrome.
4850

4951
## Usage
5052

@@ -339,6 +341,7 @@ export default defineConfig({
339341
340342
If you receive this error in your command log, the Puppeteer plugin was unable to communicate with the Cypress extension. This extension is necessary in order to re-activate the main Cypress tab after a Puppeteer command, when running in open mode.
341343
344+
* If you're using a Chrome-branded browser (e.g., standard Chrome) in version 137+, you'll need to use Chrome for Testing or Chromium instead. [See download instructions](https://www.chromium.org/getting-involved/download-chromium/).
342345
* Ensure this extension is enabled in the instance of Chrome that Cypress launches by visiting chrome://extensions/
343346
* Ensure the Cypress extension is allowed by your company's security policy by its extension id, `caljajdfkjjjdehjdoimjkkakekklcck`
344347

npm/puppeteer/src/plugin/setup.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ export function setup (options: SetupOptions) {
6363

6464
try {
6565
options.on('after:browser:launch', (browser: Cypress.Browser, options: Cypress.AfterBrowserLaunchDetails) => {
66+
if (Number(browser.majorVersion) >= 137 && browser.name === 'chrome' && browser.isHeaded) {
67+
// @see https://github.com/cypress-io/cypress/issues/31703
68+
throw pluginError('@cypress/puppeteer does not work in Google Chrome v137 and higher in cypress open mode (or headed run mode). If you need to use @cypress/puppeteer in headed mode, please use Electron, Chrome for Testing, Chromium, or another Chrome variant that supports loading extensions.')
69+
}
70+
6671
cypressBrowser = browser
6772
debuggerUrl = options.webSocketDebuggerUrl
6873
})

npm/puppeteer/test/unit/setup.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,17 @@ describe('#setup', () => {
274274
await task({ name: testTask, args: [] })
275275
expect(activateMainTabExport.activateMainTab).not.to.be.called
276276
})
277+
278+
it('catastrophically fails when the browser is Google Chrome Branded 137 and up and we are running in headed mode', async () => {
279+
setup({ on, onMessage, puppeteer: mockPuppeteer as PuppeteerNode })
280+
expect(() => {
281+
on.withArgs('after:browser:launch').yield({ family: 'chromium', isHeaded: true, name: 'chrome', majorVersion: '137' }, { webSocketDebuggerUrl: 'ws://debugger' })
282+
}).to.throw('@cypress/puppeteer does not work in Google Chrome v137 and higher in cypress open mode (or headed run mode). If you need to use @cypress/puppeteer in headed mode, please use Electron, Chrome for Testing, Chromium, or another Chrome variant that supports loading extensions.')
283+
284+
expect(() => {
285+
on.withArgs('after:browser:launch').yield({ family: 'chromium', isHeaded: true, name: 'chrome', majorVersion: '141' }, { webSocketDebuggerUrl: 'ws://debugger' })
286+
}).to.throw('@cypress/puppeteer does not work in Google Chrome v137 and higher in cypress open mode (or headed run mode). If you need to use @cypress/puppeteer in headed mode, please use Electron, Chrome for Testing, Chromium, or another Chrome variant that supports loading extensions.')
287+
})
277288
})
278289

279290
describe('validation', () => {

npm/webpack-batteries-included-preprocessor/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# [@cypress/webpack-batteries-included-preprocessor-v3.1.0](https://github.com/cypress-io/cypress/compare/@cypress/webpack-batteries-included-preprocessor-v3.0.7...@cypress/webpack-batteries-included-preprocessor-v3.1.0) (2025-05-13)
2+
3+
4+
### Features
5+
6+
* ship webpack-bundle-analyzer with`@cypress/webpack-dev-server` and `@cypress/webpack-batteries-included-preprocessor` ([#31588](https://github.com/cypress-io/cypress/issues/31588)) ([46f2867](https://github.com/cypress-io/cypress/commit/46f2867b9dafbf991bf7154cb181eb07d9c6ad20))
7+
18
# [@cypress/webpack-batteries-included-preprocessor-v3.0.7](https://github.com/cypress-io/cypress/compare/@cypress/webpack-batteries-included-preprocessor-v3.0.6...@cypress/webpack-batteries-included-preprocessor-v3.0.7) (2025-03-26)
29

310

npm/webpack-batteries-included-preprocessor/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ module.exports = (on) => {
4646

4747
Other than the `typescript` option, this preprocessor supports the same options as [@cypress/webpack-preprocessor](https://github.com/cypress-io/cypress/tree/develop/npm/webpack-preprocessor#readme), so see its [README](https://github.com/cypress-io/cypress/tree/develop/npm/webpack-preprocessor#readme) for more information.
4848

49+
## Debugging
50+
51+
If having issues with chunk load errors or bundle size problems, specifically in your end-to-end tests, please try setting `DEBUG=cypress-verbose:webpack-batteries-included-preprocessor:bundle-analyzer` before starting Cypress to get a `webpack-bundle-analyzer` report to help determine the cause of the issue. If filing an issue with Cypress, please include this report with your issue to better help us serve your issue.
52+
4953
## Contributing
5054

5155
Use the [version of Node that matches Cypress](https://github.com/cypress-io/cypress/blob/develop/.node-version).

npm/webpack-batteries-included-preprocessor/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ const webpack = require('webpack')
33
const Debug = require('debug')
44
const getTsConfig = require('get-tsconfig')
55
const webpackPreprocessor = require('@cypress/webpack-preprocessor')
6+
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
67

78
const debug = Debug('cypress:webpack-batteries-included-preprocessor')
9+
const WBADebugNamespace = 'cypress-verbose:webpack-batteries-included-preprocessor:bundle-analyzer'
810

911
class TsConfigNotFoundError extends Error {
1012
constructor () {
@@ -152,6 +154,10 @@ const getDefaultWebpackOptions = () => {
152154
// @see https://github.com/cypress-io/cypress/issues/27947.
153155
process: require.resolve('process/browser.js'),
154156
}),
157+
// If the user is trying to debug their bundle, we'll add the BundleAnalyzerPlugin
158+
// to see the size of the support file (first bundle when running `cypress open`)
159+
// and spec files (subsequent bundles when running `cypress open`)
160+
...(Debug.enabled(WBADebugNamespace) ? [new BundleAnalyzerPlugin()] : []),
155161
],
156162
resolve: {
157163
extensions: ['.js', '.json', '.jsx', '.mjs', '.coffee'],

npm/webpack-batteries-included-preprocessor/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
"url": "^0.11.1",
4545
"util": "^0.12.5",
4646
"vm-browserify": "^1.1.2",
47-
"webpack": "^5.88.2"
47+
"webpack": "^5.88.2",
48+
"webpack-bundle-analyzer": "4.10.2"
4849
},
4950
"devDependencies": {
5051
"@cypress/webpack-preprocessor": "0.0.0-development",

npm/webpack-batteries-included-preprocessor/test/unit/index.spec.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const { expect } = require('chai')
22
const decache = require('decache')
33
const mock = require('mock-require')
44
const sinon = require('sinon')
5+
const Debug = require('debug')
56

67
describe('webpack-batteries-included-preprocessor', () => {
78
beforeEach(() => {
@@ -29,6 +30,20 @@ describe('webpack-batteries-included-preprocessor', () => {
2930
expect(result.module.rules).to.have.length(4)
3031
expect(result.module.rules[3].use[0].loader).to.include('ts-loader')
3132
})
33+
34+
it('adds the BundleAnalyzerPlugin if the user is trying to debug their bundle', () => {
35+
Debug.enable('cypress-verbose:webpack-batteries-included-preprocessor:bundle-analyzer')
36+
37+
// since debug needs to be hydrated before requiring the preprocessor, we need to decache
38+
// and require again
39+
decache('../../index')
40+
preprocessor = require('../../index')
41+
const result = preprocessor.getFullWebpackOptions('file/path', 'typescript/path')
42+
43+
expect(result.plugins).to.have.length(2)
44+
expect(result.plugins[1].constructor.name).to.equal('BundleAnalyzerPlugin')
45+
Debug.disable()
46+
})
3247
})
3348

3449
context('#getTSCompilerOptionsForUser', () => {

npm/webpack-dev-server/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# [@cypress/webpack-dev-server-v4.1.0](https://github.com/cypress-io/cypress/compare/@cypress/webpack-dev-server-v4.0.2...@cypress/webpack-dev-server-v4.1.0) (2025-05-13)
2+
3+
4+
### Features
5+
6+
* ship webpack-bundle-analyzer with`@cypress/webpack-dev-server` and `@cypress/webpack-batteries-included-preprocessor` ([#31588](https://github.com/cypress-io/cypress/issues/31588)) ([46f2867](https://github.com/cypress-io/cypress/commit/46f2867b9dafbf991bf7154cb181eb07d9c6ad20))
7+
18
# [@cypress/webpack-dev-server-v4.0.2](https://github.com/cypress-io/cypress/compare/@cypress/webpack-dev-server-v4.0.1...@cypress/webpack-dev-server-v4.0.2) (2025-03-25)
29

310
# [@cypress/webpack-dev-server-v4.0.1](https://github.com/cypress-io/cypress/compare/@cypress/webpack-dev-server-v4.0.0...@cypress/webpack-dev-server-v4.0.1) (2025-01-15)

0 commit comments

Comments
 (0)