Skip to content

Commit 1590f7f

Browse files
authored
Merge branch 'develop' into issue-30198
2 parents 727239d + ecd944a commit 1590f7f

File tree

35 files changed

+188
-192
lines changed

35 files changed

+188
-192
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-
5-12-2025
3+
5-14-2025

.circleci/workflows.yml

Lines changed: 7 additions & 7 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.15"
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:
@@ -38,7 +38,7 @@ mainBuildFilters: &mainBuildFilters
3838
- /^release\/\d+\.\d+\.\d+$/
3939
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
4040
- 'update-v8-snapshot-cache-on-develop'
41-
- 'fix/top_framebust_window_location'
41+
- 'misc/chore/fix_sinon_chai_rewrite'
4242

4343
# usually we don't build Mac app - it takes a long time
4444
# but sometimes we want to really confirm we are doing the right thing
@@ -49,7 +49,7 @@ macWorkflowFilters: &darwin-workflow-filters
4949
- equal: [ develop, << pipeline.git.branch >> ]
5050
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
5151
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
52-
- equal: [ 'fix/top_framebust_window_location', << pipeline.git.branch >> ]
52+
- equal: [ 'misc/throw_error_on_extension_chrome_137', << pipeline.git.branch >> ]
5353
- matches:
5454
pattern: /^release\/\d+\.\d+\.\d+$/
5555
value: << pipeline.git.branch >>
@@ -60,7 +60,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters
6060
- equal: [ develop, << pipeline.git.branch >> ]
6161
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
6262
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
63-
- equal: [ 'fix/top_framebust_window_location', << pipeline.git.branch >> ]
63+
- equal: [ 'misc/throw_error_on_extension_chrome_137', << pipeline.git.branch >> ]
6464
- matches:
6565
pattern: /^release\/\d+\.\d+\.\d+$/
6666
value: << pipeline.git.branch >>
@@ -83,7 +83,7 @@ windowsWorkflowFilters: &windows-workflow-filters
8383
- equal: [ develop, << pipeline.git.branch >> ]
8484
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
8585
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
86-
- equal: [ 'fix/top_framebust_window_location', << pipeline.git.branch >> ]
86+
- equal: [ 'misc/throw_error_on_extension_chrome_137', << pipeline.git.branch >> ]
8787
- matches:
8888
pattern: /^release\/\d+\.\d+\.\d+$/
8989
value: << pipeline.git.branch >>
@@ -157,7 +157,7 @@ commands:
157157
name: Set environment variable to determine whether or not to persist artifacts
158158
command: |
159159
echo "Setting SHOULD_PERSIST_ARTIFACTS variable"
160-
echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "fix/top_framebust_window_location" ]]; then
160+
echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "misc/throw_error_on_extension_chrome_137" ]]; then
161161
export SHOULD_PERSIST_ARTIFACTS=true
162162
fi' >> "$BASH_ENV"
163163
# You must run `setup_should_persist_artifacts` command and be using bash before running this command

cli/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@ _Released 5/20/2025 (PENDING)_
1515

1616
**Misc:**
1717

