cypress 16.0.0 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/cypress CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var cli = require('../cli-Dl3GL9Ov.js');
5
- require('../xvfb-BKRGwxlS.js');
4
+ var cli = require('../cli-BUzHfIQ2.js');
5
+ require('../xvfb-CbW2_YXR.js');
6
6
  require('os');
7
7
  require('bluebird');
8
8
  require('@cypress/xvfb');
@@ -32,7 +32,7 @@ require('commander');
32
32
  require('cli-table3');
33
33
  require('dayjs');
34
34
  require('dayjs/plugin/relativeTime');
35
- require('../spawn-DpvsyDKg.js');
35
+ require('../spawn-BNsy7yWl.js');
36
36
  require('child_process');
37
37
  require('listr2');
38
38
  require('readline');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var xvfb = require('./xvfb-BKRGwxlS.js');
3
+ var xvfb = require('./xvfb-CbW2_YXR.js');
4
4
  var _ = require('lodash');
5
5
  var commander = require('commander');
6
6
  var commonTags = require('common-tags');
@@ -13,7 +13,7 @@ var dayjs = require('dayjs');
13
13
  var relativeTime = require('dayjs/plugin/relativeTime');
14
14
  var chalk = require('chalk');
15
15
  var Bluebird = require('bluebird');
16
- var spawn = require('./spawn-DpvsyDKg.js');
16
+ var spawn = require('./spawn-BNsy7yWl.js');
17
17
  var os = require('os');
18
18
  var listr2 = require('listr2');
19
19
  var timers = require('timers/promises');
