mirror of
https://github.com/cypress-io/cypress.git
synced 2026-02-20 22:21:23 -06:00
Merge branch 'develop' into release/15.0.0
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
# Bump this version to force CI to re-create the cache from scratch.
|
||||
|
||||
5-12-2025
|
||||
5-14-2025
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: 2.1
|
||||
|
||||
chrome-stable-version: &chrome-stable-version "136.0.7103.92"
|
||||
chrome-beta-version: &chrome-beta-version "137.0.7151.15"
|
||||
chrome-stable-version: &chrome-stable-version "136.0.7103.113"
|
||||
chrome-beta-version: &chrome-beta-version "137.0.7151.27"
|
||||
firefox-stable-version: &firefox-stable-version "137.0"
|
||||
|
||||
orbs:
|
||||
|
||||
@@ -22,9 +22,17 @@ _Released 07/01/2025 (PENDING)_
|
||||
|
||||
- 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/).
|
||||
|
||||
## 14.4.1
|
||||
|
||||
_Released 6/3/2025 (PENDING)_
|
||||
|
||||
**Dependency Updates:**
|
||||
|
||||
- Updated `@sinonjs/fake-timers` from `10.3.0` to `11.3.1`. Addressed in [#31746](https://github.com/cypress-io/cypress/pull/31746).
|
||||
|
||||
## 14.4.0
|
||||
|
||||
_Released 5/20/2025 (PENDING)_
|
||||
_Released 5/20/2025_
|
||||
|
||||
**Features:**
|
||||
|
||||
@@ -38,12 +46,15 @@ _Released 5/20/2025 (PENDING)_
|
||||
|
||||
**Misc:**
|
||||
|
||||
- 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).
|
||||
- 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).
|
||||
- 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).
|
||||
|
||||
**Dependency Updates:**
|
||||
|
||||
- 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).
|
||||
- Upgraded `trash` from `5.2.0` to `7.2.0`. Addressed in [#31667](https://github.com/cypress-io/cypress/pull/31667).
|
||||
- Upgraded `webdriver` from `9.11.0` to `9.14.0`. Addressed in [#31689](https://github.com/cypress-io/cypress/pull/31689).
|
||||
|
||||
## 14.3.3
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
"@types/minimatch": "3.0.5",
|
||||
"@types/mocha": "8.0.3",
|
||||
"@types/sinon": "9.0.9",
|
||||
"@types/sinon-chai": "3.2.5",
|
||||
"@types/sinon-chai": "3.2.12",
|
||||
"chai": "3.5.0",
|
||||
"chai-as-promised": "7.1.1",
|
||||
"chai-string": "1.5.0",
|
||||
|
||||
@@ -71,7 +71,7 @@ makeReferenceTypesCommentRelative('chai', '../chai/index.d.ts', sinonChaiFilenam
|
||||
makeReferenceTypesCommentRelative('sinon', '../sinon/index.d.ts', sinonChaiFilename)
|
||||
|
||||
// and an import sinon line to be changed to relative path
|
||||
shell.sed('-i', 'from \'sinon\';', 'from \'../sinon\';', sinonChaiFilename)
|
||||
shell.sed('-i', 'from \"sinon\";', 'from \"../sinon\";', sinonChaiFilename)
|
||||
|
||||
// copy experimental network stubbing type definitions
|
||||
// so users can import: `import 'cypress/types/net-stubbing'`
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"eslint-plugin-mocha": "^8.2.0",
|
||||
"eslint-plugin-promise": "^4.2.1",
|
||||
"sinon": "^7.3.2",
|
||||
"sinon-chai": "^3.3.0"
|
||||
"sinon-chai": "^3.7.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/eslint-parser": "^7.25.1",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# [@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)
|
||||
|
||||
# [@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)
|
||||
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ Before using `@cypress/puppeteer`, ensure the following requirements are met:
|
||||
|
||||
- Cypress 13.6.0+ is required.
|
||||
- Only Chromium-based browsers are supported, such as Chrome for Testing, Chromium, and Electron.
|
||||
- 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).
|
||||
- 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.
|
||||
|
||||
## Usage
|
||||
|
||||
|
||||
@@ -63,6 +63,11 @@ export function setup (options: SetupOptions) {
|
||||
|
||||
try {
|
||||
options.on('after:browser:launch', (browser: Cypress.Browser, options: Cypress.AfterBrowserLaunchDetails) => {
|
||||
if (Number(browser.majorVersion) >= 137 && browser.name === 'chrome' && browser.isHeaded) {
|
||||
// @see https://github.com/cypress-io/cypress/issues/31703
|
||||
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.')
|
||||
}
|
||||
|
||||
cypressBrowser = browser
|
||||
debuggerUrl = options.webSocketDebuggerUrl
|
||||
})
|
||||
|
||||
@@ -274,6 +274,17 @@ describe('#setup', () => {
|
||||
await task({ name: testTask, args: [] })
|
||||
expect(activateMainTabExport.activateMainTab).not.to.be.called
|
||||
})
|
||||
|
||||
it('catastrophically fails when the browser is Google Chrome Branded 137 and up and we are running in headed mode', async () => {
|
||||
setup({ on, onMessage, puppeteer: mockPuppeteer as PuppeteerNode })
|
||||
expect(() => {
|
||||
on.withArgs('after:browser:launch').yield({ family: 'chromium', isHeaded: true, name: 'chrome', majorVersion: '137' }, { webSocketDebuggerUrl: 'ws://debugger' })
|
||||
}).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.')
|
||||
|
||||
expect(() => {
|
||||
on.withArgs('after:browser:launch').yield({ family: 'chromium', isHeaded: true, name: 'chrome', majorVersion: '141' }, { webSocketDebuggerUrl: 'ws://debugger' })
|
||||
}).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.')
|
||||
})
|
||||
})
|
||||
|
||||
describe('validation', () => {
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"proxyquire": "2.1.3",
|
||||
"semantic-release": "22.0.12",
|
||||
"sinon": "^9.0.0",
|
||||
"sinon-chai": "^3.5.0",
|
||||
"sinon-chai": "^3.7.0",
|
||||
"snap-shot-it": "7.9.10",
|
||||
"ts-node": "^10.9.2",
|
||||
"webpack": "^5.39.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cypress",
|
||||
"version": "14.3.3",
|
||||
"version": "14.4.0",
|
||||
"description": "Cypress is a next generation front end testing tool built for the modern web",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
@@ -117,7 +117,7 @@
|
||||
"@types/react-dom": "18.3.1",
|
||||
"@types/request-promise": "4.1.45",
|
||||
"@types/send": "^0.17.1",
|
||||
"@types/sinon-chai": "3.2.3",
|
||||
"@types/sinon-chai": "3.2.12",
|
||||
"@types/through2": "^2.0.36",
|
||||
"@types/underscore.string": "0.0.38",
|
||||
"@typescript-eslint/eslint-plugin": "7.2.0",
|
||||
@@ -199,6 +199,7 @@
|
||||
"semver": "^7.7.1",
|
||||
"shelljs": "0.8.5",
|
||||
"sinon": "7.3.2",
|
||||
"sinon-chai": "3.7.0",
|
||||
"snap-shot-it": "7.9.10",
|
||||
"stop-only": "3.4.1",
|
||||
"strip-ansi": "6.0.1",
|
||||
@@ -278,7 +279,7 @@
|
||||
"**/ua-parser-js": "0.7.33",
|
||||
"@types/react": "18.3.12",
|
||||
"browserify-sign": "4.2.2",
|
||||
"devtools-protocol": "0.0.1413303",
|
||||
"devtools-protocol": "0.0.1459876",
|
||||
"sharp": "0.29.3",
|
||||
"vue-template-compiler": "2.6.12"
|
||||
},
|
||||
|
||||
@@ -148,13 +148,16 @@ describe('Studio Cloud', () => {
|
||||
})
|
||||
|
||||
cy.mockStudioFullSnapshot({
|
||||
id: 1,
|
||||
nodeType: 1,
|
||||
nodeName: 'div',
|
||||
localName: 'div',
|
||||
nodeValue: 'div',
|
||||
children: [],
|
||||
shadowRoots: [],
|
||||
fullSnapshot: {
|
||||
id: 1,
|
||||
nodeType: 1,
|
||||
nodeName: 'div',
|
||||
localName: 'div',
|
||||
nodeValue: 'div',
|
||||
children: [],
|
||||
shadowRoots: [],
|
||||
},
|
||||
url: 'http://localhost:3000/cypress/e2e/index.html',
|
||||
})
|
||||
|
||||
const deferred = pDefer()
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
"@types/parse-glob": "3.0.29",
|
||||
"@types/prettier": "2.4.3",
|
||||
"@types/sinon": "10.0.11",
|
||||
"@types/sinon-chai": "3.2.8",
|
||||
"@types/sinon-chai": "3.2.12",
|
||||
"@types/stringify-object": "^3.0.0",
|
||||
"mocha": "7.0.1",
|
||||
"mocha-junit-reporter": "2.2.0",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"@packages/telemetry": "0.0.0-development",
|
||||
"@packages/ts": "0.0.0-development",
|
||||
"@packages/types": "0.0.0-development",
|
||||
"@sinonjs/fake-timers": "8.1.0",
|
||||
"@sinonjs/fake-timers": "11.3.1",
|
||||
"@types/chai": "5.0.1",
|
||||
"@types/chai-subset": "1.3.5",
|
||||
"@types/common-tags": "^1.8.0",
|
||||
|
||||
38
packages/errors/__snapshot-html__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.html
generated
Normal file
38
packages/errors/__snapshot-html__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.html
generated
Normal file
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Courier+Prime&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
body {
|
||||
font-family: "Courier Prime", Courier, monospace;
|
||||
padding: 0 1em;
|
||||
line-height: 1.4;
|
||||
color: #eee;
|
||||
background-color: #111;
|
||||
}
|
||||
pre {
|
||||
padding: 0 0;
|
||||
margin: 0 0;
|
||||
font-family: "Courier Prime", Courier, monospace;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 5px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body><pre><span style="color:#e05561">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.<span style="color:#e6e6e6"></span></span>
|
||||
</pre></body></html>
|
||||
@@ -98,6 +98,10 @@ export const AllCypressErrors = {
|
||||
|
||||
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.`
|
||||
},
|
||||
CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED: () => {
|
||||
return errTemplate`\
|
||||
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.`
|
||||
},
|
||||
BROWSER_UNSUPPORTED_LAUNCH_OPTION: (browser: string, options: string[]) => {
|
||||
return errTemplate`\
|
||||
Warning: The following browser launch options were provided but are not supported by ${fmt.highlightSecondary(browser)}
|
||||
|
||||
@@ -339,6 +339,11 @@ describe('visual error templates', () => {
|
||||
default: [err],
|
||||
}
|
||||
},
|
||||
CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED: () => {
|
||||
return {
|
||||
default: [],
|
||||
}
|
||||
},
|
||||
CHROME_WEB_SECURITY_NOT_SUPPORTED: () => {
|
||||
return {
|
||||
default: ['firefox'],
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"mock-require": "3.0.3",
|
||||
"rimraf": "5.0.10",
|
||||
"sinon": "7.3.2",
|
||||
"sinon-chai": "3.3.0",
|
||||
"sinon-chai": "3.7.0",
|
||||
"ts-loader": "9.5.2",
|
||||
"webextension-polyfill": "0.4.0",
|
||||
"webpack": "^5.88.2"
|
||||
|
||||
@@ -1128,6 +1128,7 @@ enum ErrorTypeEnum {
|
||||
CDP_COULD_NOT_RECONNECT
|
||||
CDP_RETRYING_CONNECTION
|
||||
CDP_VERSION_TOO_OLD
|
||||
CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED
|
||||
CHROME_WEB_SECURITY_NOT_SUPPORTED
|
||||
CLOUD_ALREADY_COMPLETE
|
||||
CLOUD_API_RESPONSE_FAILED_RETRYING
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"mocha": "3.5.3",
|
||||
"sinon": "1.17.7",
|
||||
"sinon-as-promised": "4.0.3",
|
||||
"sinon-chai": "3.3.0",
|
||||
"sinon-chai": "3.7.0",
|
||||
"ssl-root-cas": "1.3.1",
|
||||
"supertest": "4.0.2"
|
||||
},
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"mocha": "3.5.3",
|
||||
"mock-fs": "5.4.0",
|
||||
"sinon": "^10.0.0",
|
||||
"sinon-chai": "3.4.0",
|
||||
"sinon-chai": "3.7.0",
|
||||
"typescript": "~5.4.5"
|
||||
},
|
||||
"files": [
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"express": "4.21.0",
|
||||
"mocha": "6.2.2",
|
||||
"sinon": "7.3.1",
|
||||
"sinon-chai": "3.3.0",
|
||||
"sinon-chai": "3.7.0",
|
||||
"typescript": "~5.4.5"
|
||||
},
|
||||
"files": [
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
"@packages/types": "0.0.0-development",
|
||||
"@types/express": "4.17.2",
|
||||
"@types/supertest": "2.0.10",
|
||||
"devtools-protocol": "0.0.1413303",
|
||||
"devtools-protocol": "0.0.1459876",
|
||||
"express": "4.21.0",
|
||||
"supertest": "6.0.1",
|
||||
"typescript": "~5.4.5"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
"mocha": "3.5.3",
|
||||
"nock": "13.2.9",
|
||||
"sinon": "9.0.2",
|
||||
"sinon-chai": "3.5.0",
|
||||
"sinon-chai": "3.7.0",
|
||||
"snap-shot-it": "7.9.10"
|
||||
},
|
||||
"files": [
|
||||
|
||||
@@ -6,6 +6,7 @@ import { cookieMatches } from '../automation/util'
|
||||
import { bidiKeyPress } from '../automation/commands/key_press'
|
||||
import { AutomationNotImplemented } from '../automation/automation_not_implemented'
|
||||
|
||||
import type Protocol from 'devtools-protocol'
|
||||
import type { Automation } from '../automation'
|
||||
import type { BrowserPreRequest, BrowserResponseReceived, ResourceType } from '@packages/proxy'
|
||||
import type { AutomationMiddleware, AutomationCommands } from '@packages/types'
|
||||
@@ -304,7 +305,7 @@ export class BidiAutomation {
|
||||
headers: parsedHeaders,
|
||||
resourceType,
|
||||
originalResourceType: params.request.initiatorType || params.request.destination,
|
||||
initiator: params.initiator,
|
||||
initiator: params.initiator as Protocol.Network.Initiator,
|
||||
// Since we are NOT using CDP, we set the values to 0 to indicate that we do not have this information.
|
||||
// This is important when determining pre-request timeout and removal behavior
|
||||
cdpRequestWillBeSentTimestamp: 0,
|
||||
|
||||
@@ -145,6 +145,14 @@ const _normalizeArgExtensions = function (extPath, args, pluginExtensions, brows
|
||||
return arg.includes(LOAD_EXTENSION)
|
||||
})
|
||||
|
||||
if (loadExtension || pluginExtensions.length > 0) {
|
||||
// @see https://github.com/cypress-io/cypress/issues/31702
|
||||
if (Number(browser.majorVersion) >= 137 && browser.name === 'chrome') {
|
||||
// eslint-disable-next-line no-console
|
||||
errors.warning('CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED')
|
||||
}
|
||||
}
|
||||
|
||||
if (loadExtension) {
|
||||
args = _.without(args, loadExtension)
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
"url-parse": "1.5.10",
|
||||
"uuid": "8.3.2",
|
||||
"wait-port": "1.1.0",
|
||||
"webdriver": "9.11.0",
|
||||
"webdriver": "9.14.0",
|
||||
"webpack-virtual-modules": "0.5.0",
|
||||
"widest-line": "3.1.0"
|
||||
},
|
||||
@@ -181,7 +181,7 @@
|
||||
"chai-uuid": "1.0.6",
|
||||
"chrome-har-capturer": "0.13.4",
|
||||
"cross-env": "6.0.3",
|
||||
"devtools-protocol": "0.0.1413303",
|
||||
"devtools-protocol": "0.0.1459876",
|
||||
"eol": "0.9.1",
|
||||
"esbuild": "^0.15.3",
|
||||
"eventsource": "2.0.2",
|
||||
|
||||
18
packages/server/patches/@wdio+protocols+9.14.0.patch
Normal file
18
packages/server/patches/@wdio+protocols+9.14.0.patch
Normal file
@@ -0,0 +1,18 @@
|
||||
diff --git a/node_modules/@wdio/protocols/build/index.js b/node_modules/@wdio/protocols/build/index.js
|
||||
index 374e3dd..9c820d0 100644
|
||||
--- a/node_modules/@wdio/protocols/build/index.js
|
||||
+++ b/node_modules/@wdio/protocols/build/index.js
|
||||
@@ -5276,9 +5276,11 @@ var gecko_default = {
|
||||
],
|
||||
parameters: [
|
||||
{
|
||||
- name: "addon",
|
||||
+ // cypress uses 'path' over 'addon' to avoid zipping the extension,
|
||||
+ // which is easier for cypress to incorporate and doesn't break users
|
||||
+ name: "path",
|
||||
type: "string",
|
||||
- description: "base64 string of the add on file",
|
||||
+ description: "path to the extension",
|
||||
required: true
|
||||
},
|
||||
{
|
||||
@@ -1,79 +0,0 @@
|
||||
diff --git a/node_modules/@wdio/protocols/README.md b/node_modules/@wdio/protocols/README.md
|
||||
deleted file mode 100644
|
||||
index eea42bf..0000000
|
||||
--- a/node_modules/@wdio/protocols/README.md
|
||||
+++ /dev/null
|
||||
@@ -1,55 +0,0 @@
|
||||
-WebdriverIO Protocol Helper
|
||||
-===========================
|
||||
-
|
||||
-This package stores the definition for various automation protocols such as [WebDriver](https://w3c.github.io/webdriver/) or vendor specific protocol extensions like for [SauceLabs](https://saucelabs.com/). Unless you are interested in generating a WebDriver client there should be no reason why you should need this package. This package holds the definition of the following protocols:
|
||||
-
|
||||
-- [WebDriver](https://w3c.github.io/webdriver/)
|
||||
-- [JSON Wire Protocol](https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol)
|
||||
-- [Appium](http://appium.io/)
|
||||
-- [Mobile JSON Wire Protocol](https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md)
|
||||
-- [Sauce Labs](https://saucelabs.com/)
|
||||
-- Chrome (WebDriver extension when running Chromedriver)
|
||||
-- Selenium (when running Selenium Standalone Server)
|
||||
-
|
||||
-## Install
|
||||
-
|
||||
-To install the package, run:
|
||||
-
|
||||
-```sh
|
||||
-npm install @wdio/protocols
|
||||
-```
|
||||
-
|
||||
-## Usage
|
||||
-
|
||||
-You can get data by importing the package as follows:
|
||||
-
|
||||
-```js
|
||||
-import { WebDriverProtocol, MJsonWProtocol, AppiumProtocol, ChromiumProtocol, SauceLabsProtocol, SeleniumProtocol } from '@wdio/protocols'
|
||||
-
|
||||
-/**
|
||||
- * get description of session command
|
||||
- */
|
||||
-console.log(WebDriverProtocol['/session'].POST.description)
|
||||
-```
|
||||
-
|
||||
-## TypeScript Interfaces
|
||||
-
|
||||
-The package exposes TypeScript interfaces for all protocols. You can use them for your own project as follows:
|
||||
-
|
||||
-```ts
|
||||
-import type { WebDriverCommands } from '@wdio/protocol'
|
||||
-
|
||||
-import { WebDriverCommands, WebDriverCommandsAsync } from './src'
|
||||
-
|
||||
-const browser = {} as WebDriverCommands
|
||||
-browser.sendAlertText(true)
|
||||
-// fails with "Argument of type 'boolean' is not assignable to parameter of type 'string'.ts(2345)"
|
||||
-
|
||||
-const asyncBrowser = {} as WebDriverCommandsAsync
|
||||
-const a = await asyncBrowser.getTitle()
|
||||
-type foo = typeof a // string
|
||||
-```
|
||||
-
|
||||
-----
|
||||
-
|
||||
-For more information on WebdriverIO see the [homepage](https://webdriver.io).
|
||||
diff --git a/node_modules/@wdio/protocols/build/index.js b/node_modules/@wdio/protocols/build/index.js
|
||||
index b33b8bd..0f7da3a 100644
|
||||
--- a/node_modules/@wdio/protocols/build/index.js
|
||||
+++ b/node_modules/@wdio/protocols/build/index.js
|
||||
@@ -5166,9 +5166,11 @@ var gecko_default = {
|
||||
],
|
||||
parameters: [
|
||||
{
|
||||
- name: "addon",
|
||||
+ // cypress uses 'path' over 'addon' to avoid zipping the extension,
|
||||
+ // which is easier for cypress to encorporate and doesn't break users
|
||||
+ name: "path",
|
||||
type: "string",
|
||||
- description: "base64 string of the add on file",
|
||||
+ description: "path to the extension",
|
||||
required: true
|
||||
},
|
||||
{
|
||||
@@ -1,15 +1,5 @@
|
||||
diff --git a/node_modules/@wdio/utils/README.md b/node_modules/@wdio/utils/README.md
|
||||
deleted file mode 100644
|
||||
index 3e8048a..0000000
|
||||
--- a/node_modules/@wdio/utils/README.md
|
||||
+++ /dev/null
|
||||
@@ -1,4 +0,0 @@
|
||||
-WDIO Repl
|
||||
-=========
|
||||
-
|
||||
-> A WDIO helper utility to provide a repl interface WebdriverIO
|
||||
diff --git a/node_modules/@wdio/utils/build/node.js b/node_modules/@wdio/utils/build/node.js
|
||||
index c499226..92050be 100644
|
||||
index 6f664e3..4bb80b5 100644
|
||||
--- a/node_modules/@wdio/utils/build/node.js
|
||||
+++ b/node_modules/@wdio/utils/build/node.js
|
||||
@@ -5,6 +5,7 @@ import cp2 from "node:child_process";
|
||||
@@ -36,5 +26,5 @@ index c499226..92050be 100644
|
||||
+// wrap in cypress debugger statement to avoid extraneous messages to the console
|
||||
+log2.setLevel(debugModule.enabled('cypress-verbose:server:browsers:webdriver') ? 'info' : 'silent')
|
||||
var DRIVER_WAIT_TIMEOUT = 10 * 1e3;
|
||||
var DRIVER_RETRY_INTERVAL = 100;
|
||||
async function startWebDriver(options) {
|
||||
if (process.env.WDIO_SKIP_DRIVER_SETUP) {
|
||||
@@ -270,6 +270,32 @@ describe('lib/browsers/chrome', () => {
|
||||
})
|
||||
})
|
||||
|
||||
it('warns the user if `--load-extension` is passed into branded chrome 137 and up', async function () {
|
||||
sinon.stub(console, 'log')
|
||||
|
||||
plugins.registerEvent('before:browser:launch', (browser, config) => {
|
||||
return Promise.resolve({ args: ['--foo=bar', '--load-extension=/foo/bar/baz.js,/quux.js'] })
|
||||
})
|
||||
|
||||
await chrome.open({ isHeaded: true, majorVersion: '137', name: 'chrome' }, 'http://', { onWarning: () => {}, onError: () => {} }, this.automation)
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
expect(console.log).to.have.been.calledWith(sinon.match('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.'))
|
||||
})
|
||||
|
||||
it('warns the user if launchOptions.extensions is passed into branded chrome 137 and up', async function () {
|
||||
sinon.stub(console, 'log')
|
||||
|
||||
plugins.registerEvent('before:browser:launch', (browser, config) => {
|
||||
return Promise.resolve({ args: ['--foo=bar'], extensions: ['/foo/bar/baz.js', '/quux.js'] })
|
||||
})
|
||||
|
||||
await chrome.open({ isHeaded: true, majorVersion: '139', name: 'chrome' }, 'http://', { onWarning: () => {}, onError: () => {} }, this.automation)
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
expect(console.log).to.have.been.calledWith(sinon.match('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.'))
|
||||
})
|
||||
|
||||
it('cleans up an unclean browser profile exit status', function () {
|
||||
this.readJson.withArgs('/profile/dir/Default/Preferences').resolves({
|
||||
profile: {
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@types/uuid": "8.3.2",
|
||||
"chai": "3.5.0",
|
||||
"cross-env": "6.0.3",
|
||||
"devtools-protocol": "0.0.1413303",
|
||||
"devtools-protocol": "0.0.1459876",
|
||||
"mocha": "3.5.3",
|
||||
"resolve-pkg": "2.0.0"
|
||||
},
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"@types/node": "20.16.0",
|
||||
"axios": "^1.8.3",
|
||||
"better-sqlite3": "11.5.0",
|
||||
"devtools-protocol": "0.0.1413303",
|
||||
"devtools-protocol": "0.0.1459876",
|
||||
"express": "4.21.0",
|
||||
"socket.io": "4.0.1",
|
||||
"typescript": "~5.4.5"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"resolve-url-loader": "5.0.0",
|
||||
"sass": "1.64.1",
|
||||
"sass-loader": "13.3.2",
|
||||
"sinon-chai": "3.3.0",
|
||||
"sinon-chai": "3.7.0",
|
||||
"stream-browserify": "3.0.0",
|
||||
"url": "0.11.1",
|
||||
"webpack": "^5.88.2",
|
||||
|
||||
@@ -4169,5 +4169,5 @@
|
||||
"./tooling/v8-snapshot/cache/darwin/snapshot-entry.js"
|
||||
],
|
||||
"deferredHashFile": "yarn.lock",
|
||||
"deferredHash": "f9e2de4e3ec1e82df68adb49af36c69e62529a89e528442412780a181a1b8af5"
|
||||
"deferredHash": "be99987ecceeb9265c3a09152ee4ea5e02e0200f7afc4e21332a36e5e8819fe6"
|
||||
}
|
||||
@@ -4172,5 +4172,5 @@
|
||||
"./tooling/v8-snapshot/cache/linux/snapshot-entry.js"
|
||||
],
|
||||
"deferredHashFile": "yarn.lock",
|
||||
"deferredHash": "f9e2de4e3ec1e82df68adb49af36c69e62529a89e528442412780a181a1b8af5"
|
||||
"deferredHash": "be99987ecceeb9265c3a09152ee4ea5e02e0200f7afc4e21332a36e5e8819fe6"
|
||||
}
|
||||
120
yarn.lock
120
yarn.lock
@@ -6716,19 +6716,12 @@
|
||||
dependencies:
|
||||
type-detect "4.0.8"
|
||||
|
||||
"@sinonjs/fake-timers@8.1.0":
|
||||
version "8.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7"
|
||||
integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==
|
||||
"@sinonjs/fake-timers@11.3.1", "@sinonjs/fake-timers@^11.2.2":
|
||||
version "11.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz#51d6e8d83ca261ff02c0ab0e68e9db23d5cd5999"
|
||||
integrity sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==
|
||||
dependencies:
|
||||
"@sinonjs/commons" "^1.7.0"
|
||||
|
||||
"@sinonjs/fake-timers@^11.2.2":
|
||||
version "11.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699"
|
||||
integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==
|
||||
dependencies:
|
||||
"@sinonjs/commons" "^3.0.0"
|
||||
"@sinonjs/commons" "^3.0.1"
|
||||
|
||||
"@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1":
|
||||
version "6.0.1"
|
||||
@@ -8383,26 +8376,10 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/sinon-chai@3.2.3":
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.3.tgz#afe392303dda95cc8069685d1e537ff434fa506e"
|
||||
integrity sha512-TOUFS6vqS0PVL1I8NGVSNcFaNJtFoyZPXZ5zur+qlhDfOmQECZZM4H4kKgca6O8L+QceX/ymODZASfUfn+y4yQ==
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
"@types/sinon" "*"
|
||||
|
||||
"@types/sinon-chai@3.2.5":
|
||||
version "3.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.5.tgz#df21ae57b10757da0b26f512145c065f2ad45c48"
|
||||
integrity sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ==
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
"@types/sinon" "*"
|
||||
|
||||
"@types/sinon-chai@3.2.8":
|
||||
version "3.2.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.8.tgz#5871d09ab50d671d8e6dd72e9073f8e738ac61dc"
|
||||
integrity sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==
|
||||
"@types/sinon-chai@3.2.12":
|
||||
version "3.2.12"
|
||||
resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.12.tgz#c7cb06bee44a534ec84f3a5534c3a3a46fd779b6"
|
||||
integrity sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
"@types/sinon" "*"
|
||||
@@ -9193,14 +9170,14 @@
|
||||
dependencies:
|
||||
vue-demi "*"
|
||||
|
||||
"@wdio/config@9.11.0":
|
||||
version "9.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@wdio/config/-/config-9.11.0.tgz#d16ba92ad0fdde2573e5861d1bd1642f8fb53d5e"
|
||||
integrity sha512-lBcmd7r+3nHJwIWDZ/cLIXcIL9rCmQmMvMWQ+Ykcrlc2khePX92VZyd0igptrZATJGD3tQ7VySR5Bozz6uMzyA==
|
||||
"@wdio/config@9.14.0":
|
||||
version "9.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@wdio/config/-/config-9.14.0.tgz#7a37e6ec541dd942e7cf04d2d65a9634c9529250"
|
||||
integrity sha512-mW6VAXfUgd2j+8YJfFWvg8Ba/7g1Brr6/+MFBpp5rTQsw/2bN3PBJsQbWpNl99OCgoS8vgc5Ykps5ZUEeffSVQ==
|
||||
dependencies:
|
||||
"@wdio/logger" "9.4.4"
|
||||
"@wdio/types" "9.10.1"
|
||||
"@wdio/utils" "9.11.0"
|
||||
"@wdio/types" "9.14.0"
|
||||
"@wdio/utils" "9.14.0"
|
||||
deepmerge-ts "^7.0.3"
|
||||
glob "^10.2.2"
|
||||
import-meta-resolve "^4.0.0"
|
||||
@@ -9215,26 +9192,26 @@
|
||||
loglevel-plugin-prefix "^0.8.4"
|
||||
strip-ansi "^7.1.0"
|
||||
|
||||
"@wdio/protocols@9.7.0":
|
||||
version "9.7.0"
|
||||
resolved "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.7.0.tgz#2f2c0a7e371d65305e0d64980f63caa98ba5a4de"
|
||||
integrity sha512-5DI8cqJqT9K6oQn8UpaSTmcGAl4ufkUWC5FoPT3oXdLjILfxvweZDf/2XNBCbGMk4+VOMKqB2ofOqKhDIB2nAg==
|
||||
"@wdio/protocols@9.14.0":
|
||||
version "9.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@wdio/protocols/-/protocols-9.14.0.tgz#5e4fd87413121cf6cc9164e13b096e565d01f0a9"
|
||||
integrity sha512-inJR+G8iiFrk8/JPMfxpy6wA7rvMIZFV0T8vDN1Io7sGGj+EXX7ujpDxoCns53qxV4RytnSlgHRcCaASPFcecQ==
|
||||
|
||||
"@wdio/types@9.10.1":
|
||||
version "9.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@wdio/types/-/types-9.10.1.tgz#89d3eb936ac2dc5675b01652ee9475e1ff31f325"
|
||||
integrity sha512-/t1VXPU5Ad1FQjRUP0WlK7IR0dCTX5hSkul8SpCuUpWbeyI4Iol/Wx2b1YU6nS+Ydh78rJCyHxtV0eE5TM1rbw==
|
||||
"@wdio/types@9.14.0":
|
||||
version "9.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@wdio/types/-/types-9.14.0.tgz#50bde9f364d6b196d7d27edacf6825cee6241855"
|
||||
integrity sha512-Zqc4sxaQLIXdI1EHItIuVIOn7LvPmDvl9JEANwiJ35ck82Xlj+X55Gd9NtELSwChzKgODD0OBzlLgXyxTr69KA==
|
||||
dependencies:
|
||||
"@types/node" "^20.1.0"
|
||||
|
||||
"@wdio/utils@9.11.0":
|
||||
version "9.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@wdio/utils/-/utils-9.11.0.tgz#006234c865579e86b121998c78e47e86013de57d"
|
||||
integrity sha512-chVbHqrjDlIKCLoAPLdrFK8Qozu/S+fbubqlyazohAKnouCUCa2goYs7faYR0lkmLqm92PllJS+KBRAha9V/tg==
|
||||
"@wdio/utils@9.14.0":
|
||||
version "9.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@wdio/utils/-/utils-9.14.0.tgz#963e0679730fe0473c760afddc335c157a839b5c"
|
||||
integrity sha512-oJapwraSflOe0CmeF3TBocdt983hq9mCutLCfie4QmE+TKRlCsZz4iidG1NRAZPGdKB32nfHtyQlW0Dfxwn6RA==
|
||||
dependencies:
|
||||
"@puppeteer/browsers" "^2.2.0"
|
||||
"@wdio/logger" "9.4.4"
|
||||
"@wdio/types" "9.10.1"
|
||||
"@wdio/types" "9.14.0"
|
||||
decamelize "^6.0.0"
|
||||
deepmerge-ts "^7.0.3"
|
||||
edgedriver "^6.1.1"
|
||||
@@ -14144,10 +14121,10 @@ detective@^5.0.2:
|
||||
defined "^1.0.0"
|
||||
minimist "^1.1.1"
|
||||
|
||||
devtools-protocol@0.0.1159816, devtools-protocol@0.0.1413303, devtools-protocol@0.0.927104:
|
||||
version "0.0.1413303"
|
||||
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1413303.tgz#72a194e7474a17cd75f8c1d2627db0563e2f719e"
|
||||
integrity sha512-AjVpl/7DdE1gf40ydrVpBdGYprq/seOLgN46p+rYyJ/lfhrI6e4zvX0HWSr3cIvj16Ks9kwEdmvmwlyKcELBBw==
|
||||
devtools-protocol@0.0.1159816, devtools-protocol@0.0.1459876, devtools-protocol@0.0.927104:
|
||||
version "0.0.1459876"
|
||||
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1459876.tgz#07f69c1921ae89624f65ddd311d2214e8cb35e1e"
|
||||
integrity sha512-9Dng0X6IdYO8CxlNlOYW+Jc8deGZdOQOL4Sy2UbA+XiCy1Xxi7QtP5CWZKEYv4EEfp7hxp7LhF6RQWfUXK1+/w==
|
||||
|
||||
dicer@0.2.5:
|
||||
version "0.2.5"
|
||||
@@ -27927,22 +27904,7 @@ sinon-as-promised@4.0.3:
|
||||
create-thenable "~1.0.0"
|
||||
native-promise-only "~0.8.1"
|
||||
|
||||
sinon-chai@3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.3.0.tgz#8084ff99451064910fbe2c2cb8ab540c00b740ea"
|
||||
integrity sha512-r2JhDY7gbbmh5z3Q62pNbrjxZdOAjpsqW/8yxAZRSqLZqowmfGZPGUZPFf3UX36NLis0cv8VEM5IJh9HgkSOAA==
|
||||
|
||||
sinon-chai@3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.4.0.tgz#06fb88dee80decc565106a3061d380007f21e18d"
|
||||
integrity sha512-BpVxsjEkGi6XPbDXrgWUe7Cb1ZzIfxKUbu/MmH5RoUnS7AXpKo3aIYIyQUg0FMvlUL05aPt7VZuAdaeQhEnWxg==
|
||||
|
||||
sinon-chai@3.5.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.5.0.tgz#c9a78304b0e15befe57ef68e8a85a00553f5c60e"
|
||||
integrity sha512-IifbusYiQBpUxxFJkR3wTU68xzBN0+bxCScEaKMjBvAQERg6FnTTc1F17rseLb1tjmkJ23730AXpFI0c47FgAg==
|
||||
|
||||
sinon-chai@3.7.0, sinon-chai@^3.3.0, sinon-chai@^3.5.0, sinon-chai@^3.7.0:
|
||||
sinon-chai@3.7.0, sinon-chai@^3.7.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.7.0.tgz#cfb7dec1c50990ed18c153f1840721cf13139783"
|
||||
integrity sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==
|
||||
@@ -31580,18 +31542,18 @@ web-streams-polyfill@^3.0.3:
|
||||
resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b"
|
||||
integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==
|
||||
|
||||
webdriver@9.11.0:
|
||||
version "9.11.0"
|
||||
resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-9.11.0.tgz#12c33e6481ca3ddfbda61ca07fb445615b8f4c45"
|
||||
integrity sha512-KQdI5sK+YwnUqol8MhvW9y6V+fhaW82KRhqMYnVCOrG4sJFWg7A9OIqR11Buco804HpzxyocRO6MnOQrNvP0vQ==
|
||||
webdriver@9.14.0:
|
||||
version "9.14.0"
|
||||
resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-9.14.0.tgz#b448d73ba36f24ab08882906fbb7081faa092d37"
|
||||
integrity sha512-0mVjxafQ5GNdK4l/FVmmmXGUfLHCSBE4Ml2LG23rxgmw53CThAos6h01UgIEINonxIzgKEmwfqJioo3/frbpbQ==
|
||||
dependencies:
|
||||
"@types/node" "^20.1.0"
|
||||
"@types/ws" "^8.5.3"
|
||||
"@wdio/config" "9.11.0"
|
||||
"@wdio/config" "9.14.0"
|
||||
"@wdio/logger" "9.4.4"
|
||||
"@wdio/protocols" "9.7.0"
|
||||
"@wdio/types" "9.10.1"
|
||||
"@wdio/utils" "9.11.0"
|
||||
"@wdio/protocols" "9.14.0"
|
||||
"@wdio/types" "9.14.0"
|
||||
"@wdio/utils" "9.14.0"
|
||||
deepmerge-ts "^7.0.3"
|
||||
undici "^6.20.1"
|
||||
ws "^8.8.0"
|
||||
|
||||
Reference in New Issue
Block a user