18+
- 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).
1819
- 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).
1920
- 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).
2021
- Added timeout field to EnqueuedCommandAttributes type. Addresses [#30198](https://github.com/cypress-io/cypress/issues/30198).
2122

2223
**Dependency Updates:**
2324

25+
- Upgraded `@sinonjs/fake-timers` from `8.1.0` to `9.1.2`. Addressed in [#31725](https://github.com/cypress-io/cypress/pull/31725).
2426
- Upgraded `trash` from `5.2.0` to `7.2.0`. Addressed in [#31667](https://github.com/cypress-io/cypress/pull/31667).
27+
- Upgraded `webdriver` from `9.11.0` to `9.14.0`. Addressed in [#31689](https://github.com/cypress-io/cypress/pull/31689).
2528

2629
## 14.3.3
2730

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'`

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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Before using `@cypress/puppeteer`, ensure the following requirements are met:
4646

4747
- Cypress 13.6.0+ is required.
4848
- 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 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).
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.
5050

5151
## Usage
5252

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-preprocessor/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"proxyquire": "2.1.3",
4040
"semantic-release": "22.0.12",
4141
"sinon": "^9.0.0",
42-
"sinon-chai": "^3.5.0",
42+
"sinon-chai": "^3.7.0",
4343
"snap-shot-it": "7.9.10",
4444
"ts-node": "^10.9.2",
4545
"webpack": "^5.39.0"

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
"@types/react-dom": "18.3.1",
118118
"@types/request-promise": "4.1.45",
119119
"@types/send": "^0.17.1",
120-
"@types/sinon-chai": "3.2.3",
120+
"@types/sinon-chai": "3.2.12",
121121
"@types/through2": "^2.0.36",
122122
"@types/underscore.string": "0.0.38",
123123
"@typescript-eslint/eslint-plugin": "7.2.0",
@@ -199,6 +199,7 @@
199199
"semver": "^7.7.1",
200200
"shelljs": "0.8.5",
201201
"sinon": "7.3.2",
202+
"sinon-chai": "3.7.0",
202203
"snap-shot-it": "7.9.10",
203204
"stop-only": "3.4.1",
204205
"strip-ansi": "6.0.1",

packages/data-context/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
"@types/parse-glob": "3.0.29",
8787
"@types/prettier": "2.4.3",
8888
"@types/sinon": "10.0.11",
89-
"@types/sinon-chai": "3.2.8",
89+
"@types/sinon-chai": "3.2.12",
9090
"@types/stringify-object": "^3.0.0",
9191
"mocha": "7.0.1",
9292
"mocha-junit-reporter": "2.2.0",

packages/driver/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"@packages/telemetry": "0.0.0-development",
3535
"@packages/ts": "0.0.0-development",
3636
"@packages/types": "0.0.0-development",
37-
"@sinonjs/fake-timers": "8.1.0",
37+
"@sinonjs/fake-timers": "9.1.2",
3838
"@types/chai": "5.0.1",
3939
"@types/chai-subset": "1.3.5",
4040
"@types/common-tags": "^1.8.0",

packages/errors/__snapshot-html__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.html

Lines changed: 38 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/errors/src/errors.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ export const AllCypressErrors = {
9898
9999
This option will not have an effect in ${fmt.off(_.capitalize(browser))}. Tests that rely on web security being disabled will not run as expected.`
100100
},
101+
CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED: () => {
102+
return errTemplate`\
103+
Google Chrome v137 and higher does not allow loading extensions via --load-extension. If you need to load an extension to test with Cypress, please use Chrome for Testing, Chromium, or another Chrome variant that supports loading extensions.`
104+
},
101105
BROWSER_UNSUPPORTED_LAUNCH_OPTION: (browser: string, options: string[]) => {
102106
return errTemplate`\
103107
Warning: The following browser launch options were provided but are not supported by ${fmt.highlightSecondary(browser)}

packages/errors/test/unit/visualSnapshotErrors_spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,11 @@ describe('visual error templates', () => {
346346
default: [err],
347347
}
348348
},
349+
CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED: () => {
350+
return {
351+
default: [],
352+
}
353+
},
349354
CHROME_WEB_SECURITY_NOT_SUPPORTED: () => {
350355
return {
351356
default: ['firefox'],

packages/extension/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"mock-require": "3.0.3",
3535
"rimraf": "5.0.10",
3636
"sinon": "7.3.2",
37-
"sinon-chai": "3.3.0",
37+
"sinon-chai": "3.7.0",
3838
"ts-loader": "9.5.2",
3939
"webextension-polyfill": "0.4.0",
4040
"webpack": "^5.88.2"

packages/graphql/schemas/schema.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,7 @@ enum ErrorTypeEnum {
11321132
CDP_FIREFOX_DEPRECATED
11331133
CDP_RETRYING_CONNECTION
11341134
CDP_VERSION_TOO_OLD
1135+
CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED
11351136
CHROME_WEB_SECURITY_NOT_SUPPORTED
11361137
CLOUD_ALREADY_COMPLETE
11371138
CLOUD_API_RESPONSE_FAILED_RETRYING

packages/https-proxy/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"mocha": "3.5.3",
3434
"sinon": "1.17.7",
3535
"sinon-as-promised": "4.0.3",
36-
"sinon-chai": "3.3.0",
36+
"sinon-chai": "3.7.0",
3737
"ssl-root-cas": "1.3.1",
3838
"supertest": "4.0.2"
3939
},

packages/launcher/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"mocha": "3.5.3",
3535
"mock-fs": "5.4.0",
3636
"sinon": "^10.0.0",
37-
"sinon-chai": "3.4.0",
37+
"sinon-chai": "3.7.0",
3838
"typescript": "~5.4.5"
3939
},
4040
"files": [

packages/network/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"express": "4.21.0",
3838
"mocha": "6.2.2",
3939
"sinon": "7.3.1",
40-
"sinon-chai": "3.3.0",
40+
"sinon-chai": "3.7.0",
4141
"typescript": "~5.4.5"
4242
},
4343
"files": [

packages/rewriter/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"mocha": "3.5.3",
3131
"nock": "13.2.9",
3232
"sinon": "9.0.2",
33-
"sinon-chai": "3.5.0",
33+
"sinon-chai": "3.7.0",
3434
"snap-shot-it": "7.9.10"
3535
},
3636
"files": [

packages/server/lib/browsers/bidi_automation.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import type {
1313
} from 'webdriver/build/bidi/localTypes'
1414

1515
import { bidiKeyPress } from '../automation/commands/key_press'
16+
import type Protocol from 'devtools-protocol'
1617

1718
const debug = debugModule('cypress:server:browsers:bidi_automation')
1819
const debugVerbose = debugModule('cypress-verbose:server:browsers:bidi_automation')
@@ -178,7 +179,7 @@ export class BidiAutomation {
178179
headers: parsedHeaders,
179180
resourceType,
180181
originalResourceType: params.request.initiatorType || params.request.destination,
181-
initiator: params.initiator,
182+
initiator: params.initiator as Protocol.Network.Initiator,
182183
// Since we are NOT using CDP, we set the values to 0 to indicate that we do not have this information.
183184
// This is important when determining pre-request timeout and removal behavior
184185
cdpRequestWillBeSentTimestamp: 0,

packages/server/lib/browsers/chrome.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,14 @@ const _normalizeArgExtensions = function (extPath, args, pluginExtensions, brows
145145
return arg.includes(LOAD_EXTENSION)
146146
})
147147

148+
if (loadExtension || pluginExtensions.length > 0) {
149+
// @see https://github.com/cypress-io/cypress/issues/31702
150+
if (Number(browser.majorVersion) >= 137 && browser.name === 'chrome') {
151+
// eslint-disable-next-line no-console
152+
errors.warning('CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED')
153+
}
154+
}
155+
148156
if (loadExtension) {
149157
args = _.without(args, loadExtension)
150158

packages/server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@
135135
"url-parse": "1.5.10",
136136
"uuid": "8.3.2",
137137
"wait-port": "1.1.0",
138-
"webdriver": "9.11.0",
138+
"webdriver": "9.14.0",
139139
"webpack-virtual-modules": "0.5.0",
140140
"widest-line": "3.1.0"
141141
},
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
diff --git a/node_modules/@wdio/protocols/build/index.js b/node_modules/@wdio/protocols/build/index.js
2+
index 374e3dd..9c820d0 100644
3+
--- a/node_modules/@wdio/protocols/build/index.js
4+
+++ b/node_modules/@wdio/protocols/build/index.js
5+
@@ -5276,9 +5276,11 @@ var gecko_default = {
6+
],
7+
parameters: [
8+
{
9+
- name: "addon",
10+
+ // cypress uses 'path' over 'addon' to avoid zipping the extension,
11+
+ // which is easier for cypress to incorporate and doesn't break users
12+
+ name: "path",
13+
type: "string",
14+
- description: "base64 string of the add on file",
15+
+ description: "path to the extension",
16+
required: true
17+
},
18+
{

0 commit comments

Comments
 (0)