@@ -3088,7 +3088,7 @@ const cliModule = {
3088
3088
  .action(function (opts, args) {
3089
3089
  return xvfb.__awaiter(this, void 0, void 0, function* () {
3090
3090
  try {
3091
- const { default: tapModule } = yield Promise.resolve().then(function () { return require('./tap-tSM1ve9x.js'); });
3091
+ const { default: tapModule } = yield Promise.resolve().then(function () { return require('./tap-E19yanov.js'); });
3092
3092
  const code = yield tapModule.start(args || [], _.pick(opts, ['session', 'json', 'timeout']));
3093
3093
  process.exit(code);
3094
3094
  }
package/dist/cli.js CHANGED
@@ -2,14 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('./xvfb-BKRGwxlS.js');
5
+ require('./xvfb-CbW2_YXR.js');
6
6
  require('lodash');
7
7
  require('commander');
8
8
  require('common-tags');
9
9
  require('log-symbols');
10
10
  require('debug');
11
- var cli = require('./cli-Dl3GL9Ov.js');
12
- require('./spawn-DpvsyDKg.js');
11
+ var cli = require('./cli-BUzHfIQ2.js');
12
+ require('./spawn-BNsy7yWl.js');
13
13
  require('os');
14
14
  require('bluebird');
15
15
  require('@cypress/xvfb');
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var xvfb = require('./xvfb-BKRGwxlS.js');
3
+ var xvfb = require('./xvfb-CbW2_YXR.js');
4
4
  var tmp = require('tmp');
5
5
  var fs = require('fs-extra');
6
- var cli$1 = require('./cli-Dl3GL9Ov.js');
6
+ var cli$1 = require('./cli-BUzHfIQ2.js');
7
7
 
8
8
  /**
9
9
  * Opens Cypress GUI
package/dist/cypress.js CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- require('./xvfb-BKRGwxlS.js');
3
+ require('./xvfb-CbW2_YXR.js');
4
4
  require('tmp');
5
5
  require('fs-extra');
6
- require('./cli-Dl3GL9Ov.js');
7
- var cypress = require('./cypress-BfVf5_hP.js');
6
+ require('./cli-BUzHfIQ2.js');
7
+ var cypress = require('./cypress-D0g_F_Y2.js');
8
8
  require('os');
9
9
  require('bluebird');
10
10
  require('@cypress/xvfb');
@@ -33,7 +33,7 @@ require('commander');
33
33
  require('cli-table3');
34
34
  require('dayjs');
35
35
  require('dayjs/plugin/relativeTime');
36
- require('./spawn-DpvsyDKg.js');
36
+ require('./spawn-BNsy7yWl.js');
37
37
  require('child_process');
38
38
  require('listr2');
39
39
  require('readline');
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- require('../xvfb-BKRGwxlS.js');
3
+ require('../xvfb-CbW2_YXR.js');
4
4
  require('lodash');
5
5
  require('os');
6
6
  require('child_process');
7
7
  require('path');
8
8
  require('debug');
9
- var spawn = require('../spawn-DpvsyDKg.js');
9
+ var spawn = require('../spawn-BNsy7yWl.js');
10
10
  require('readline');
11
11
  require('process');
12
12
  require('stream');
package/dist/exec/xvfb.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var xvfb = require('../xvfb-BKRGwxlS.js');
5
+ var xvfb = require('../xvfb-CbW2_YXR.js');
6
6
  require('os');
7
7
  require('bluebird');
8
8
  require('@cypress/xvfb');
package/dist/index.js CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var xvfb = require('./xvfb-BKRGwxlS.js');
5
+ var xvfb = require('./xvfb-CbW2_YXR.js');
6
6
  var minimist = require('minimist');
7
7
  var Debug = require('debug');
8
- var cli$1 = require('./cli-Dl3GL9Ov.js');
9
- var spawn = require('./spawn-DpvsyDKg.js');
10
- var cypress = require('./cypress-BfVf5_hP.js');
8
+ var cli$1 = require('./cli-BUzHfIQ2.js');
9
+ var spawn = require('./spawn-BNsy7yWl.js');
10
+ var cypress = require('./cypress-D0g_F_Y2.js');
11
11
  require('os');
12
12
  require('bluebird');
13
13
  require('@cypress/xvfb');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var xvfb = require('./xvfb-BKRGwxlS.js');
3
+ var xvfb = require('./xvfb-CbW2_YXR.js');
4
4
  var _ = require('lodash');
5
5
  var os = require('os');
6
6
  var cp = require('child_process');
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var xvfb = require('./xvfb-BKRGwxlS.js');
3
+ var xvfb = require('./xvfb-CbW2_YXR.js');
4
4
  var Debug = require('debug');
5
5
  var commander = require('commander');
6
6
  var path = require('path');
7
- var cli = require('./cli-Dl3GL9Ov.js');
7
+ var cli = require('./cli-BUzHfIQ2.js');
8
8
  var CRI = require('chrome-remote-interface');
9
9
  var chalk = require('chalk');
10
10
  var crypto = require('crypto');
@@ -33,7 +33,7 @@ require('untildify');
33
33
  require('cli-table3');
34
34
  require('dayjs');
35
35
  require('dayjs/plugin/relativeTime');
36
- require('./spawn-DpvsyDKg.js');
36
+ require('./spawn-BNsy7yWl.js');
37
37
  require('child_process');
38
38
  require('listr2');
39
39
  require('readline');
@@ -886,15 +886,12 @@ const renderReporterSpecHuman = (view) => {
886
886
  return layout(blocks);
887
887
  };
888
888
 
889
- // The run command starts a spec and returns immediately (poll `status` for
890
- // progress), so this confirms what was launched rather than reporting an outcome.
889
+ // The run command requests a spec and returns immediately (poll `status` for
890
+ // progress), so this acknowledges the request rather than reporting an outcome.
891
891
  const renderRunHuman = (result) => {
892
892
  return layout([
893
- [titleLine(color.pass(''), result.spec)],
894
- definitionList([
895
- ['testing type', result.testingType],
896
- ['browser', result.browser],
897
- ]),
893
+ [titleLine(color.pending(''), `${result.spec} is ${result.status}`)],
894
+ [color.muted('use tap status to check progress')],
898
895
  ]);
899
896
  };
900
897
 
@@ -941,12 +938,14 @@ const sessionColumns = (sessions) => {
941
938
  browserCell(session),
942
939
  ];
943
940
  });
944
- return columns(['PID', 'PROJECT', 'TYPE', 'BROWSER'], rows, (cells, index) => [
945
- chalk.bold(cells[0]),
946
- cells[1],
947
- cells[2],
948
- browserColor(sessions[index])(cells[3]),
949
- ]);
941
+ return columns(['PID', 'PROJECT', 'TYPE', 'BROWSER'], rows, (cells, index) => {
942
+ return [
943
+ chalk.bold(cells[0]),
944
+ cells[1],
945
+ cells[2],
946
+ browserColor(sessions[index])(cells[3]),
947
+ ];
948
+ });
950
949
  };
951
950
  // The reachable open-mode sessions under a counted heading.
952
951
  const renderSessionsHuman = (sessions) => {
@@ -1652,12 +1651,14 @@ const eventCollectorUrl = (includeMachineId = false) => {
1652
1651
  var _a;
1653
1652
  return `${CLOUD_URLS[(_a = namedCollectorEnv()) !== null && _a !== void 0 ? _a : 'production']}/${includeMachineId ? 'machine-collect' : 'anon-collect'}`;
1654
1653
  };
1655
- const newTrace = (command = 'none', flags = []) => ({
1656
- messageId: crypto.randomUUID(),
1657
- startedAt: Date.now(),
1658
- command,
1659
- flags,
1660
- });
1654
+ const newTrace = (command = 'none', flags = []) => {
1655
+ return {
1656
+ messageId: crypto.randomUUID(),
1657
+ startedAt: Date.now(),
1658
+ command,
1659
+ flags,
1660
+ };
1661
+ };
1661
1662
  let trace = newTrace();
1662
1663
  const beginTapTrace = ({ command, flags }) => {
1663
1664
  trace = newTrace(command, flags);
@@ -1887,7 +1888,9 @@ const listSessions = (options) => xvfb.__awaiter(void 0, void 0, void 0, functio
1887
1888
  }
1888
1889
  const timeoutMs = (_a = options.timeout) !== null && _a !== void 0 ? _a : FIND_SESSION_TIMEOUT_MS;
1889
1890
  const responsive = yield Promise.all(sessions.map((session) => probeRenderer(session, timeoutMs)));
1890
- const summaries = sessions.map((session, index) => (Object.assign({ pid: session.pid, projectRoot: session.projectRoot, testingType: session.testingType, browserAttached: session.cdpBrowserWsUrl !== null, browserName: session.browserName, browserSupported: cli.distExports.isTapSupportedBrowser(session.browserFamily) }, (responsive[index] === undefined ? {} : { rendererResponsive: responsive[index] }))));
1891
+ const summaries = sessions.map((session, index) => {
1892
+ return Object.assign({ pid: session.pid, projectRoot: session.projectRoot, testingType: session.testingType, browserAttached: session.cdpBrowserWsUrl !== null, browserName: session.browserName, browserSupported: cli.distExports.isTapSupportedBrowser(session.browserFamily) }, (responsive[index] === undefined ? {} : { rendererResponsive: responsive[index] }));
1893
+ });
1891
1894
  renderOutcome('sessions', summaries, options.json);
1892
1895
  return 0;
1893
1896
  });
@@ -2100,8 +2103,7 @@ const runSpec = (options, args) => xvfb.__awaiter(void 0, void 0, void 0, functi
2100
2103
  if ((result === null || result === void 0 ? void 0 : result.__typename) === 'RunSpecResponse') {
2101
2104
  const launched = {
2102
2105
  spec: xvfb.posixify(result.spec.relative),
2103
- testingType: result.testingType,
2104
- browser: result.browser.displayName,
2106
+ status: 'running',
2105
2107
  };
2106
2108
  renderOutcome('run', launched, options.json);
2107
2109
  return 0;
@@ -2419,26 +2421,28 @@ const withAmbiguous = (connection, frame, selector, at, read) => xvfb.__awaiter(
2419
2421
  return ambiguous !== null && ambiguous !== void 0 ? ambiguous : read();
2420
2422
  });
2421
2423
 
2422
- const extractDom = (connection, frame, selector, maxChars, at) => withAmbiguous(connection, frame, selector, at, () => xvfb.__awaiter(void 0, void 0, void 0, function* () {
2423
- var _a;
2424
- const { client, sessionId } = connection;
2425
- const executionContextId = yield createFrameIsolatedWorld(connection, frame);
2426
- const { result, exceptionDetails } = yield client.Runtime.callFunctionOn({
2427
- functionDeclaration: readDom.toString(),
2428
- executionContextId,
2429
- arguments: [{ value: selector }, { value: maxChars }, { value: at !== null && at !== void 0 ? at : 0 }],
2430
- returnByValue: true,
2431
- }, sessionId);
2432
- if (exceptionDetails) {
2433
- throw new cli.distExports.TapError('FRAME_READ_FAILED', { message: `reading the app-under-test DOM failed: ${((_a = exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description) || exceptionDetails.text}` });
2434
- }
2435
- const value = result.value;
2436
- // Only a selector the reader was given can come back rejected.
2437
- if (value.invalidSelector) {
2438
- throw invalidSelectorError(selector);
2439
- }
2440
- return Object.assign(Object.assign(Object.assign({}, (value.found !== undefined ? { found: value.found } : {})), (value.html !== undefined ? { html: value.html } : {})), (value.truncated ? { truncated: true } : {}));
2441
- }));
2424
+ const extractDom = (connection, frame, selector, maxChars, at) => {
2425
+ return withAmbiguous(connection, frame, selector, at, () => xvfb.__awaiter(void 0, void 0, void 0, function* () {
2426
+ var _a;
2427
+ const { client, sessionId } = connection;
2428
+ const executionContextId = yield createFrameIsolatedWorld(connection, frame);
2429
+ const { result, exceptionDetails } = yield client.Runtime.callFunctionOn({
2430
+ functionDeclaration: readDom.toString(),
2431
+ executionContextId,
2432
+ arguments: [{ value: selector }, { value: maxChars }, { value: at !== null && at !== void 0 ? at : 0 }],
2433
+ returnByValue: true,
2434
+ }, sessionId);
2435
+ if (exceptionDetails) {
2436
+ throw new cli.distExports.TapError('FRAME_READ_FAILED', { message: `reading the app-under-test DOM failed: ${((_a = exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description) || exceptionDetails.text}` });
2437
+ }
2438
+ const value = result.value;
2439
+ // Only a selector the reader was given can come back rejected.
2440
+ if (value.invalidSelector) {
2441
+ throw invalidSelectorError(selector);
2442
+ }
2443
+ return Object.assign(Object.assign(Object.assign({}, (value.found !== undefined ? { found: value.found } : {})), (value.html !== undefined ? { html: value.html } : {})), (value.truncated ? { truncated: true } : {}));
2444
+ }));
2445
+ };
2442
2446
  // The options are read before a session is resolved, so a value this command
2443
2447
  // cannot use is reported as itself rather than as whatever the search for a
2444
2448
  // Cypress to run it against happened to find.
@@ -2598,31 +2602,33 @@ const readAriaNode = (connection, objectId) => xvfb.__awaiter(void 0, void 0, vo
2598
2602
  return undefined;
2599
2603
  }
2600
2604
  });
2601
- const extractInspect = (connection, frame, selector, at) => withAmbiguous(connection, frame, selector, at, () => xvfb.__awaiter(void 0, void 0, void 0, function* () {
2602
- var _a;
2603
- const { client, sessionId } = connection;
2604
- yield client.DOM.enable({}, sessionId);
2605
- yield client.Accessibility.enable(sessionId);
2606
- const base = { selector, found: false };
2607
- const objectId = yield querySelectorObjectId(connection, frame, selector, at !== null && at !== void 0 ? at : 0);
2608
- if (!objectId) {
2609
- return base;
2610
- }
2611
- const info = yield client.Runtime.callFunctionOn({
2612
- functionDeclaration: readElementInfo.toString(),
2613
- objectId,
2614
- arguments: [{ value: REPORTED_STYLES }],
2615
- returnByValue: true,
2616
- }, sessionId);
2617
- if (info.exceptionDetails) {
2618
- throw new cli.distExports.TapError('FRAME_READ_FAILED', { message: `inspecting the element failed: ${((_a = info.exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description) || info.exceptionDetails.text}` });
2619
- }
2620
- const { tag, attributes, styles, box } = info.result.value;
2621
- const aria = yield readAriaNode(connection, objectId);
2622
- return Object.assign(Object.assign(Object.assign(Object.assign({}, base), { found: true, tag,
2623
- attributes }), (aria ? { aria } : {})), { box,
2624
- styles });
2625
- }));
2605
+ const extractInspect = (connection, frame, selector, at) => {
2606
+ return withAmbiguous(connection, frame, selector, at, () => xvfb.__awaiter(void 0, void 0, void 0, function* () {
2607
+ var _a;
2608
+ const { client, sessionId } = connection;
2609
+ yield client.DOM.enable({}, sessionId);
2610
+ yield client.Accessibility.enable(sessionId);
2611
+ const base = { selector, found: false };
2612
+ const objectId = yield querySelectorObjectId(connection, frame, selector, at !== null && at !== void 0 ? at : 0);
2613
+ if (!objectId) {
2614
+ return base;
2615
+ }
2616
+ const info = yield client.Runtime.callFunctionOn({
2617
+ functionDeclaration: readElementInfo.toString(),
2618
+ objectId,
2619
+ arguments: [{ value: REPORTED_STYLES }],
2620
+ returnByValue: true,
2621
+ }, sessionId);
2622
+ if (info.exceptionDetails) {
2623
+ throw new cli.distExports.TapError('FRAME_READ_FAILED', { message: `inspecting the element failed: ${((_a = info.exceptionDetails.exception) === null || _a === void 0 ? void 0 : _a.description) || info.exceptionDetails.text}` });
2624
+ }
2625
+ const { tag, attributes, styles, box } = info.result.value;
2626
+ const aria = yield readAriaNode(connection, objectId);
2627
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, base), { found: true, tag,
2628
+ attributes }), (aria ? { aria } : {})), { box,
2629
+ styles });
2630
+ }));
2631
+ };
2626
2632
  const inspectCommand = defineNativeCommand('inspect', (options, _args, commandOptions) => {
2627
2633
  const at = parseIndex(commandOptions.at);
2628
2634
  return withResolvedAutFrame(options, (connection, frame) => {
@@ -2828,13 +2834,15 @@ const getKnownCommand = (command) => cli.distExports.KNOWN_COMMANDS.has(command)
2828
2834
  * `cypress tap` handles itself rather than passing to a command. The flags a
2829
2835
  * command declares are reported once commander has parsed them, by noteTapCommand.
2830
2836
  */
2831
- const reportedInvocation = (command, wantsHelp, options) => ({
2832
- command: command ? getKnownCommand(command) : undefined,
2833
- flags: [
2834
- ...wantsHelp ? ['help'] : [],
2835
- ...Object.keys(options),
2836
- ],
2837
- });
2837
+ const reportedInvocation = (command, wantsHelp, options) => {
2838
+ return {
2839
+ command: command ? getKnownCommand(command) : undefined,
2840
+ flags: [
2841
+ ...wantsHelp ? ['help'] : [],
2842
+ ...Object.keys(options),
2843
+ ],
2844
+ };
2845
+ };
2838
2846
 
2839
2847
  const debug = Debug('cypress:cli:tap');
2840
2848
  // The failures that mean no session was reachable to ask. Help is answerable
@@ -412,7 +412,7 @@ const util = {
412
412
  // convert a percent with values between 0 and 1
413
413
  // with decimals, so that it is between 0 and 100
414
414
  // and has no decimal places
415
- return Math.round(_.isFinite(num) ? (num * 100) : 0);
415
+ return num !== null && _.isFinite(num) ? Math.round(num * 100) : 0;
416
416
  },
417
417
  secsRemaining(eta) {
418
418
  // calculate the seconds reminaing with no decimal places
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cypress",
3
- "version": "16.0.0",
3
+ "version": "16.1.0",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "postinstall": "node dist/index.js --exec install",
@@ -132,8 +132,8 @@
132
132
  },
133
133
  "buildInfo": {
134
134
  "commitBranch": "develop",
135
- "commitSha": "9467a6e7f4645fe7a99a35fbc642d5e10d849cce",
136
- "commitDate": "2026-08-31T19:15:10.000Z",
135
+ "commitSha": "83902dc838d4a242e88df8cfa3da8a196c681731",
136
+ "commitDate": "2026-09-15T01:16:53.000Z",
137
137
  "stable": true
138
138
  },
139
139
  "description": "Cypress is a next generation front end testing tool built for the modern web",
@@ -92,5 +92,5 @@ interface MinimatchOptions {
92
92
  }
93
93
 
94
94
  declare namespace Minimatch {
95
- function minimatch(target: string, pattern: string, options?: MinimatchOptions): boolean
95
+ function minimatch (target: string, pattern: string, options?: MinimatchOptions): boolean
96
96
  }
@@ -1,5 +1,5 @@
1
1
  // Cypress, cy, Log inherits EventEmitter.
2
- type EventEmitter2 = import("eventemitter2").EventEmitter2
2
+ type EventEmitter2 = import('eventemitter2').EventEmitter2
3
3
 
4
4
  interface CyEventEmitter extends Omit<EventEmitter2, 'waitFor'> {
5
5
  proxyTo: (cy: Cypress.cy) => null
@@ -30,4 +30,4 @@ interface NodeEventEmitter {
30
30
 
31
31
  // We use the Buffer class for dealing with binary data, especially around the
32
32
  // selectFile interface.
33
- type BufferType = typeof import("buffer/").Buffer
33
+ type BufferType = typeof import('buffer/').Buffer
@@ -1,3 +1,8 @@
1
1
  // Cypress adds chai expect and assert to global
2
+
3
+ // Only `var` lands on `typeof globalThis` in an ambient global declaration,
4
+ // which is what keeps `expect` and `assert` reachable on `window` and `globalThis`.
5
+ // eslint-disable-next-line no-var
2
6
  declare var expect: Chai.ExpectStatic
7
+ // eslint-disable-next-line no-var
3
8
  declare var assert: Chai.AssertStatic
@@ -1,3 +1,7 @@
1
+ // Only `var` lands on `typeof globalThis` in an ambient global declaration, which
2
+ // is what keeps `cy` and `Cypress` reachable on `window` and `globalThis`. The
3
+ // driver reassigns both at runtime.
4
+
1
5
  /**
2
6
  * Global variables `cy` added by Cypress with all API commands.
3
7
  * @see https://on.cypress.io/api
@@ -7,6 +11,7 @@ cy.get('button').click()
7
11
  cy.get('.result').contains('Expected text')
8
12
  ```
9
13
  */
14
+ // eslint-disable-next-line no-var
10
15
  declare var cy: Cypress.cy & CyEventEmitter
11
16
 
12
17
  /**
@@ -19,4 +24,5 @@ Cypress.version // => "1.4.0"
19
24
  Cypress._ // => Lodash _
20
25
  ```
21
26
  */
27
+ // eslint-disable-next-line no-var
22
28
  declare var Cypress: Cypress.Cypress & CyEventEmitter
@@ -561,7 +561,7 @@ declare namespace Cypress {
561
561
  * @example isBrowser(['firefox', 'edge']) will be true only for the browsers 'firefox' and 'edge'
562
562
  * @example isBrowser('!firefox') will be true for every browser other than 'firefox'
563
563
  * @example isBrowser({ family: '!chromium'}) will be true for every browser not matching { family: 'chromium' }
564
- * @param matcher browser name or matcher object to check.
564
+ * @param name browser name or matcher object to check.
565
565
  */
566
566
  isBrowser(name: IsBrowserMatcher): boolean
567
567
 
@@ -1055,7 +1055,7 @@ declare namespace Cypress {
1055
1055
  * to clear localStorage inside a single test. Yields `localStorage` object.
1056
1056
  *
1057
1057
  * @see https://on.cypress.io/clearlocalstorage
1058
- * @param {options} [object] - options object
1058
+ * @param {object} [options] - options object
1059
1059
  * @example
1060
1060
  ```
1061
1061
  // Removes all local storage items, without logging
@@ -1071,7 +1071,7 @@ declare namespace Cypress {
1071
1071
  *
1072
1072
  * @see https://on.cypress.io/clearlocalstorage
1073
1073
  * @param {string} [key] - name of a particular item to remove (optional).
1074
- * @param {options} [object] - options object
1074
+ * @param {object} [options] - options object
1075
1075
  * @example
1076
1076
  ```
1077
1077
  // Removes item "todos" without logging
@@ -2941,6 +2941,19 @@ declare namespace Cypress {
2941
2941
  certs: PEMCert[] | PFXCert[]
2942
2942
  }
2943
2943
 
2944
+ /**
2945
+ * A certificate the browser's own network stack should trust when it would
2946
+ * otherwise reject it (e.g. a self-signed cert). Supply exactly one of a path
2947
+ * to a PEM file, an inline PEM string, or a precomputed base64 SHA-256 SPKI
2948
+ * fingerprint. A path is resolved against the project root, so an absolute
2949
+ * path is used as-is. A PEM file or string holding several certificates
2950
+ * trusts every certificate in the bundle.
2951
+ */
2952
+ type TrustedCertificate =
2953
+ | { filePath: string }
2954
+ | { pem: string }
2955
+ | { spki: string }
2956
+
2944
2957
  type RetryStrategyWithModeSpecs = RetryStrategy & {
2945
2958
  openMode: boolean // defaults to false
2946
2959
  runMode: boolean // defaults to true
@@ -3195,6 +3208,12 @@ declare namespace Cypress {
3195
3208
  * @default 'top'
3196
3209
  */
3197
3210
  scrollBehavior: scrollBehaviorOptions
3211
+ /**
3212
+ * Time, in milliseconds, between each keystroke when typing with [cy.type()](https://on.cypress.io/type).
3213
+ * When `null`, the value set with [Cypress.Keyboard.defaults()](https://on.cypress.io/keyboard-api) is used, falling back to `0`.
3214
+ * @default null
3215
+ */
3216
+ keystrokeDelay: number | null
3198
3217
  /**
3199
3218
  * Indicates whether Cypress should allow CSP header directives from the application under test.
3200
3219
  * - When this option is set to `false`, Cypress will strip the entire CSP header.
@@ -3319,6 +3338,19 @@ declare namespace Cypress {
3319
3338
  */
3320
3339
  clientCertificates: ClientCertificate[]
3321
3340
 
3341
+ /**
3342
+ * Certificates the browser should treat as genuinely trusted rather than merely
3343
+ * tolerating their errors (e.g. a self-signed development cert). On the native browser
3344
+ * network path this lets the browser cache the origin's assets across navigations.
3345
+ * Each entry supplies exactly one of a path to a PEM file (relative paths resolve
3346
+ * against the project root), an inline PEM string, or a base64 SHA-256 SPKI
3347
+ * fingerprint. Every certificate in a PEM bundle is trusted, not just the first.
3348
+ * Unlike `clientCertificates`, entries are not scoped to a URL: the browser accepts
3349
+ * a trusted key for any hostname that presents it.
3350
+ * @default []
3351
+ */
3352
+ trustedCertificates: TrustedCertificate[]
3353
+
3322
3354
  /**
3323
3355
  * Handle Cypress plugins
3324
3356
  */
@@ -4029,14 +4061,14 @@ declare namespace Cypress {
4029
4061
  /**
4030
4062
  * Called before your page has loaded all of its resources.
4031
4063
  *
4032
- * @param {AUTWindow} contentWindow the remote page's window object
4064
+ * @param {AUTWindow} win the remote page's window object
4033
4065
  */
4034
4066
  onBeforeLoad(win: AUTWindow): void
4035
4067
 
4036
4068
  /**
4037
4069
  * Called once your page has fired its load event.
4038
4070
  *
4039
- * @param {AUTWindow} contentWindow the remote page's window object
4071
+ * @param {AUTWindow} win the remote page's window object
4040
4072
  */
4041
4073
  onLoad(win: AUTWindow): void
4042
4074