chore: merge develop into cypress release 15 branch (#31464)

* dependency: upgrade mocha to 7.2.0 (#31423)

* dependency: upgrade mocha to 7.2.0

* changelog entry

* remove the it.only from the mocha patch changelog that is triggering our stop-only check from passing

* skip patches folder with stop-only check

* remove extra bracket

* Update protocol_spec to reflect new mocha line number for error stack trace

* chore: updating v8 snapshot cache (#31424)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31425)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31426)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: migrates plugin system test to a v3 extension (#31434)

* chore: Update Chrome (stable) to 135.0.7049.52 (#31428)

* chore: Update Chrome (stable) to 135.0.7049.52

* empty commit

---------

Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Cacie Prins <cacieprins@users.noreply.github.com>

* chore: bump Firefox to 137 (#31431)

* chore: bump Firefox to 137

* use 137 version? weird.

* just kidding, major version only has 1 zero after it................

* dependency: update server to mocha 7.2.0 (#31432)

* dependency: update server to mocha 7.2.0

* Add PR to changelog

* chore: updating v8 snapshot cache (#31437)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31438)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31439)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: Update Chrome (beta) to 136.0.7103.17 (#31448)

* chore: Update Chrome (beta) to 136.0.7103.17

* empty commit

---------

Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

* refactor: lifts toPosix to its own file, removes circular dependency between stack_utils and source_map_utils (#30983)

* refactor: lifts toPosix to remove circular dependency between stack_utils and source_map_utils

* camelCase to snake_case

* rm duplicated file

* internal: (studio) make the protocol database accessible to studio (#31443)

* internal: (studio) make the protocol database accessible to studio

* PR comment

* chore(deps): update dependency patch-package to v8 (#31451)

* chore(deps): update dependency patch-package to v8

* empty commit

* add types to handle json-stable-stringify dep change

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

* chore: fix deprecation warnings and refactor react reporter to use functional components and hooks (#31284)

* chore: fix deprecation warnings and refactor react reporter to use functional components with hooks

* chore: update code to reflect feedback from code review

* fix issues with scrollIntoView() on updated component and refactor isOpen logic in collapsible to not attempt to sync state

* fix issues with tests after refactor

* see if event registration fixes windows flake

* chore: update snap-shot-core patch package file to match version (#31449)

* chore: update snap-shot-core patch package file to match version

* update circle cache

* experiment with removing .md from yarnclean

* add .md back to yarnclean

* bust circle cache

* remove .md files being cleaned from yarn to get around patch-package issue

* print size of cache

* try out the size of the .md

* remove md from yarnclean

* UPdate to version without removal of markdown files

* chore: updating v8 snapshot cache (#31460)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31462)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31461)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* feat: cy.press() (#31398)

* wip - cy.press() command

* cy command for dispatching key press/down/up events

* unit tests and failure cases for cy.press()

* Cypress.Keyboard.Keys definition; fix command log message

* add keys to the internal keyboard type

* auto-focus in cdp

* ensure aut iframe is focused before dispatching key events in bidi browsers

* update tests for cdp focus

* fixed tests for bidi

* lint

* fix type ref in .d.ts

* linting

* skip press() driver test in ff below v135

* try all contexts for frame before failing due to missing/invalid context id

* ensure error is error before accessing props

* skip press driver test in webkit

* changelog

* debug automation middleware invocation for firefox flake

* debug

* cache update

* use bidi automation middleware from connectToNewSpec rather than constructor

* more comprehensive logging

* debug socket base, additional debug in automation

* install firefox automation middleware on setup as well as connectToNewSpec

* unit tests for firefox-utils

* proper calledWith

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

* docs: update contributing requirements for corepack (#31463)

* chore: remove `du` check (#31465)

* chore: use different args for `du` in win

* rm du command for build

* chore: release 14.3.0 (#31467)

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Cacie Prins <cacieprins@users.noreply.github.com>
Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
This commit is contained in:
Bill Glesias
2025-04-08 14:46:30 -04:00
committed by GitHub
parent 25f0fd0a11
commit 346e80110a
96 changed files with 1908 additions and 1273 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
# Bump this version to force CI to re-create the cache from scratch.
3-18-2024:4:25
4-7-2025-v1
+13 -11
View File
@@ -1,8 +1,8 @@
version: 2.1
chrome-stable-version: &chrome-stable-version "134.0.6998.165"
chrome-beta-version: &chrome-beta-version "135.0.7049.41"
firefox-stable-version: &firefox-stable-version "136.0.3"
chrome-stable-version: &chrome-stable-version "135.0.7049.52"
chrome-beta-version: &chrome-beta-version "136.0.7103.17"
firefox-stable-version: &firefox-stable-version "137.0"
orbs:
browser-tools: circleci/browser-tools@1.5.2
@@ -38,7 +38,7 @@ mainBuildFilters: &mainBuildFilters
- /^release\/\d+\.\d+\.\d+$/
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
- 'update-v8-snapshot-cache-on-develop'
- 'renovate/webdriverio-monorepo'
- 'chore/fix_react_18_deprecation_warnings'
# usually we don't build Mac app - it takes a long time
# but sometimes we want to really confirm we are doing the right thing
@@ -49,7 +49,7 @@ macWorkflowFilters: &darwin-workflow-filters
- equal: [ develop, << pipeline.git.branch >> ]
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
- equal: [ 'renovate/webdriverio-monorepo', << pipeline.git.branch >> ]
- equal: [ 'chore/fix_react_18_deprecation_warnings', << pipeline.git.branch >> ]
- matches:
pattern: /^release\/\d+\.\d+\.\d+$/
value: << pipeline.git.branch >>
@@ -60,7 +60,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters
- equal: [ develop, << pipeline.git.branch >> ]
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
- equal: [ 'renovate/webdriverio-monorepo', << pipeline.git.branch >> ]
- equal: [ 'chore/fix_react_18_deprecation_warnings', << pipeline.git.branch >> ]
- matches:
pattern: /^release\/\d+\.\d+\.\d+$/
value: << pipeline.git.branch >>
@@ -83,7 +83,8 @@ windowsWorkflowFilters: &windows-workflow-filters
- equal: [ develop, << pipeline.git.branch >> ]
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
- equal: [ 'renovate/webdriverio-monorepo', << pipeline.git.branch >> ]
- equal: [ 'chore/fix_react_18_deprecation_warnings', << pipeline.git.branch >> ]
- equal: [ 'cacie/fix-du', << pipeline.git.branch >> ]
- matches:
pattern: /^release\/\d+\.\d+\.\d+$/
value: << pipeline.git.branch >>
@@ -157,7 +158,7 @@ commands:
name: Set environment variable to determine whether or not to persist artifacts
command: |
echo "Setting SHOULD_PERSIST_ARTIFACTS variable"
echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "bump-win-version-info" ]]; then
echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "chore/fix_react_18_deprecation_warnings" ]]; then
export SHOULD_PERSIST_ARTIFACTS=true
fi' >> "$BASH_ENV"
# You must run `setup_should_persist_artifacts` command and be using bash before running this command
@@ -497,9 +498,9 @@ commands:
default: cy-doc
steps:
- run: pwd
- run:
name: print global yarn cache path
command: echo $(yarn global bin)
##- run:
## name: print global yarn cache path and size
## command: du -sh $(yarn global bin)
- run:
name: print yarn version
command: yarn versions
@@ -776,6 +777,7 @@ commands:
- windows-install-chrome:
browser: <<parameters.browser>>
- run:
name: Run <<parameters.package>> UI tests
command: |
echo Current working directory is $PWD
echo Total containers $CIRCLE_NODE_TOTAL
+1 -4
View File
@@ -44,7 +44,4 @@ wercker.yml
.flowconfig
.documentup.json
.yarn-metadata.json
.travis.yml
# misc
*.md
.travis.yml
+5 -1
View File
@@ -201,7 +201,7 @@ We try to tag all issues with a `pkg/` or `npm/` tag describing the appropriate
You must have the following installed on your system to contribute locally:
- [`Node.js`](https://nodejs.org/en/) (See the root [.node-version](.node-version) file for the required version. You can find a list of tools on [node-version-usage](https://github.com/shadowspawn/node-version-usage) to switch the version of [`Node.js`](https://nodejs.org/en/) based on [.node-version](.node-version).)
- [`Yarn v1 Classic`](https://yarnpkg.com/en/docs/install). If you have [`Node.js`](https://nodejs.org/en/) experimental [corepack](https://nodejs.org/docs/latest/api/corepack.html) enabled, installation of the Yarn package manager will be handled automatically. Attempting to install Yarn globally with npm will fail if [corepack](https://nodejs.org/docs/latest/api/corepack.html) is enabled.
- [`Yarn v1 Classic`](https://yarnpkg.com/en/docs/install) (See also [Corepack](#corepack) below.)
- [`python`](https://www.python.org/downloads/) (since we use `node-gyp`. See their [repo](https://github.com/nodejs/node-gyp) for Python version requirements.)
#### Debian/Ubuntu
@@ -216,6 +216,10 @@ For Ubuntu `24.04` and above, refer also to the [Ubuntu 24.04 Release notes](htt
Currently no additional instructions for installation requirements.
#### Corepack
The Cypress repo is compatible with Corepack and contains a `packageManager` field in the root [package.json](./package.json) file to automatically install Yarn. Cypress does not however require you to enable Corepack. It is classed as experimental and not suitable for production by the Node.js organization. Refer to the repo [corepack](https://github.com/nodejs/corepack#readme) for instructions, known issues and workarounds.
### Getting Started
The project utilizes [yarn workspaces](https://yarnpkg.com/lang/en/docs/workspaces/) and leverages [lerna](https://lerna.js.org/) to orchestrate running within the context of one or more packages. While it is not as important to understand lerna or yarn workspaces, it **is important** to note that running scripts or installing new dependencies should always happen from the repo's root directory.
+7 -3
View File
@@ -8,9 +8,13 @@ _Released 07/01/2025 (PENDING)_
- Removed support for Node.js 18 and Node.js 23. Addresses [#31302](https://github.com/cypress-io/cypress/issues/31302).
- Removed support for [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol) with the [firefox](https://www.mozilla.org/) browser. Addresses [#31189](https://github.com/cypress-io/cypress/issues/31189).
## 14.2.2
## 14.3.0
_Released 4/8/2025 (PENDING)_
_Released 4/8/2025_
**Features:**
- The [`cy.press()`](https://on.cypress.io/api/press) command is now available. It supports dispatching native Tab keyboard events to the browser. Addresses [#31050](https://github.com/cypress-io/cypress/issues/31050). Addresses [#299](https://github.com/cypress-io/cypress/issues/299). Addressed in [#31398](https://github.com/cypress-io/cypress/pull/31398).
**Bugfixes:**
@@ -25,7 +29,7 @@ _Released 4/8/2025 (PENDING)_
**Dependency Updates:**
- Upgraded `mocha` from `7.0.1` to `7.1.2`. Addressed in [#31416](https://github.com/cypress-io/cypress/pull/31416).
- Upgraded `mocha` from `7.0.1` to `7.2.0`. Addressed in [#31423](https://github.com/cypress-io/cypress/pull/31423) and [#31432](https://github.com/cypress-io/cypress/pull/31432).
- Upgraded `webdriver` from `9.7.3` to `9.11.0`. Addressed in [#31315](https://github.com/cypress-io/cypress/pull/31315).
- Upgraded `win-version-info` from `5.0.1` to `6.0.1`. Addressed in [#31358](https://github.com/cypress-io/cypress/pull/31358).
+108 -93
View File
@@ -578,99 +578,7 @@ declare namespace Cypress {
*/
stop(): void
Commands: {
/**
* Add a custom command
* @see https://on.cypress.io/api/commands
*/
add<T extends keyof Chainable>(name: T, fn: CommandFn<T>): void
/**
* Add a custom parent command
* @see https://on.cypress.io/api/commands#Parent-Commands
*/
add<T extends keyof Chainable>(name: T, options: CommandOptions & { prevSubject: false }, fn: CommandFn<T>): void
/**
* Add a custom child command
* @see https://on.cypress.io/api/commands#Child-Commands
*/
add<T extends keyof Chainable, S = any>(name: T, options: CommandOptions & { prevSubject: true }, fn: CommandFnWithSubject<T, S>): void
/**
* Add a custom child or dual command
* @see https://on.cypress.io/api/commands#Validations
*/
add<T extends keyof Chainable, S extends PrevSubject>(
name: T, options: CommandOptions & { prevSubject: S | ['optional'] }, fn: CommandFnWithSubject<T, PrevSubjectMap[S]>,
): void
/**
* Add a custom command that allows multiple types as the prevSubject
* @see https://on.cypress.io/api/commands#Validations#Allow-Multiple-Types
*/
add<T extends keyof Chainable, S extends PrevSubject>(
name: T, options: CommandOptions & { prevSubject: S[] }, fn: CommandFnWithSubject<T, PrevSubjectMap<void>[S]>,
): void
/**
* Add one or more custom commands
* @see https://on.cypress.io/api/commands
*/
addAll<T extends keyof Chainable>(fns: CommandFns): void
/**
* Add one or more custom parent commands
* @see https://on.cypress.io/api/commands#Parent-Commands
*/
addAll<T extends keyof Chainable>(options: CommandOptions & { prevSubject: false }, fns: CommandFns): void
/**
* Add one or more custom child commands
* @see https://on.cypress.io/api/commands#Child-Commands
*/
addAll<T extends keyof Chainable, S = any>(options: CommandOptions & { prevSubject: true }, fns: CommandFnsWithSubject<S>): void
/**
* Add one or more custom commands that validate their prevSubject
* @see https://on.cypress.io/api/commands#Validations
*/
addAll<T extends keyof Chainable, S extends PrevSubject>(
options: CommandOptions & { prevSubject: S | ['optional'] }, fns: CommandFnsWithSubject<PrevSubjectMap[S]>,
): void
/**
* Add one or more custom commands that allow multiple types as their prevSubject
* @see https://on.cypress.io/api/commands#Allow-Multiple-Types
*/
addAll<T extends keyof Chainable, S extends PrevSubject>(
options: CommandOptions & { prevSubject: S[] }, fns: CommandFnsWithSubject<PrevSubjectMap<void>[S]>,
): void
/**
* Overwrite an existing Cypress command with a new implementation
* @see https://on.cypress.io/api/commands#Overwrite-Existing-Commands
*/
overwrite<T extends keyof Chainable>(name: T, fn: CommandFnWithOriginalFn<T>): void
/**
* Overwrite an existing Cypress command with a new implementation
* @see https://on.cypress.io/api/commands#Overwrite-Existing-Commands
*/
overwrite<T extends keyof Chainable, S extends PrevSubject>(name: T, fn: CommandFnWithOriginalFnAndSubject<T, PrevSubjectMap[S]>): void
/**
* Add a custom query
* @see https://on.cypress.io/api/custom-queries
*/
addQuery<T extends keyof Chainable>(name: T, fn: QueryFn<T>): void
/**
* Overwrite an existing Cypress query with a new implementation
* @see https://on.cypress.io/api/custom-queries
*/
overwriteQuery<T extends keyof Chainable>(name: T, fn: QueryFnWithOriginalFn<T>): void
}
Commands: Commands
/**
* @see https://on.cypress.io/cookies
@@ -775,6 +683,9 @@ declare namespace Cypress {
*/
Keyboard: {
defaults(options: Partial<KeyboardDefaultsOptions>): void
Keys: {
TAB: 'Tab',
},
}
/**
@@ -829,6 +740,100 @@ declare namespace Cypress {
onSpecWindow: (window: Window, specList: string[] | Array<() => Promise<void>>) => void
}
interface Commands {
/**
* Add a custom command
* @see https://on.cypress.io/api/commands
*/
add<T extends keyof Chainable>(name: T, fn: CommandFn<T>): void
/**
* Add a custom parent command
* @see https://on.cypress.io/api/commands#Parent-Commands
*/
add<T extends keyof Chainable>(name: T, options: CommandOptions & { prevSubject: false }, fn: CommandFn<T>): void
/**
* Add a custom child command
* @see https://on.cypress.io/api/commands#Child-Commands
*/
add<T extends keyof Chainable, S = any>(name: T, options: CommandOptions & { prevSubject: true }, fn: CommandFnWithSubject<T, S>): void
/**
* Add a custom child or dual command
* @see https://on.cypress.io/api/commands#Validations
*/
add<T extends keyof Chainable, S extends PrevSubject>(
name: T, options: CommandOptions & { prevSubject: S | ['optional'] }, fn: CommandFnWithSubject<T, PrevSubjectMap[S]>,
): void
/**
* Add a custom command that allows multiple types as the prevSubject
* @see https://on.cypress.io/api/commands#Validations#Allow-Multiple-Types
*/
add<T extends keyof Chainable, S extends PrevSubject>(
name: T, options: CommandOptions & { prevSubject: S[] }, fn: CommandFnWithSubject<T, PrevSubjectMap<void>[S]>,
): void
/**
* Add one or more custom commands
* @see https://on.cypress.io/api/commands
*/
addAll<T extends keyof Chainable>(fns: CommandFns): void
/**
* Add one or more custom parent commands
* @see https://on.cypress.io/api/commands#Parent-Commands
*/
addAll<T extends keyof Chainable>(options: CommandOptions & { prevSubject: false }, fns: CommandFns): void
/**
* Add one or more custom child commands
* @see https://on.cypress.io/api/commands#Child-Commands
*/
addAll<T extends keyof Chainable, S = any>(options: CommandOptions & { prevSubject: true }, fns: CommandFnsWithSubject<S>): void
/**
* Add one or more custom commands that validate their prevSubject
* @see https://on.cypress.io/api/commands#Validations
*/
addAll<T extends keyof Chainable, S extends PrevSubject>(
options: CommandOptions & { prevSubject: S | ['optional'] }, fns: CommandFnsWithSubject<PrevSubjectMap[S]>,
): void
/**
* Add one or more custom commands that allow multiple types as their prevSubject
* @see https://on.cypress.io/api/commands#Allow-Multiple-Types
*/
addAll<T extends keyof Chainable, S extends PrevSubject>(
options: CommandOptions & { prevSubject: S[] }, fns: CommandFnsWithSubject<PrevSubjectMap<void>[S]>,
): void
/**
* Overwrite an existing Cypress command with a new implementation
* @see https://on.cypress.io/api/commands#Overwrite-Existing-Commands
*/
overwrite<T extends keyof Chainable>(name: T, fn: CommandFnWithOriginalFn<T>): void
/**
* Overwrite an existing Cypress command with a new implementation
* @see https://on.cypress.io/api/commands#Overwrite-Existing-Commands
*/
overwrite<T extends keyof Chainable, S extends PrevSubject>(name: T, fn: CommandFnWithOriginalFnAndSubject<T, PrevSubjectMap[S]>): void
/**
* Add a custom query
* @see https://on.cypress.io/api/custom-queries
*/
addQuery<T extends keyof Chainable>(name: T, fn: QueryFn<T>): void
/**
* Overwrite an existing Cypress query with a new implementation
* @see https://on.cypress.io/api/custom-queries
*/
overwriteQuery<T extends keyof Chainable>(name: T, fn: QueryFnWithOriginalFn<T>): void
}
type CanReturnChainable = void | Chainable | Promise<unknown>
type ThenReturn<S, R> =
R extends void ? Chainable<S> :
@@ -1742,6 +1747,16 @@ declare namespace Cypress {
*/
pause(options?: Partial<Loggable>): Chainable<Subject>
/**
* Send a native sequence of keyboard events: keydown & press, followed by keyup, for the provided key.
* Supported keys index the Cypress.Keyboard.Keys record.
*
* @example
* cy.press(Cypress.Keyboard.Keys.TAB) // dispatches a keydown and press event to the browser, followed by a keyup event.
* @see https://on.cypress.io/press
*/
press(key: typeof Cypress.Keyboard.Keys[keyof typeof Cypress.Keyboard.Keys], options?: Partial<Loggable & Timeoutable>): void
/**
* Get the immediately preceding sibling of each element in a set of the elements.
*
+3 -1
View File
@@ -24,7 +24,9 @@
"jsdoc-format": false,
// for now keep the Cypress NPM module API
// in its own file for simplicity
"no-single-declare-module": false
"no-single-declare-module": false,
// This is detecting necessary qualifiers as unnecessary
"no-unnecessary-qualifier": false
},
"linterOptions": {
"exclude": [
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "cypress",
"version": "14.2.1",
"version": "14.3.0",
"description": "Cypress is a next generation front end testing tool built for the modern web",
"private": true,
"scripts": {
@@ -52,7 +52,7 @@
"sanitize:mocha:results": "node ./scripts/sanitize-mocha-results.js",
"prestart": "yarn ensure-deps",
"start": "cypress open --dev --global",
"stop-only": "npx stop-only --skip .cy,.publish,.projects,node_modules,dist,dist-test,fixtures,lib,bower_components,src,__snapshots__ --exclude cypress-tests.ts,*only.cy.js",
"stop-only": "npx stop-only --skip .cy,.publish,.projects,node_modules,dist,dist-test,fixtures,lib,bower_components,src,__snapshots__,patches --exclude cypress-tests.ts,*only.cy.js",
"stop-only-all": "yarn stop-only --folder packages",
"pretest": "yarn ensure-deps",
"test": "yarn lerna exec yarn test --scope=cypress --scope=@packages/{config,data-context,driver,electron,errors,extension,https-proxy,launcher,net-stubbing,network,packherd-require,proxy,rewriter,scaffold-config,socket,v8-snapshot-require,telemetry} --scope=@tooling/{electron-mksnapshot,v8-snapshot}",
@@ -187,7 +187,7 @@
"mock-fs": "5.4.0",
"npm-packlist": "9.0.0",
"p-defer": "^3.0.0",
"patch-package": "6.4.7",
"patch-package": "8.0.0",
"playwright-webkit": "1.24.2",
"pluralize": "8.0.0",
"print-arch": "1.0.0",
@@ -72,7 +72,9 @@ describe('Cypress In Cypress E2E', { viewportWidth: 1500, defaultCommandTimeout:
cy.get('.hook-open-in-ide').should('exist')
cy.get('#unified-runner').should('have.attr', 'style', 'width: 1000px; height: 660px; transform: scale(0.769697); position: absolute; margin-left: -25px;')
cy.get('#unified-runner').then((el) => {
expect(el[0].getAttribute('style')).to.match(/width: 1000px; height: 660px; transform: scale\(0.769\d+\); position: absolute; margin-left: -25px;/)
})
})
it('navigation between specs and other parts of the app works', () => {
@@ -168,7 +170,7 @@ describe('Cypress In Cypress E2E', { viewportWidth: 1500, defaultCommandTimeout:
cy.contains('SyntaxError')
.should('be.visible')
.invoke('outerHeight')
.should('eq', expectedAutHeight)
.should('be.closeTo', expectedAutHeight, 1)
// Checking the height here might seem excessive
// but we really want some warning if this changes
@@ -199,8 +201,12 @@ describe('Cypress In Cypress E2E', { viewportWidth: 1500, defaultCommandTimeout:
cy.get('.toggle-specs-wrapper').click()
cy.get('#unified-runner').should('have.css', 'width', '333px')
cy.get('#unified-runner').should('have.css', 'height', '333px')
cy.get('#unified-runner').then((el) => {
// CSS properties are calculated over inline styles, which means we get a close representation
// of the actual values, but not the exact values (+/- 1 pixel), hence the use of matching the style
// attribute.
expect(el[0].getAttribute('style')).to.match(/width: 333px; height: 333px/)
})
})
it('stops correctly running spec while switching specs', () => {
@@ -208,6 +214,9 @@ describe('Cypress In Cypress E2E', { viewportWidth: 1500, defaultCommandTimeout:
cy.specsPageIsVisible()
cy.contains('withFailure.spec').click()
cy.contains('[aria-controls=reporter-inline-specs-list]', 'Specs')
// A bit of a hack, but our cy-in-cy test needs to wait for the reporter to fully render before pressing the "f" key to expand the "Search specs" menu.
// Otherwise, the "f" keypress happens before the event is registered, which causes the "Search Specs" menu to not expand.
cy.get('[data-cy="runnable-header"]').should('be.visible')
cy.get('body').type('f')
cy.contains('Search specs')
cy.contains('withWait.spec').click()
@@ -135,6 +135,10 @@ describe('App: Spec List (E2E)', () => {
cy.contains('[aria-controls=reporter-inline-specs-list]', 'Specs')
cy.findByText('Your tests are loading...').should('not.be.visible')
cy.contains('[aria-controls=reporter-inline-specs-list]', 'Specs')
// A bit of a hack, but our cy-in-cy test needs to wait for the reporter to fully render before pressing the "f" key to expand the "Search specs" menu.
// Otherwise, the "f" keypress happens before the event is registered, which causes the "Search Specs" menu to not expand.
cy.get('[data-cy="runnable-header"]').should('be.visible')
// open the inline spec list
cy.get('body').type('f')
@@ -363,6 +367,9 @@ describe('App: Spec List (E2E)', () => {
cy.contains('input', targetSpecFile).should('not.exist')
// A bit of a hack, but our cy-in-cy test needs to wait for the reporter to fully render before expanding the "Search specs" menu.
// Otherwise, the click happens before the event is registered, which causes the "Search Specs" menu to not expand.
cy.get('[data-cy="runnable-header"]').should('be.visible')
cy.contains('button', 'Specs').click({ force: true })
// wait until specs list is visible
+7
View File
@@ -421,6 +421,13 @@ async function executeSpec (spec: SpecFile, isRerun: boolean = false) {
// initializes a bunch of listeners watches spec file for changes.
await getEventManager().setup(config)
if (!_eventManager) {
// with functional react components and bridging the unified runner between Vue and React,
// we sometimes get into a state where the runner has torn down the reporter, which in turn tears down the event manager,
// while we are in the process of executing the next spec. In this case, we have a no-op execute spec and need to exit early without error.
return
}
if (window.__CYPRESS_TESTING_TYPE__ === 'e2e') {
return runSpecE2E(config, spec)
}
+9 -1
View File
@@ -6,11 +6,19 @@ import type { EventManager } from './event-manager'
import { useRunnerUiStore } from '../store/runner-ui-store'
let hasInitializeReporter = false
let reactDomRoot: any = null
export function setInitializedReporter (val: boolean) {
hasInitializeReporter = val
}
export function unmountReporter () {
if (reactDomRoot) {
reactDomRoot.unmount()
reactDomRoot = null
}
}
async function resetReporter () {
if (hasInitializeReporter) {
await getEventManager().resetReporter()
@@ -50,7 +58,7 @@ function renderReporter (
testFilter: specsStore.testFilter,
})
const reactDomRoot = window.UnifiedRunner.ReactDOM.createRoot(root)
reactDomRoot = window.UnifiedRunner.ReactDOM.createRoot(root)
reactDomRoot.render(reporter)
}
+4 -2
View File
@@ -4,6 +4,7 @@ import { addCrossOriginIframe, getAutIframeModel, getEventManager, UnifiedRunner
import { useAutStore, useSpecStore } from '../store'
import { useStudioStore } from '../store/studio-store'
import { empty, getReporterElement, getRunnerElement } from './utils'
import { unmountReporter } from './reporter'
export function useEventManager () {
const eventManager = getEventManager()
@@ -85,13 +86,14 @@ export function useEventManager () {
// TODO: UNIFY-1318 - this should be handled by whoever starts it, reporter?
window.UnifiedRunner.shortcuts.stop()
const reporterElement = getReporterElement()
if (reporterElement) {
// reporter can be disabled by the user,
// so sometimes will not exist to be cleaned up
empty(reporterElement)
// NOTE: we do not use empty() on the reporter as it is written in react.
// As of React 18, its better to call unmount on the root, which effectively does the same thing as empty().
unmountReporter()
}
}
@@ -1,23 +1,21 @@
describe('__placeholder__/commands/actions/press', () => {
describe('src/cy/commands/actions/press', () => {
it('dispatches the tab keypress to the AUT', () => {
// Non-BiDi firefox is not supported
if (Cypress.browser.family === 'firefox' && Cypress.browserMajorVersion() < 135) {
return
}
// TODO: Webkit is not supported. https://github.com/cypress-io/cypress/issues/31054
if (Cypress.isBrowser('webkit')) {
return
}
cy.visit('/fixtures/input_events.html')
cy.get('#focus').focus().then(async () => {
try {
await Cypress.automation('key:press', { key: 'Tab' })
} catch (e) {
if (e.message && (e.message as string).includes('key:press')) {
cy.log(e.message)
cy.press(Cypress.Keyboard.Keys.TAB)
return
}
cy.get('#keydown').should('have.value', 'Tab')
throw e
}
cy.get('#keyup').should('have.value', 'Tab')
cy.get('#keydown').should('have.value', 'Tab')
})
cy.get('#keyup').should('have.value', 'Tab')
})
})
@@ -223,7 +223,7 @@ it('verifies number of cy commands', () => {
'invoke', 'its', 'getCookie', 'getCookies', 'setCookie', 'clearCookie', 'clearCookies', 'pause', 'debug', 'exec', 'readFile',
'writeFile', 'fixture', 'clearLocalStorage', 'url', 'hash', 'location', 'end', 'noop', 'log', 'wrap', 'reload', 'go', 'visit',
'focused', 'get', 'contains', 'shadow', 'within', 'request', 'session', 'screenshot', 'task', 'find', 'filter', 'not',
'children', 'eq', 'closest', 'first', 'last', 'next', 'nextAll', 'nextUntil', 'parent', 'parents', 'parentsUntil', 'prev',
'children', 'eq', 'closest', 'first', 'last', 'next', 'nextAll', 'nextUntil', 'parent', 'parents', 'parentsUntil', 'prev', 'press',
'prevAll', 'prevUntil', 'siblings', 'wait', 'title', 'window', 'document', 'viewport', 'server', 'route', 'intercept', 'origin',
'mount', 'as', 'root', 'getAllLocalStorage', 'clearAllLocalStorage', 'getAllSessionStorage', 'clearAllSessionStorage',
'getAllCookies', 'clearAllCookies',
@@ -12,7 +12,6 @@
</head>
<body>
<input type="text" id="focus" />
<input type="text" id="keyup" />
<input type="text" id="keydown" />
</body>
+12 -6
View File
@@ -13,15 +13,17 @@ export const getCommandLogWithText = (command, type?) => {
.closest('.command')
}
export const findReactInstance = function (dom) {
// This work around is super hacky to get the appState from the Test Mobx Observable Model
// this is needed to pause the runner to assert on the test
export const findAppStateFromTest = function (dom) {
let key = _.keys(dom).find((key) => key.startsWith('__reactFiber')) as string
let internalInstance = dom[key]
if (internalInstance == null) return null
return internalInstance._debugOwner
? internalInstance._debugOwner.stateNode
: internalInstance.return.stateNode
? internalInstance._debugOwner.memoizedProps.model.store.appState
: internalInstance.return.memoizedProps.model.store.appState
}
export const clickCommandLog = (sel, type?) => {
@@ -31,13 +33,17 @@ export const clickCommandLog = (sel, type?) => {
.then(() => {
const commandLogEl = getCommandLogWithText(sel, type)
const reactCommandInstance = findReactInstance(commandLogEl[0])
const activeTestEl = commandLogEl[0].closest('li.test.runnable.runnable-active')
if (!reactCommandInstance) {
// We are manually manipulating the state of the appState to stop the runner.
// This does NOT happen in the wild and is only for testing purposes.
const appStateInstance = findAppStateFromTest(activeTestEl)
if (!appStateInstance) {
assert(false, 'failed to get command log React instance')
}
reactCommandInstance.props.appState.isRunning = false
appStateInstance.isRunning = false
const inner = $(commandLogEl).find('.command-wrapper-text')
inner.get(0).click()
+1 -1
View File
@@ -77,7 +77,7 @@
"methods": "1.1.2",
"mime": "^3.0.0",
"minimatch": "3.1.2",
"mocha": "7.1.2",
"mocha": "7.2.0",
"multer": "1.4.4",
"ordinal": "1.0.3",
"react-15.6.1": "npm:react@15.6.1",
@@ -1,9 +1,40 @@
diff --git a/node_modules/mocha/CHANGELOG.md b/node_modules/mocha/CHANGELOG.md
deleted file mode 100644
index c3b33f1..0000000
index 71ef0fc..0000000
--- a/node_modules/mocha/CHANGELOG.md
+++ /dev/null
@@ -1,634 +0,0 @@
@@ -1,665 +0,0 @@
-# 7.2.0 / 2020-05-22
-
-## :tada: Enhancements
-
-- [#4234](https://github.com/mochajs/mocha/issues/4234): Add ability to run tests in a mocha instance multiple times ([**@nicojs**](https://github.com/nicojs))
-- [#4219](https://github.com/mochajs/mocha/issues/4219): Exposing filename in JSON, doc, and json-stream reporters ([**@Daniel0113**](https://github.com/Daniel0113))
-- [#4244](https://github.com/mochajs/mocha/issues/4244): Add Root Hook Plugins ([**@boneskull**](https://github.com/boneskull))
-
-## :bug: Fixes
-
-- [#4258](https://github.com/mochajs/mocha/issues/4258): Fix missing dot in name of configuration file ([**@sonicdoe**](https://github.com/sonicdoe))
-- [#4194](https://github.com/mochajs/mocha/issues/4194): Check if module.paths really exists ([**@ematipico**](https://github.com/ematipico))
-- [#4256](https://github.com/mochajs/mocha/issues/4256): `--forbid-only` does not recognize `it.only` when `before` crashes ([**@arvidOtt**](https://github.com/arvidOtt))
-- [#4152](https://github.com/mochajs/mocha/issues/4152): Bug with multiple async done() calls ([**@boneskull**](https://github.com/boneskull))
-- [#4275](https://github.com/mochajs/mocha/issues/4275): Improper warnings for invalid reporters ([**@boneskull**](https://github.com/boneskull))
-- [#4288](https://github.com/mochajs/mocha/issues/4288): Broken hook.spec.js test for IE11 ([**@boneskull**](https://github.com/boneskull))
-
-## :book: Documentation
-
-- [#4081](https://github.com/mochajs/mocha/issues/4081): Insufficient white space for API docs in view on mobile ([**@HyunSangHan**](https://github.com/HyunSangHan))
-- [#4255](https://github.com/mochajs/mocha/issues/4255): Update mocha-docdash for UI fixes on API docs ([**@craigtaub**](https://github.com/craigtaub))
-- [#4235](https://github.com/mochajs/mocha/issues/4235): Enable emoji on website; enable normal ul elements ([**@boneskull**](https://github.com/boneskull))
-- [#4272](https://github.com/mochajs/mocha/issues/4272): Fetch sponsors at build time, show ALL non-skeevy sponsors ([**@boneskull**](https://github.com/boneskull))
-
-## :nut_and_bolt: Other
-
-- [#4249](https://github.com/mochajs/mocha/issues/4249): Refactoring improving encapsulation ([**@arvidOtt**](https://github.com/arvidOtt))
-- [#4242](https://github.com/mochajs/mocha/issues/4242): CI add job names, add Node.js v14 to matrix ([**@boneskull**](https://github.com/boneskull))
-- [#4237](https://github.com/mochajs/mocha/issues/4237): Refactor validatePlugins to throw coded errors ([**@boneskull**](https://github.com/boneskull))
-- [#4236](https://github.com/mochajs/mocha/issues/4236): Better debug output ([**@boneskull**](https://github.com/boneskull))
-
-# 7.1.2 / 2020-04-26
-
-## :nut_and_bolt: Other
@@ -552,7 +583,7 @@ index c3b33f1..0000000
-
-- [#3226](https://github.com/mochajs/mocha/issues/3226): Do not swallow errors that are thrown asynchronously from passing tests ([@boneskull](https://github.com/boneskull)). Example:
-
- \```js
- \`\`\`js
- it('should actually fail, sorry!', function (done) {
- // passing assertion
- assert(true === true);
@@ -565,7 +596,7 @@ index c3b33f1..0000000
- throw new Error('chaos!');
- }, 100);
- });
- \```
- \`\`\`
-
- Previously to this version, Mocha would have _silently swallowed_ the `chaos!` exception, and you wouldn't know. Well, _now you know_. Mocha cannot recover from this gracefully, so it will exit with a nonzero code.
-
@@ -758,12 +789,12 @@ deleted file mode 100644
index b3623a5..0000000
Binary files a/node_modules/mocha/assets/growl/ok.png and /dev/null differ
diff --git a/node_modules/mocha/lib/mocha.js b/node_modules/mocha/lib/mocha.js
index 740e1fd..0cd2769 100644
index 1983690..ee096a3 100644
--- a/node_modules/mocha/lib/mocha.js
+++ b/node_modules/mocha/lib/mocha.js
@@ -904,7 +904,7 @@ Mocha.prototype.run = function(fn) {
options.files = this.files;
var runner = new exports.Runner(suite, options.delay);
@@ -1014,7 +1014,7 @@ Mocha.prototype.run = function(fn) {
cleanReferencesAfterRun: this._cleanReferencesAfterRun
});
createStatsCollector(runner);
- var reporter = new this._reporter(runner, options);
+ var reporter = this._reporter(runner, options);
@@ -771,10 +802,10 @@ index 740e1fd..0cd2769 100644
runner.fullStackTrace = options.fullTrace;
runner.asyncOnly = options.asyncOnly;
diff --git a/node_modules/mocha/lib/runner.js b/node_modules/mocha/lib/runner.js
index 25c03b9..f71c992 100644
index 20a6af2..2123646 100644
--- a/node_modules/mocha/lib/runner.js
+++ b/node_modules/mocha/lib/runner.js
@@ -677,9 +677,43 @@ Runner.prototype.runTests = function(suite, fn) {
@@ -755,9 +755,42 @@ Runner.prototype.runTests = function(suite, fn) {
}
self.emit(constants.EVENT_TEST_END, test);
return self.hookUp(HOOK_TYPE_AFTER_EACH, next);
@@ -814,13 +845,12 @@ index 25c03b9..f71c992 100644
+
var retry = test.currentRetry();
- if (retry < test.retries()) {
+
+ // requeue the test if we have retries and haven't satisfied our retry configuration.
+ if (retry < test.retries() && testStatusInfo.shouldAttemptsContinue) {
var clonedTest = test.clone();
clonedTest.currentRetry(retry + 1);
tests.unshift(clonedTest);
@@ -689,8 +723,25 @@ Runner.prototype.runTests = function(suite, fn) {
@@ -767,8 +800,25 @@ Runner.prototype.runTests = function(suite, fn) {
// Early return + hook trigger so that it doesn't
// increment the count wrong
return self.hookUp(HOOK_TYPE_AFTER_EACH, next);
@@ -9,6 +9,7 @@ import * as Submit from './submit'
import * as Type from './type'
import * as Trigger from './trigger'
import * as Mount from './mount'
import Press from './press'
export {
Check,
@@ -22,4 +23,5 @@ export {
Type,
Trigger,
Mount,
Press,
}
@@ -0,0 +1,77 @@
import type { $Cy } from '../../../cypress/cy'
import type { StateFunc } from '../../../cypress/state'
import type { KeyPressSupportedKeys, AutomationCommands } from '@packages/types'
import { defaults } from 'lodash'
import { isSupportedKey } from '@packages/server/lib/automation/commands/key_press'
import $errUtils from '../../../cypress/error_utils'
import $utils from '../../../cypress/utils'
export interface PressCommand {
(key: KeyPressSupportedKeys, userOptions?: Partial<Cypress.Loggable> & Partial<Cypress.Timeoutable>): void
}
export default function (Commands: Cypress.Commands, Cypress: Cypress.Cypress, cy: $Cy, state: StateFunc, config: any) {
async function pressCommand (key: KeyPressSupportedKeys, userOptions?: Partial<Cypress.Loggable> & Partial<Cypress.Timeoutable>) {
const options: Cypress.Loggable & Partial<Cypress.Timeoutable> = defaults({}, userOptions, {
log: true,
})
const deltaOptions = $utils.filterOutOptions(options)
const log = Cypress.log({
timeout: options.timeout,
hidden: options.log === false,
message: [key, deltaOptions],
consoleProps () {
return {
'Key': key,
}
},
})
if (!isSupportedKey(key)) {
$errUtils.throwErrByPath('press.invalid_key', {
onFail: log,
args: { key },
})
// throwErrByPath always throws, but there's no way to indicate that
// code beyond this point is unreachable to typescript / linters
return
}
if (Cypress.browser.family === 'webkit') {
$errUtils.throwErrByPath('press.unsupported_browser', {
onFail: log,
args: {
family: Cypress.browser.family,
},
})
return
}
if (Cypress.browser.name === 'firefox' && Number(Cypress.browser.majorVersion) < 135) {
$errUtils.throwErrByPath('press.unsupported_browser_version', {
onFail: log,
args: {
browser: Cypress.browser.name,
version: Cypress.browser.majorVersion,
minimumVersion: 135,
},
})
}
try {
const command: 'key:press' = 'key:press'
const args: AutomationCommands[typeof command]['dataType'] = {
key,
}
await Cypress.automation('key:press', args)
} catch (err) {
$errUtils.throwErr(err, { onFail: log })
}
}
return Commands.add('press', pressCommand)
}
@@ -57,7 +57,7 @@ export default function (Commands, Cypress, cy) {
}
// stringify deterministically if we were given an object
id = _.isString(id) ? id : stringifyStable(id)
id = _.isString(id) ? id : stringifyStable(id) as string
if (!setup || !_.isFunction(setup)) {
$errUtils.throwErrByPath('sessions.session.wrongArgSetup')
@@ -92,7 +92,7 @@ export default function (Commands, Cypress, cy) {
})
}
let session: Cypress.SessionData = sessionsManager.getActiveSession(id)
let session: Cypress.SessionData = sessionsManager.getActiveSession(id as string)
const isRegisteredSessionForSpec = sessionsManager.registeredSessions.has(id)
if (session) {
+6
View File
@@ -14,6 +14,7 @@ import $utils from '../cypress/utils'
import $window from '../dom/window'
import type { Log } from '../cypress/log'
import type { StateFunc } from '../cypress/state'
import type { KeyPressSupportedKeys } from '@packages/types'
const debug = Debug('cypress:driver:keyboard')
@@ -1397,6 +1398,10 @@ const defaults = (props: Partial<Cypress.KeyboardDefaultsOptions>) => {
return getConfig()
}
const Keys: Record<string, KeyPressSupportedKeys> = {
TAB: 'Tab',
}
export default {
defaults,
getConfig,
@@ -1405,4 +1410,5 @@ export default {
reset,
toModifiersEventOptions,
fromModifierEventOptions,
Keys,
}
+1
View File
@@ -348,6 +348,7 @@ class $Cypress {
this.downloads = $Downloads.create(this)
// wire up command create to cy
// @ts-expect-error
this.Commands = $Commands.create(this, this.cy, this.state, this.config)
this.events.proxyTo(this.cy)
+4 -4
View File
@@ -3,7 +3,7 @@ import { allCommands } from '../cy/commands'
import { addCommand as addNetstubbingCommand } from '../cy/net-stubbing'
import $errUtils from './error_utils'
import $stackUtils from './stack_utils'
import type { $Cy } from './cy'
import type { QueryFunction } from './state'
const PLACEHOLDER_COMMANDS = ['mount', 'hover']
@@ -40,7 +40,7 @@ const internalError = (path, args) => {
}
export default {
create: (Cypress, cy, state, config) => {
create: (Cypress: Cypress.Cypress, cy: $Cy, state, config) => {
const reservedCommandNames = new Set(Object.keys(cy))
const commands = {}
const queries = {}
@@ -63,11 +63,11 @@ export default {
return null
},
addSync (name, fn) {
addSync (name: string, fn: (...args: any[]) => any) {
return cy.addCommandSync(name, fn)
},
addAll (options = {}, obj) {
addAll (options, obj) {
if (!obj) {
obj = options
options = {}
@@ -1310,6 +1310,18 @@ export default {
},
},
press: {
invalid_key: stripIndent`\
\`{{key}}\` is not supported by ${cmd('press')}. See \`Cypress.Keyboard.Keys\` for keys that are supported.
`,
unsupported_browser_version: stripIndent`\
${cmd('press')} is not supported in {{browser}} version {{version}}. Upgrade to version {{minimumVersion}} to use \`cy.press()\`.
`,
unsupported_browser: stripIndent`\
${cmd('press')} is not supported in {{family}} browsers.
`,
},
proxy: {
js_rewriting_failed: stripIndent`\
An error occurred in the Cypress proxy layer while rewriting your source code. This is a bug in Cypress. Open an issue if you see this message.
@@ -6,7 +6,7 @@ import type { BasicSourceMapConsumer } from 'source-map'
import mappingsWasm from 'source-map/lib/mappings.wasm'
import $utils from './utils'
import stackUtils from './stack_utils'
import { toPosix } from './util/to_posix'
const sourceMapExtractionRegex = /\/\/\s*[@#]\s*sourceMappingURL\s*=\s*(data:[^\s]*)/g
const regexDataUrl = /data:[^;\n]+(?:;charset=[^;\n]+)?;base64,([a-zA-Z0-9+/]+={0,2})/ // matches data urls
@@ -23,7 +23,7 @@ const initializeSourceMapConsumer = async (script, sourceMap): Promise<BasicSour
const consumer = await new SourceMapConsumer(sourceMap)
sourceMapConsumers[stackUtils.toPosix(script.fullyQualifiedUrl)] = consumer
sourceMapConsumers[toPosix(script.fullyQualifiedUrl)] = consumer
return consumer
}
@@ -56,7 +56,7 @@ const extractSourceMap = (fileContents) => {
}
const getSourceContents = (filePath, sourceFile) => {
const posixFilePath = stackUtils.toPosix(filePath)
const posixFilePath = toPosix(filePath)
if (!sourceMapConsumers[posixFilePath]) return null
@@ -72,7 +72,7 @@ const getSourceContents = (filePath, sourceFile) => {
}
const getSourcePosition = (filePath, position) => {
const posixFilePath = stackUtils.toPosix(filePath)
const posixFilePath = toPosix(filePath)
const sourceMapConsumer = sourceMapConsumers[posixFilePath]
if (!sourceMapConsumer) return null
+1 -8
View File
@@ -15,7 +15,7 @@ import { codeFrameColumns } from '@babel/code-frame'
import $utils from './utils'
import $sourceMapUtils from './source_map_utils'
import { toPosix } from './util/to_posix'
// Intentionally deep-importing from @packages/errors so as to not bundle the entire @packages/errors in the client unnecessarily
import { getStackLines, replacedStack, stackWithoutMessage, splitStack, unsplitStack, stackLineRegex } from '@packages/errors/src/stackUtils'
@@ -184,12 +184,6 @@ const getCodeFrameFromSource = (sourceCode, { line, column: originalColumn, rela
}
}
export const toPosix = (file: string) => {
return Cypress.config('platform') === 'win32'
? file.replaceAll('\\', '/')
: file
}
const getRelativePathFromRoot = (relativeFile: string, absoluteFile?: string) => {
// at this point relativeFile is relative to the cypress config
// we need it to be relative to the repo root, which is different for monorepos
@@ -549,5 +543,4 @@ export default {
stackWithUserInvocationStackSpliced,
captureUserInvocationStack,
getInvocationDetails,
toPosix,
}
@@ -0,0 +1,5 @@
export const toPosix = (file: string) => {
return Cypress.config('platform') === 'win32'
? file.replaceAll('\\', '/')
: file
}
@@ -0,0 +1,11 @@
import { vi } from 'vitest'
import type sourceMapUtils from '../../src/cypress/source_map_utils'
// This is mocked in the setup file because vitest chokes on loading the .wasm file
// from the 'source-map' module. A solution to that should be found before unit testing
// source_map_utils.
vi.mock('../../src/cypress/source_map_utils', () => {
return {
getSourcePosition: vi.fn<typeof sourceMapUtils.getSourcePosition>(),
}
})
@@ -0,0 +1,187 @@
/**
* @vitest-environment jsdom
*/
import { vi, describe, it, expect, beforeEach, Mock, MockedObject } from 'vitest'
import type { KeyPressSupportedKeys } from '@packages/types'
import addCommand, { PressCommand } from '../../../../../src/cy/commands/actions/press'
import type { $Cy } from '../../../../../src/cypress/cy'
import type { StateFunc } from '../../../../../src/cypress/state'
import $errUtils from '../../../../../src/cypress/error_utils'
import Keyboard from '../../../../../src/cy/keyboard'
vi.mock('../../../../../src/cypress/error_utils', async () => {
const original = await vi.importActual('../../../../../src/cypress/error_utils')
return {
default: {
// @ts-expect-error
...original.default,
// @ts-expect-error
throwErr: vi.fn().mockImplementation(original.default.throwErr),
// @ts-expect-error
throwErrByPath: vi.fn().mockImplementation(original.default.throwErrByPath),
},
}
})
describe('cy/commands/actions/press', () => {
let log: Mock<typeof Cypress['log']>
let automation: Mock<typeof Cypress['automation']>
let press: PressCommand
let Cypress: MockedObject<Cypress.Cypress>
let Commands: MockedObject<Cypress.Commands>
let cy: MockedObject<$Cy>
let state: MockedObject<StateFunc>
let config: any
let logReturnValue: Cypress.Log
beforeEach(() => {
log = vi.fn<typeof Cypress['log']>()
automation = vi.fn<typeof Cypress['automation']>()
Cypress = {
// The overloads for `log` don't get applied correctly here
// @ts-expect-error
log,
automation,
// @ts-expect-error
browser: {
family: 'chromium',
name: 'Chrome',
},
}
// @ts-expect-error - this is a generic mock impl
Commands = {
add: vi.fn(),
}
// @ts-expect-error
cy = {}
state = {
...vi.fn<StateFunc>(),
// @ts-expect-error - this is a recursive definition, so we're only defining the mock one level deep
state: vi.fn<StateFunc>(),
reset: vi.fn<() => Record<string, any>>(),
}
config = {}
logReturnValue = {
id: 'log_id',
end: vi.fn(),
error: vi.fn(),
finish: vi.fn(),
get: vi.fn(),
set: vi.fn(),
snapshot: vi.fn(),
_hasInitiallyLogged: false,
groupEnd: vi.fn(),
}
Cypress.log.mockReturnValue(logReturnValue)
addCommand(Commands, Cypress, cy, state, config)
expect(Commands.add).toHaveBeenCalledOnce()
// @ts-expect-error
const [[cmdName, cmd]]: [[string, PressCommand]] = Commands.add.mock.calls
expect(cmdName).toEqual('press')
press = cmd as PressCommand
})
describe('with a valid key', () => {
const key: KeyPressSupportedKeys = Keyboard.Keys.TAB
it('dispatches a key:press automation command', async () => {
await press(key)
expect(automation).toHaveBeenCalledWith('key:press', { key })
})
describe('with options', () => {
let options: Cypress.Loggable & Cypress.Timeoutable
beforeEach(() => {
options = {
log: false,
timeout: 2000,
}
})
it('sets timeout and hidden on the log', async () => {
await press(key, options)
expect(Cypress.log).toBeCalledWith({
timeout: options.timeout,
hidden: true,
message: [key, { timeout: 2000 }],
consoleProps: expect.any(Function),
})
})
})
})
describe('with an invalid key', () => {
it('throws an invalid key error', async () => {
// @ts-expect-error
const key: KeyPressSupportedKeys = 'Foo'
await expect(press(key)).rejects.toThrow(`\`${key}\` is not supported by \`cy.press()\``)
expect($errUtils.throwErrByPath).toHaveBeenCalledWith('press.invalid_key', {
onFail: logReturnValue,
args: {
key,
},
})
})
})
describe('when in webkit', () => {
it('throws an unsupported browser error', async () => {
Cypress.browser.family = 'webkit'
await expect(press('Tab')).rejects.toThrow('`cy.press()` is not supported in webkit browsers.')
expect($errUtils.throwErrByPath).toHaveBeenCalledWith('press.unsupported_browser', {
onFail: logReturnValue,
args: {
family: Cypress.browser.family,
},
})
})
})
describe('when in firefox below 135', () => {
it('throws an unsupported browser version error', async () => {
Cypress.browser.name = 'firefox'
Cypress.browser.majorVersion = '134'
await expect(press('Tab')).rejects.toThrow('`cy.press()` is not supported in firefox version 134. Upgrade to version 135 to use `cy.press()`.')
expect($errUtils.throwErrByPath).toHaveBeenCalledWith('press.unsupported_browser_version', {
onFail: logReturnValue,
args: {
browser: Cypress.browser.name,
version: Cypress.browser.majorVersion,
minimumVersion: 135,
},
})
})
})
describe('when automation throws', () => {
it('throws via $errUtils, passing in the results from Cypress.log', async () => {
const thrown = new Error('Some error')
// @ts-expect-error async is not bluebird, but that's fine
Cypress.automation.mockImplementation(async () => {
throw thrown
})
await expect(press('Tab')).rejects.toThrow(thrown)
expect($errUtils.throwErr).toHaveBeenCalledWith(thrown, {
onFail: logReturnValue,
})
})
})
})
@@ -0,0 +1,40 @@
/**
* @vitest-environment jsdom
*/
import { vi, describe, it, expect, beforeEach, MockedFunction } from 'vitest'
import { toPosix } from '../../../../src/cypress/util/to_posix'
describe('toPosix', () => {
let config: MockedFunction<any>
beforeEach(() => {
config = vi.fn()
// @ts-expect-error
global.Cypress = {
config,
}
})
describe('on windows', () => {
beforeEach(() => {
config.mockReturnValue('win32')
})
it('replaces backslashes with forward slashes', () => {
expect(toPosix('C:\\some\\file')).toEqual('C:/some/file')
})
})
describe(`on other OS'`, () => {
beforeEach(() => {
config.mockReturnValue('darwin64')
})
it('performs as an identity function', () => {
expect(toPosix('/some/file')).toEqual('/some/file')
})
})
})
+3
View File
@@ -31,6 +31,9 @@ interface InternalCheckOptions extends Partial<Cypress.CheckClearOptions> {
interface InternalKeyboard extends Partial<Keyboard> {
getMap: () => object
reset: () => void
Keys: {
TAB: 'Tab'
}
}
declare namespace Cypress {
+1
View File
@@ -5,6 +5,7 @@ export default defineConfig({
include: ['test/unit/**/*.spec.ts'],
environment: 'jsdom',
exclude: ['**/__fixtures__/**/*'],
setupFiles: 'test/__setup__/setupMocks.ts',
reporters: [
'default',
['junit', { suiteName: 'Driver Unit Tests', outputFile: '/tmp/cypress/junit/driver-test-results.xml' }],
+1 -1
View File
@@ -90,7 +90,7 @@
"markdown-it": "13.0.1",
"modern-normalize": "1.1.0",
"p-defer": "^3.0.0",
"patch-package": "6.4.7",
"patch-package": "8.0.0",
"postcss": "^8.4.22",
"shiki": "^0.9.12",
"sinon": "13.0.2",
+1 -1
View File
@@ -27,7 +27,7 @@ describe('agents', () => {
})
start = () => {
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', {})
})
+1 -1
View File
@@ -26,7 +26,7 @@ describe('aliases', () => {
})
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', {})
})
+1 -1
View File
@@ -27,7 +27,7 @@ describe('commands', { viewportHeight: 1000 }, () => {
})
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', {})
addCommand(runner, {
+1 -1
View File
@@ -32,7 +32,7 @@ describe('header', () => {
})
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', { ...runnables, testFilter: opts?.testFilter, totalUnfilteredTests: opts?.totalUnfilteredTests })
runner.emit('reporter:start', {})
})
+1 -1
View File
@@ -26,7 +26,7 @@ describe('hooks', () => {
})
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', {})
})
+1 -1
View File
@@ -29,7 +29,7 @@ function visitAndRenderReporter (studioEnabled: boolean = false, studioActive: b
})
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', { studioActive })
})
+1 -1
View File
@@ -27,7 +27,7 @@ describe('routes', () => {
})
start = () => {
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', {})
})
@@ -45,7 +45,7 @@ describe('runnables', () => {
start = (renderProps?: Partial<BaseReporterProps>) => {
render(renderProps)
return cy.get('.reporter').then(() => {
return cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', {})
})
@@ -36,7 +36,7 @@ describe('shortcuts', function () {
})
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', this.runnables)
runner.emit('reporter:start', {})
})
@@ -13,7 +13,7 @@ describe('spec title', () => {
win.render({ runner, runnerStore: { spec } })
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', {})
runner.emit('reporter:start', {})
})
+1 -1
View File
@@ -29,7 +29,7 @@ describe('suites', () => {
})
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', {})
})
@@ -20,7 +20,7 @@ describe('test errors', () => {
// @ts-ignore
runnablesWithErr.suites[0].tests[0].err = err
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnablesWithErr)
runner.emit('reporter:start', {})
})
+1 -1
View File
@@ -28,7 +28,7 @@ function visitAndRenderReporter (studioEnabled: boolean = false, studioActive: b
})
})
cy.get('.reporter').then(() => {
cy.get('.reporter.mounted').then(() => {
runner.emit('runnables:ready', runnables)
runner.emit('reporter:start', { studioActive })
})
@@ -200,6 +200,10 @@ export default class Attempt {
}
}
@action setIsOpen (isOpen: boolean) {
this._isOpen = isOpen
}
@action finish (props: UpdatableTestProps, isInteractive: boolean) {
this.update(props)
this.isActive = false
+48 -59
View File
@@ -1,6 +1,6 @@
import cs from 'classnames'
import { observer } from 'mobx-react'
import React, { Component } from 'react'
import React, { useEffect, useState } from 'react'
import type { TestState } from '@packages/types'
import Agents from '../agents/agents'
@@ -35,73 +35,62 @@ const AttemptHeader = ({ index, state }: {index: number, state: TestState }) =>
</span>
)
const StudioError = () => (
<div className='runnable-err-wrapper studio-err-wrapper'>
<div className='runnable-err'>
<div className='runnable-err-message'>
Studio cannot add commands to a failing test.
</div>
</div>
</div>
)
function renderAttemptContent (model: AttemptModel, studioActive: boolean) {
// performance optimization - don't render contents if not open
return (
<div className={`attempt-${model.id + 1}`}>
<Sessions model={model.sessions} />
<Agents model={model} />
<Routes model={model} />
<div ref='commands' className='runnable-commands-region'>
{model.hasCommands ? <Hooks model={model} /> : <NoCommands />}
</div>
{model.state === 'failed' && (
<div className='attempt-error-region'>
<TestError {...model.error} />
{studioActive && <StudioError />}
</div>
)}
</div>
)
}
interface AttemptProps {
model: AttemptModel
scrollIntoView: Function
studioActive: boolean
}
@observer
class Attempt extends Component<AttemptProps> {
componentDidUpdate () {
this.props.scrollIntoView()
}
const Attempt: React.FC<AttemptProps> = observer(({ model, scrollIntoView, studioActive }) => {
const [isMounted, setIsMounted] = useState(false)
render () {
const { model, studioActive } = this.props
useEffect(() => {
if (isMounted) {
scrollIntoView()
} else {
setIsMounted(true)
}
})
// HACK: causes component update when command log is added
model.commands.length
return (
<li
key={model.id}
className={cs('attempt-item', `attempt-state-${model.state}`)}
ref="container"
return (
<li
key={model.id}
className={cs('attempt-item', `attempt-state-${model.state}`)}
>
<Collapsible
header={<AttemptHeader index={model.id} state={model.state} />}
hideExpander
headerClass='attempt-name'
contentClass='attempt-content'
isOpen={model.isOpen}
onOpenStateChangeRequested={(isOpen: boolean) => model.setIsOpen(isOpen)}
>
<Collapsible
header={<AttemptHeader index={model.id} state={model.state} />}
hideExpander
headerClass='attempt-name'
contentClass='attempt-content'
isOpen={model.isOpen}
>
{renderAttemptContent(model, studioActive)}
</Collapsible>
</li>
)
}
}
<div className={`attempt-${model.id + 1}`}>
<Sessions model={model.sessions} />
<Agents model={model} />
<Routes model={model} />
<div className='runnable-commands-region'>
{model.hasCommands ? <Hooks model={model} /> : <NoCommands />}
</div>
{model.state === 'failed' && (
<div className='attempt-error-region'>
<TestError {...model.error} />
{studioActive && (
<div className='runnable-err-wrapper studio-err-wrapper'>
<div className='runnable-err'>
<div className='runnable-err-message'>
Studio cannot add commands to a failing test.
</div>
</div>
</div>
)}
</div>
)}
</div>
</Collapsible>
</li>
)
})
const Attempts = observer(({ test, scrollIntoView, studioActive }: {test: TestModel, scrollIntoView: Function, studioActive: boolean}) => {
return (<ul className={cs('attempts', {
@@ -1,11 +1,9 @@
import cs from 'classnames'
import React, { Component, CSSProperties, MouseEvent, ReactNode, RefObject } from 'react'
import React, { CSSProperties, MouseEvent, ReactNode, RefObject, useCallback, useState } from 'react'
import { onEnterOrSpace } from '../lib/util'
import ChevronIcon from '@packages/frontend-shared/src/assets/icons/chevron-down-small_x8.svg'
interface Props {
interface CollapsibleProps {
isOpen?: boolean
headerClass?: string
headerStyle?: CSSProperties
@@ -13,81 +11,56 @@ interface Props {
headerExtras?: ReactNode
containerRef?: RefObject<HTMLDivElement>
contentClass?: string
hideExpander: boolean
hideExpander?: boolean
children?: ReactNode
onOpenStateChangeRequested?: (isOpen: boolean) => void
}
interface State {
isOpen: boolean
}
const Collapsible: React.FC<CollapsibleProps> = ({ isOpen: isOpenAsProp = false, header, headerClass = '', headerStyle = {}, headerExtras, contentClass = '', hideExpander = false, containerRef = null, onOpenStateChangeRequested, children }) => {
const [isOpenState, setIsOpenState] = useState(isOpenAsProp)
class Collapsible extends Component<Props, State> {
static defaultProps = {
isOpen: false,
headerClass: '',
headerStyle: {},
contentClass: '',
hideExpander: false,
}
constructor (props: Props) {
super(props)
this.state = { isOpen: props.isOpen || false }
}
componentDidUpdate (prevProps: Props) {
if (this.props.isOpen != null && this.props.isOpen !== prevProps.isOpen) {
this.setState({ isOpen: this.props.isOpen })
const toggleOpenState = useCallback((e?: MouseEvent) => {
e?.stopPropagation()
if (onOpenStateChangeRequested) {
onOpenStateChangeRequested(!isOpen)
} else {
setIsOpenState(!isOpen)
}
}
}, [isOpenState, onOpenStateChangeRequested])
render () {
return (
<div className={cs('collapsible', { 'is-open': this.state.isOpen })} ref={this.props.containerRef}>
<div className={cs('collapsible-header-wrapper', this.props.headerClass)}>
const isOpen = onOpenStateChangeRequested ? isOpenAsProp : isOpenState
return (
<div className={cs('collapsible', { 'is-open': isOpen })} ref={containerRef}>
<div className={cs('collapsible-header-wrapper', headerClass)}>
<div
aria-expanded={isOpen}
className='collapsible-header'
onClick={toggleOpenState}
onKeyUp={onEnterOrSpace(toggleOpenState)}
role='button'
tabIndex={0}
>
<div
aria-expanded={this.state.isOpen}
className='collapsible-header'
onClick={this._onClick}
onKeyPress={onEnterOrSpace(this._onKeyPress)}
role='button'
tabIndex={0}
className='collapsible-header-inner'
style={headerStyle}
tabIndex={-1}
>
<div
className='collapsible-header-inner'
style={this.props.headerStyle}
tabIndex={-1}
>
{!this.props.hideExpander && <ChevronIcon className='collapsible-indicator' />}
<span className='collapsible-header-text'>
{this.props.header}
</span>
</div>
{!hideExpander && <ChevronIcon className='collapsible-indicator' />}
<span className='collapsible-header-text'>
{header}
</span>
</div>
{this.props.headerExtras}
</div>
{this.state.isOpen && (
<div className={cs('collapsible-content', this.props.contentClass)}>
{this.props.children}
</div>
)}
{headerExtras}
</div>
)
}
_toggleOpen = () => {
this.setState({ isOpen: !this.state.isOpen })
}
_onClick = (e: MouseEvent) => {
e.stopPropagation()
this._toggleOpen()
}
_onKeyPress = () => {
this._toggleOpen()
}
{isOpen && (
<div className={cs('collapsible-content', contentClass)}>
{children}
</div>
)}
</div>
)
}
export default Collapsible
+101 -137
View File
@@ -1,18 +1,17 @@
import _ from 'lodash'
import cs from 'classnames'
import Markdown from 'markdown-it'
import { action, observable, makeObservable } from 'mobx'
import { observer } from 'mobx-react'
import React, { Component } from 'react'
import React, { useCallback, useState } from 'react'
import Tooltip from '@cypress/react-tooltip'
import appState, { AppState } from '../lib/app-state'
import events, { Events } from '../lib/events'
import appState from '../lib/app-state'
import events from '../lib/events'
import FlashOnClick from '../lib/flash-on-click'
import StateIcon from '../lib/state-icon'
import Tag from '../lib/tag'
import type { TimeoutID } from '../lib/types'
import runnablesStore, { RunnablesStore } from '../runnables/runnables-store'
import runnablesStore from '../runnables/runnables-store'
import type { Alias, AliasObject } from '../instruments/instrument-model'
import { determineTagType } from '../sessions/utils'
@@ -290,9 +289,6 @@ const Progress = observer(({ model }: ProgressProps) => {
interface Props {
model: CommandModel
aliasesWithDuplicates: Array<Alias> | null
appState: AppState
events: Events
runnablesStore: RunnablesStore
groupId?: number
}
@@ -317,12 +313,12 @@ const CommandControls = observer(({ model, commandName, events }) => {
const isSessionCommand = commandName === 'session'
const displayNumOfChildren = !isSystemEvent && !isSessionCommand && model.hasChildren && !model.isOpen
const _removeStudioCommand = (e: React.MouseEvent<HTMLElement, globalThis.MouseEvent>) => {
const _removeStudioCommand = useCallback((e: React.MouseEvent<HTMLElement, globalThis.MouseEvent>) => {
e.preventDefault()
e.stopPropagation()
events.emit('studio:remove:command', model.number)
}
}, [events, model.number])
return (
<span className='command-controls'>
@@ -369,139 +365,48 @@ const CommandControls = observer(({ model, commandName, events }) => {
)
})
@observer
class Command extends Component<Props> {
@observable isOpen: boolean|null = null
private _showTimeout?: TimeoutID
const Command: React.FC<Props> = observer(({ model, aliasesWithDuplicates, groupId }) => {
const [showTimeout, setShowTimeout] = useState<TimeoutID | undefined>(undefined)
static defaultProps = {
appState,
events,
runnablesStore,
if (model.group && groupId !== model.group) {
return null
}
constructor (props: Props) {
super(props)
makeObservable(this)
}
const commandName = model.name ? nameClassName(model.name) : ''
const groupPlaceholder: Array<JSX.Element> = []
render () {
const { model, aliasesWithDuplicates } = this.props
let groupLevel = 0
if (model.group && this.props.groupId !== model.group) {
return null
if (model.groupLevel !== undefined) {
// cap the group nesting to 5 levels to keep the log text legible
groupLevel = model.groupLevel < 6 ? model.groupLevel : 5
for (let i = 1; i < groupLevel; i++) {
groupPlaceholder.push(<span key={`${groupId}-${i}`} className='command-group-block' />)
}
const commandName = model.name ? nameClassName(model.name) : ''
const groupPlaceholder: Array<JSX.Element> = []
let groupLevel = 0
if (model.groupLevel !== undefined) {
// cap the group nesting to 5 levels to keep the log text legible
groupLevel = model.groupLevel < 6 ? model.groupLevel : 5
for (let i = 1; i < groupLevel; i++) {
groupPlaceholder.push(<span key={`${this.props.groupId}-${i}`} className='command-group-block' />)
}
}
return (
<>
<li className={cs('command', `command-name-${commandName}`, { 'command-is-studio': model.isStudio })}>
<div
className={cs(
'command-wrapper',
`command-state-${model.state}`,
`command-type-${model.type}`,
{
'command-is-event': !!model.event,
'command-is-pinned': this._isPinned(),
'command-is-interactive': (model.hasConsoleProps || model.hasSnapshot),
},
)}
>
<NavColumns model={model} isPinned={this._isPinned()} toggleColumnPin={this._toggleColumnPin} />
<FlashOnClick
message='Printed output to your console'
onClick={this._toggleColumnPin}
shouldShowMessage={this._shouldShowClickMessage}
wrapperClassName={cs('command-pin-target', { 'command-group': !!this.props.groupId })}
>
<div
className='command-wrapper-text'
onMouseEnter={() => this._snapshot(true)}
onMouseLeave={() => this._snapshot(false)}
>
{groupPlaceholder}
<CommandDetails model={model} groupId={this.props.groupId} aliasesWithDuplicates={aliasesWithDuplicates} />
<CommandControls model={model} commandName={commandName} events={this.props.events} />
</div>
</FlashOnClick>
</div>
<Progress model={model} />
{this._children()}
</li>
{model.showError && (
<li>
<TestError
err={model.err}
testId={model.testId}
commandId={model.id}
// if the err is recovered and the current command is a log group, nest the test error within the group
groupLevel={model.group && model.hasChildren ? ++groupLevel : groupLevel}
/>
</li>
)}
</>
)
}
_children () {
const { appState, events, model, runnablesStore } = this.props
if (!model.hasChildren || !model.isOpen) {
return null
}
return (
<ul className='command-child-container'>
{model.children.map((child) => (
<Command
key={child.id}
model={child}
appState={appState}
events={events}
runnablesStore={runnablesStore}
aliasesWithDuplicates={null}
groupId={model.id}
/>
))}
</ul>
)
const _isPinned = () => {
return appState.pinnedSnapshotId === model.id
}
_isPinned () {
return this.props.appState.pinnedSnapshotId === this.props.model.id
const _shouldShowClickMessage = () => {
return !appState.isRunning && !!model.hasConsoleProps
}
_shouldShowClickMessage = () => {
return !this.props.appState.isRunning && !!this.props.model.hasConsoleProps
}
const _toggleColumnPin = () => {
if (appState.isRunning) return
@action _toggleColumnPin = () => {
if (this.props.appState.isRunning) return
const { testId, id } = model
const { testId, id } = this.props.model
if (this._isPinned()) {
this.props.appState.pinnedSnapshotId = null
this.props.events.emit('unpin:snapshot', testId, id)
this._snapshot(true)
if (_isPinned()) {
appState.pinnedSnapshotId = null
events.emit('unpin:snapshot', testId, id)
_snapshot(true)
} else {
this.props.appState.pinnedSnapshotId = id as number
this.props.events.emit('pin:snapshot', testId, id)
this.props.events.emit('show:command', testId, id)
appState.pinnedSnapshotId = id as number
events.emit('pin:snapshot', testId, id)
events.emit('show:command', testId, id)
}
}
@@ -522,31 +427,90 @@ class Command extends Component<Props> {
// over many commands, unless you're hovered for
// 50ms, it won't show the snapshot at all. so we
// optimize for both snapshot showing + restoring
_snapshot (show: boolean) {
const { model, runnablesStore } = this.props
const _snapshot = (show: boolean) => {
if (show) {
runnablesStore.attemptingShowSnapshot = true
this._showTimeout = setTimeout(() => {
setShowTimeout(setTimeout(() => {
runnablesStore.showingSnapshot = true
this.props.events.emit('show:snapshot', model.testId, model.id)
}, 50)
events.emit('show:snapshot', model.testId, model.id)
}, 50))
} else {
runnablesStore.attemptingShowSnapshot = false
clearTimeout(this._showTimeout as TimeoutID)
clearTimeout(showTimeout as TimeoutID)
setTimeout(() => {
// if we are currently showing a snapshot but
// we aren't trying to show a different snapshot
if (runnablesStore.showingSnapshot && !runnablesStore.attemptingShowSnapshot) {
runnablesStore.showingSnapshot = false
this.props.events.emit('hide:snapshot', model.testId, model.id)
events.emit('hide:snapshot', model.testId, model.id)
}
}, 50)
}
}
}
return (
<>
<li className={cs('command', `command-name-${commandName}`, { 'command-is-studio': model.isStudio })}>
<div
className={cs(
'command-wrapper',
`command-state-${model.state}`,
`command-type-${model.type}`,
{
'command-is-event': !!model.event,
'command-is-pinned': _isPinned(),
'command-is-interactive': (model.hasConsoleProps || model.hasSnapshot),
},
)}
>
<NavColumns model={model} isPinned={_isPinned()} toggleColumnPin={_toggleColumnPin} />
<FlashOnClick
message='Printed output to your console'
onClick={_toggleColumnPin}
shouldShowMessage={_shouldShowClickMessage}
wrapperClassName={cs('command-pin-target', { 'command-group': !!groupId })}
>
<div
className='command-wrapper-text'
onMouseEnter={() => _snapshot(true)}
onMouseLeave={() => _snapshot(false)}
>
{groupPlaceholder}
<CommandDetails model={model} groupId={groupId} aliasesWithDuplicates={aliasesWithDuplicates} />
<CommandControls model={model} commandName={commandName} events={events} />
</div>
</FlashOnClick>
</div>
<Progress model={model} />
{model.hasChildren && model.isOpen && (
<ul className='command-child-container'>
{model.children.map((child) => (
<Command
key={child.id}
model={child}
aliasesWithDuplicates={null}
groupId={model.id}
/>
))}
</ul>
)}
</li>
{model.showError && (
<li>
<TestError
err={model.err}
testId={model.testId}
commandId={model.id}
// if the err is recovered and the current command is a log group, nest the test error within the group
groupLevel={model.group && model.hasChildren ? ++groupLevel : groupLevel}
/>
</li>
)}
</>
)
})
export { Aliases, AliasesReferences, Message, Progress }
@@ -1,4 +1,4 @@
import React, { Component } from 'react'
import React, { useEffect, useRef } from 'react'
import { observer } from 'mobx-react'
import Prism from 'prismjs'
@@ -9,28 +9,27 @@ interface Props {
codeFrame: CodeFrame
}
@observer
class ErrorCodeFrame extends Component<Props> {
componentDidMount () {
Prism.highlightAllUnder(this.refs.codeFrame as ParentNode)
}
const ErrorCodeFrame: React.FC<Props> = observer(({ codeFrame }) => {
const codeFrameRef = useRef<null | HTMLPreElement>(null)
render () {
const { line, frame, language } = this.props.codeFrame
const { line, frame, language } = codeFrame
// since we pull out 2 lines above the highlighted code, it will always
// be the 3rd line unless it's at the top of the file (lines 1 or 2)
const highlightLine = Math.min(line, 3)
// since we pull out 2 lines above the highlighted code, it will always
// be the 3rd line unless it's at the top of the file (lines 1 or 2)
const highlightLine = Math.min(line, 3)
return (
<div className='test-err-code-frame'>
<FileNameOpener className="runnable-err-file-path" fileDetails={this.props.codeFrame} hasIcon />
<pre ref='codeFrame' data-line={highlightLine}>
<code className={`language-${language || 'text'}`}>{frame}</code>
</pre>
</div>
)
}
}
useEffect(() => {
Prism.highlightAllUnder(codeFrameRef.current as unknown as ParentNode)
}, [])
return (
<div className='test-err-code-frame'>
<FileNameOpener className="runnable-err-file-path" fileDetails={codeFrame} hasIcon />
<pre ref={codeFrameRef} data-line={highlightLine}>
<code className={`language-${language || 'text'}`}>{frame}</code>
</pre>
</div>
)
})
export default ErrorCodeFrame
+10 -21
View File
@@ -1,5 +1,5 @@
import _ from 'lodash'
import React, { MouseEvent } from 'react'
import React, { MouseEvent, useCallback } from 'react'
import cs from 'classnames'
import { observer } from 'mobx-react'
import Markdown from 'markdown-it'
@@ -44,11 +44,14 @@ interface TestErrorProps {
testId?: string
commandId?: number
// the command group level to nest the recovered in-test error
groupLevel: number
groupLevel?: number
}
const TestError = (props: TestErrorProps) => {
const { err } = props
const TestError: React.FC<TestErrorProps> = ({ err, groupLevel = 0, testId, commandId }) => {
const _onPrint = useCallback((e: MouseEvent) => {
e.stopPropagation()
events.emit('show:error', { err, groupLevel, testId, commandId })
}, [err, groupLevel, testId, commandId])
if (!err || !err.displayMessage) return null
@@ -56,23 +59,13 @@ const TestError = (props: TestErrorProps) => {
md.enable(['backticks', 'emphasis', 'escape'])
const onPrint = () => {
events.emit('show:error', props)
}
const _onPrintClick = (e: MouseEvent) => {
e.stopPropagation()
onPrint()
}
const { codeFrame } = err
const groupPlaceholder: Array<JSX.Element> = []
if (err.isRecovered) {
// cap the group nesting to 5 levels to keep the log text legible
for (let i = 0; i < props.groupLevel; i++) {
for (let i = 0; i < groupLevel; i++) {
groupPlaceholder.push(<span key={`${err.name}-err-${i}`} className='err-group-block' />)
}
}
@@ -99,10 +92,10 @@ const TestError = (props: TestErrorProps) => {
header='View stack trace'
headerClass='runnable-err-stack-expander'
headerExtras={
<FlashOnClick onClick={_onPrintClick} message="Printed output to your console">
<FlashOnClick onClick={_onPrint} message="Printed output to your console">
<div
className="runnable-err-print"
onKeyPress={onEnterOrSpace(onPrint)}
onKeyDown={onEnterOrSpace(() => events.emit('show:error', { err, groupLevel, testId, commandId }))}
role='button'
tabIndex={0}
>
@@ -121,8 +114,4 @@ const TestError = (props: TestErrorProps) => {
)
}
TestError.defaultProps = {
groupLevel: 0,
}
export default observer(TestError)
+24 -45
View File
@@ -1,7 +1,6 @@
import { action, observable, makeObservable } from 'mobx'
import { action } from 'mobx'
import { observer } from 'mobx-react'
import PropTypes from 'prop-types'
import React, { Children, cloneElement, Component, MouseEvent, ReactElement, ReactNode } from 'react'
import React, { Children, cloneElement, MouseEvent, ReactElement, ReactNode, useCallback, useState } from 'react'
// @ts-ignore
import Tooltip from '@cypress/react-tooltip'
@@ -10,55 +9,35 @@ interface Props {
onClick: ((e: MouseEvent) => void)
shouldShowMessage?: (() => boolean)
wrapperClassName?: string
children: React.ReactNode
}
@observer
class FlashOnClick extends Component<Props> {
static propTypes = {
message: PropTypes.string.isRequired,
onClick: PropTypes.func.isRequired,
shouldShowMessage: PropTypes.func,
wrapperClassName: PropTypes.string,
}
static defaultProps = {
shouldShowMessage: () => true,
}
@observable _show = false
constructor (props: Props) {
super(props)
makeObservable(this)
}
render () {
const child = Children.only<ReactNode>(this.props.children)
return (
<Tooltip
placement='top'
title={this.props.message}
visible={this._show}
className='cy-tooltip'
wrapperClassName={this.props.wrapperClassName}
>
{cloneElement(child as ReactElement, { onClick: this._onClick })}
</Tooltip>
)
}
@action _onClick = (e: MouseEvent) => {
const { onClick, shouldShowMessage } = this.props
const FlashOnClick: React.FC<Props> = observer(({ message, onClick, wrapperClassName, children, shouldShowMessage = () => true }) => {
const [show, setShow] = useState(false)
const _onClick = useCallback((e: MouseEvent) => {
onClick(e)
if (shouldShowMessage && !shouldShowMessage()) return
this._show = true
setShow(true)
setTimeout(action('hide:console:message', () => {
this._show = false
setShow(false)
}), 1500)
}
}
}, [onClick, shouldShowMessage])
const child = Children.only<ReactNode>(children)
return (
<Tooltip
placement='top'
title={message}
visible={show}
className='cy-tooltip'
wrapperClassName={wrapperClassName}
>
{cloneElement(child as ReactElement, { onClick: _onClick })}
</Tooltip>
)
})
export default FlashOnClick
+17 -29
View File
@@ -1,6 +1,5 @@
import { action, makeObservable } from 'mobx'
import { observer } from 'mobx-react'
import React, { Component } from 'react'
import React, { useCallback } from 'react'
interface Props {
value: boolean
@@ -9,34 +8,23 @@ interface Props {
onUpdate: (e: MouseEvent) => void
}
@observer
class Switch extends Component<Props> {
@action _onClick = (e: MouseEvent) => {
const { onUpdate } = this.props
const Switch: React.FC<Props> = observer(({ value, 'data-cy': dataCy, size = 'lg', onUpdate }) => {
const _onClick = useCallback((e: MouseEvent) => {
onUpdate(e)
}
}, [onUpdate])
constructor (props: Props) {
super(props)
makeObservable(this)
}
render () {
const { 'data-cy': dataCy, size = 'lg', value } = this.props
return (
<button
data-cy={dataCy}
className={`switch switch-${size}`}
role="switch"
aria-checked={value}
onClick={this._onClick}
>
<span className="indicator" />
</button>
)
}
}
return (
<button
data-cy={dataCy}
className={`switch switch-${size}`}
role="switch"
aria-checked={value}
// @ts-expect-error
onClick={_onClick}
>
<span className="indicator" />
</button>
)
})
export default Switch
+71 -81
View File
@@ -1,15 +1,15 @@
/* global JSX */
import { action, runInAction } from 'mobx'
import { action } from 'mobx'
import { observer } from 'mobx-react'
import cs from 'classnames'
import React, { Component } from 'react'
import React, { useEffect, useRef, useState } from 'react'
import { createRoot } from 'react-dom/client'
// @ts-ignore
import EQ from 'css-element-queries/src/ElementQueries'
import type { RunnablesErrorModel } from './runnables/runnable-error'
import appState, { AppState } from './lib/app-state'
import events, { Runner, Events } from './lib/events'
import appStateDefault, { AppState } from './lib/app-state'
import events, { Events, Runner } from './lib/events'
import runnablesStore, { RunnablesStore } from './runnables/runnables-store'
import scroller, { Scroller } from './lib/scroller'
import statsStore, { StatsStore } from './header/stats-store'
@@ -20,6 +20,16 @@ import Runnables from './runnables/runnables'
import TestingPreferences from './preferences/testing-preferences'
import type { MobxRunnerStore } from '@packages/app/src/store/mobx-runner-store'
function usePrevious (value) {
const ref = useRef()
useEffect(() => {
ref.current = value
}, [])
return ref.current
}
export interface BaseReporterProps {
appState: AppState
className?: string
@@ -38,77 +48,29 @@ export interface BaseReporterProps {
}
export interface SingleReporterProps extends BaseReporterProps{
runMode: 'single'
runMode?: 'single'
}
@observer
class Reporter extends Component<SingleReporterProps> {
static defaultProps: Partial<SingleReporterProps> = {
runMode: 'single',
appState,
events,
runnablesStore,
scroller,
statsStore,
}
// In React Class components (now deprecated), we used to use appState as a default prop. Now since defaultProps are not supported in functional components, we can use ES6 default params to accomplish the same thing
const Reporter: React.FC<SingleReporterProps> = observer(({ appState = appStateDefault, runner, className, error, runMode = 'single', studioEnabled, autoScrollingEnabled, isSpecsListOpen, resetStatsOnSpecChange, renderReporterHeader = (props: ReporterHeaderProps) => <Header {...props}/>, runnerStore }) => {
const previousSpecRunId = usePrevious(runnerStore.specRunId)
const [isMounted, setIsMounted] = useState(false)
const [isInitialized, setIsInitialized] = useState(false)
render () {
const {
// this registration needs to happen synchronously and not async inside useEffect or else the events will not be registered and the reporter might hang inside cy-in-cy tests
if (!isInitialized) {
events.init({
appState,
className,
runnablesStore,
scroller,
error,
statsStore,
studioEnabled,
renderReporterHeader = (props: ReporterHeaderProps) => <Header {...props}/>,
runnerStore,
} = this.props
})
return (
<div className={cs(className, 'reporter', {
'studio-active': appState.studioActive,
})}>
{renderReporterHeader({ appState, statsStore, runnablesStore })}
{appState?.isPreferencesMenuOpen ? (
<TestingPreferences appState={appState} />
) : (
runnerStore.spec && <Runnables
appState={appState}
error={error}
runnablesStore={runnablesStore}
scroller={scroller}
spec={runnerStore.spec}
statsStore={statsStore}
studioEnabled={studioEnabled}
canSaveStudioLogs={runnerStore.canSaveStudioLogs}
/>
)}
</div>
)
events.listen(runner)
setIsInitialized(true)
}
// this hook will only trigger if we switch spec file at runtime
// it never happens in normal e2e but can happen in component-testing mode
componentDidUpdate (newProps: BaseReporterProps) {
if (!this.props.runnerStore.spec) {
throw Error(`Expected runnerStore.spec not to be null.`)
}
this.props.runnablesStore.setRunningSpec(this.props.runnerStore.spec.relative)
if (
this.props.resetStatsOnSpecChange &&
this.props.runnerStore.specRunId !== newProps.runnerStore.specRunId
) {
runInAction('reporter:stats:reset', () => {
this.props.statsStore.reset()
})
}
}
componentDidMount () {
const { appState, runnablesStore, runner, scroller, statsStore, autoScrollingEnabled, isSpecsListOpen, runnerStore } = this.props
useEffect(() => {
if (!runnerStore.spec) {
throw Error(`Expected runnerStore.spec not to be null.`)
}
@@ -122,24 +84,52 @@ class Reporter extends Component<SingleReporterProps> {
appState.setSpecsList(isSpecsListOpen ?? false)
})()
this.props.events.init({
appState,
runnablesStore,
scroller,
statsStore,
})
this.props.events.listen(runner)
shortcuts.start()
EQ.init()
this.props.runnablesStore.setRunningSpec(runnerStore.spec.relative)
}
runnablesStore.setRunningSpec(runnerStore.spec.relative)
// we need to know when the test is mounted for our reporter tests. see
setIsMounted(true)
componentWillUnmount () {
shortcuts.stop()
}
}
return () => shortcuts.stop()
}, [])
useEffect(() => {
if (!runnerStore.spec) {
throw Error(`Expected runnerStore.spec not to be null.`)
}
runnablesStore.setRunningSpec(runnerStore.spec.relative)
if (
resetStatsOnSpecChange &&
runnerStore.specRunId !== previousSpecRunId
) {
statsStore.reset()
}
}, [runnerStore.spec, runnerStore.specRunId, resetStatsOnSpecChange, previousSpecRunId])
return (
<div className={cs(className, 'reporter', {
'studio-active': appState.studioActive,
'mounted': isMounted,
})}>
{renderReporterHeader({ appState, statsStore, runnablesStore })}
{appState?.isPreferencesMenuOpen ? (
<TestingPreferences appState={appState} />
) : (
runnerStore.spec && <Runnables
appState={appState}
error={error}
runnablesStore={runnablesStore}
scroller={scroller}
spec={runnerStore.spec}
statsStore={statsStore}
studioEnabled={studioEnabled}
canSaveStudioLogs={runnerStore.canSaveStudioLogs}
/>
)}
</div>
)
})
declare global {
interface Window {
@@ -152,7 +142,7 @@ declare global {
// NOTE: this is for testing Cypress-in-Cypress
if (window.Cypress) {
window.state = appState
window.state = appStateDefault
window.render = (props) => {
const container: HTMLElement = document.getElementById('app') as HTMLElement
const root = createRoot(container)
@@ -1,7 +1,7 @@
import cs from 'classnames'
import _ from 'lodash'
import { observer } from 'mobx-react'
import React, { Component, MouseEvent } from 'react'
import React, { MouseEvent, useCallback } from 'react'
import { indent } from '../lib/util'
@@ -23,12 +23,12 @@ interface SuiteProps {
}
const Suite = observer(({ eventManager = events, model, studioEnabled, canSaveStudioLogs }: SuiteProps) => {
const _launchStudio = (e: MouseEvent) => {
const _launchStudio = useCallback((e: MouseEvent) => {
e.preventDefault()
e.stopPropagation()
eventManager.emit('studio:init:suite', model.id)
}
}, [eventManager, model.id])
const _header = () => (
<>
@@ -76,30 +76,21 @@ export interface RunnableProps {
// in order to mess with its internal state. converting it to a functional
// component breaks that, so it needs to stay a Class-based component or
// else the driver tests need to be refactored to support it being functional
@observer
class Runnable extends Component<RunnableProps> {
static defaultProps = {
appState,
}
render () {
const { appState, model, studioEnabled, canSaveStudioLogs } = this.props
return (
<li
className={cs(`${model.type} runnable runnable-${model.state}`, {
'runnable-retried': model.hasRetried,
'runnable-studio': appState.studioActive,
})}
data-model-state={model.state}
>
{model.type === 'test'
? <Test model={model as TestModel} studioEnabled={studioEnabled} canSaveStudioLogs={canSaveStudioLogs} />
: <Suite model={model as SuiteModel} studioEnabled={studioEnabled} canSaveStudioLogs={canSaveStudioLogs} />}
</li>
)
}
}
const Runnable: React.FC<RunnableProps> = observer(({ appState: appStateProps = appState, model, studioEnabled, canSaveStudioLogs }) => {
return (
<li
className={cs(`${model.type} runnable runnable-${model.state}`, {
'runnable-retried': model.hasRetried,
'runnable-studio': appStateProps.studioActive,
})}
data-model-state={model.state}
>
{model.type === 'test'
? <Test model={model as TestModel} studioEnabled={studioEnabled} canSaveStudioLogs={canSaveStudioLogs} />
: <Suite model={model as SuiteModel} studioEnabled={studioEnabled} canSaveStudioLogs={canSaveStudioLogs} />}
</li>
)
})
export { Suite }
@@ -1,5 +1,5 @@
import { observer } from 'mobx-react'
import React, { Component, ReactElement } from 'react'
import React, { ReactElement } from 'react'
import type { StatsStore } from '../header/stats-store'
import { formatDuration, getFilenameParts } from '../lib/util'
@@ -12,53 +12,48 @@ interface RunnableHeaderProps {
statsStore: StatsStore
}
@observer
class RunnableHeader extends Component<RunnableHeaderProps> {
render () {
const { spec, statsStore } = this.props
const relativeSpecPath = spec.relative
if (spec.relative === '__all') {
if (spec.specFilter) {
return renderRunnableHeader(
<span><span>Specs matching "{spec.specFilter}"</span></span>,
)
}
const RunnableHeader: React.FC<RunnableHeaderProps> = observer(({ spec, statsStore }) => {
const relativeSpecPath = spec.relative
if (spec.relative === '__all') {
if (spec.specFilter) {
return renderRunnableHeader(
<span><span>All Specs</span></span>,
<span><span>Specs matching "{spec.specFilter}"</span></span>,
)
}
const displayFileName = () => {
const specParts = getFilenameParts(spec.name)
return (
<>
<strong>{specParts[0]}</strong>{specParts[1]}
</>
)
}
const fileDetails = {
absoluteFile: spec.absolute,
column: 0,
displayFile: displayFileName(),
line: 0,
originalFile: relativeSpecPath,
relativeFile: relativeSpecPath,
}
return renderRunnableHeader(
<>
<FileNameOpener fileDetails={fileDetails} hasIcon />
{Boolean(statsStore.duration) && (
<span className='duration' data-cy="spec-duration">{formatDuration(statsStore.duration)}</span>
)}
</>,
<span><span>All Specs</span></span>,
)
}
}
const displayFileName = () => {
const specParts = getFilenameParts(spec.name)
return (
<>
<strong>{specParts[0]}</strong>{specParts[1]}
</>
)
}
const fileDetails = {
absoluteFile: spec.absolute,
column: 0,
displayFile: displayFileName(),
line: 0,
originalFile: relativeSpecPath,
relativeFile: relativeSpecPath,
}
return renderRunnableHeader(
<>
<FileNameOpener fileDetails={fileDetails} hasIcon />
{Boolean(statsStore.duration) && (
<span className='duration' data-cy="spec-duration">{formatDuration(statsStore.duration)}</span>
)}
</>,
)
})
export default RunnableHeader
+22 -27
View File
@@ -1,7 +1,7 @@
import _ from 'lodash'
import { action } from 'mobx'
import { observer } from 'mobx-react'
import React, { Component, MouseEvent } from 'react'
import React, { MouseEvent, useCallback, useEffect, useRef } from 'react'
import events, { Events } from '../lib/events'
import { RunnablesError, RunnablesErrorModel } from './runnable-error'
@@ -33,12 +33,12 @@ interface RunnablesEmptyStateProps {
}
const RunnablesEmptyState = ({ spec, studioEnabled, eventManager = events }: RunnablesEmptyStateProps) => {
const _launchStudio = (e: MouseEvent) => {
const _launchStudio = useCallback((e: MouseEvent) => {
e.preventDefault()
// root runnable always has r1 as id
eventManager.emit('studio:init:suite', 'r1')
}
}, [eventManager])
const isAllSpecs = spec.absolute === '__all' || spec.relative === '__all'
@@ -154,28 +154,10 @@ export interface RunnablesProps {
canSaveStudioLogs: boolean
}
@observer
class Runnables extends Component<RunnablesProps> {
render () {
const { error, runnablesStore, spec, studioEnabled, canSaveStudioLogs } = this.props
return (
<div ref='container' className='container'>
<RunnableHeader spec={spec} statsStore={statsStore} />
<RunnablesContent
runnablesStore={runnablesStore}
studioEnabled={studioEnabled}
canSaveStudioLogs={canSaveStudioLogs}
spec={spec}
error={error}
/>
</div>
)
}
componentDidMount () {
const { scroller, appState } = this.props
const Runnables: React.FC<RunnablesProps> = observer(({ appState, scroller, error, runnablesStore, spec, studioEnabled, canSaveStudioLogs }) => {
const containerRef = useRef<HTMLDivElement>(null)
useEffect(() => {
let maybeHandleScroll: UserScrollCallback | undefined = undefined
if (window.__CYPRESS_MODE__ === 'open') {
@@ -191,9 +173,22 @@ class Runnables extends Component<RunnablesProps> {
// we need to always call scroller.setContainer, but the callback can be undefined
// so we pass maybeHandleScroll. If we don't, Cypress blows up with an error like
// `A container must be set on the scroller with scroller.setContainer(container)`
scroller.setContainer(this.refs.container as Element, maybeHandleScroll)
}
}
scroller.setContainer(containerRef.current as Element, maybeHandleScroll)
}, [])
return (
<div ref={containerRef} className='container'>
<RunnableHeader spec={spec} statsStore={statsStore} />
<RunnablesContent
runnablesStore={runnablesStore}
studioEnabled={studioEnabled}
canSaveStudioLogs={canSaveStudioLogs}
spec={spec}
error={error}
/>
</div>
)
})
export { RunnablesList }
+4
View File
@@ -187,6 +187,10 @@ export default class Test extends Runnable {
cb()
}
@action setIsOpen (isOpen: boolean) {
this._isOpen = isOpen
}
// this is called to sync up the command log UI for the sake of
// screenshots, so we only ever need to open the last attempt
setIsOpenWhenActive (isOpen: boolean) {
+6
View File
@@ -9,6 +9,9 @@ describe('test/test.tsx', () => {
state: 'passed',
title: 'foobar',
attempts: [],
setIsOpen: (isOpen) => model.isOpen = isOpen,
onOpenStateChangeRequested: (isOpen) => model.setIsOpen(isOpen),
callbackAfterUpdate: () => undefined,
}
const appState = {
@@ -37,6 +40,9 @@ describe('test/test.tsx', () => {
state: 'passed',
title: 'foobar',
attempts: [],
setIsOpen: (isOpen) => model.isOpen = isOpen,
onOpenStateChangeRequested: (isOpen) => model.setIsOpen(isOpen),
callbackAfterUpdate: () => undefined,
}
const appState = {
+94 -144
View File
@@ -1,5 +1,5 @@
import { observer } from 'mobx-react'
import React, { Component, createRef, RefObject, MouseEvent } from 'react'
import React, { MouseEvent, useCallback, useEffect, useRef, useState } from 'react'
// @ts-ignore
import Tooltip from '@cypress/react-tooltip'
import cs from 'classnames'
@@ -8,7 +8,6 @@ import events, { Events } from '../lib/events'
import appState, { AppState } from '../lib/app-state'
import Collapsible from '../collapsible/collapsible'
import { indent } from '../lib/util'
import runnablesStore, { RunnablesStore } from '../runnables/runnables-store'
import TestModel from './test-model'
import scroller, { Scroller } from '../lib/scroller'
@@ -21,173 +20,126 @@ import ClipboardIcon from '@packages/frontend-shared/src/assets/icons/general-cl
import WarningIcon from '@packages/frontend-shared/src/assets/icons/warning_x16.svg'
interface StudioControlsProps {
events: Events
model: TestModel
events?: Events
canSaveStudioLogs: boolean
}
interface StudioControlsState {
copySuccess: boolean
}
const StudioControls: React.FC<StudioControlsProps> = observer(({ events: eventsProps = events, canSaveStudioLogs }) => {
const [copySuccess, setCopySuccess] = useState(false)
@observer
class StudioControls extends Component<StudioControlsProps, StudioControlsState> {
static defaultProps = {
events,
}
state = {
copySuccess: false,
}
_cancel = (e: MouseEvent) => {
const _cancel = useCallback((e: MouseEvent) => {
e.preventDefault()
this.props.events.emit('studio:cancel')
}
eventsProps.emit('studio:cancel')
}, [eventsProps])
_save = (e: MouseEvent) => {
const _save = useCallback((e: MouseEvent) => {
e.preventDefault()
this.props.events.emit('studio:save')
}
eventsProps.emit('studio:save')
}, [eventsProps])
_copy = (e: MouseEvent) => {
const _copy = useCallback((e: MouseEvent) => {
e.preventDefault()
this.props.events.emit('studio:copy:to:clipboard', () => {
this.setState({ copySuccess: true })
eventsProps.emit('studio:copy:to:clipboard', () => {
setCopySuccess(true)
})
}
}, [eventsProps])
_endCopySuccess = () => {
if (this.state.copySuccess) {
this.setState({ copySuccess: false })
const _endCopySuccess = useCallback(() => {
if (copySuccess) {
setCopySuccess(false)
}
}
}, [copySuccess])
render () {
const { canSaveStudioLogs } = this.props
const { copySuccess } = this.state
return (
<div className='studio-controls'>
<a className='studio-cancel' onClick={this._cancel}>Cancel</a>
<Tooltip
title={copySuccess ? 'Commands Copied!' : 'Copy Commands to Clipboard'}
className='cy-tooltip'
wrapperClassName='studio-copy-wrapper'
visible={!canSaveStudioLogs ? false : null}
updateCue={copySuccess}
return (
<div className='studio-controls'>
<a className='studio-cancel' onClick={_cancel}>Cancel</a>
<Tooltip
title={copySuccess ? 'Commands Copied!' : 'Copy Commands to Clipboard'}
className='cy-tooltip'
wrapperClassName='studio-copy-wrapper'
visible={!canSaveStudioLogs ? false : null}
updateCue={copySuccess}
>
<button
className={cs('studio-copy', {
'studio-copy-success': copySuccess,
})}
disabled={!canSaveStudioLogs}
onClick={_copy}
onMouseLeave={_endCopySuccess}
>
<button
className={cs('studio-copy', {
'studio-copy-success': copySuccess,
})}
disabled={!canSaveStudioLogs}
onClick={this._copy}
onMouseLeave={this._endCopySuccess}
>
{copySuccess ? (
<CheckIcon />
) : (
<ClipboardIcon />
)}
</button>
</Tooltip>
<button className='studio-save' disabled={!canSaveStudioLogs} onClick={this._save}>Save Commands</button>
</div>
)
}
}
{copySuccess ? (
<CheckIcon />
) : (
<ClipboardIcon />
)}
</button>
</Tooltip>
<button className='studio-save' disabled={!canSaveStudioLogs} onClick={_save}>Save Commands</button>
</div>
)
})
interface TestProps {
events: Events
appState: AppState
runnablesStore: RunnablesStore
scroller: Scroller
events?: Events
appState?: AppState
scroller?: Scroller
model: TestModel
studioEnabled: boolean
canSaveStudioLogs: boolean
}
@observer
class Test extends Component<TestProps> {
static defaultProps = {
events,
appState,
runnablesStore,
scroller,
}
const Test: React.FC<TestProps> = observer(({ model, events: eventsProps = events, appState: appStateProps = appState, scroller: scrollerProps = scroller, studioEnabled, canSaveStudioLogs }) => {
const containerRef = useRef(null)
const [isMounted, setIsMounted] = useState(false)
containerRef: RefObject<HTMLDivElement>
useEffect(() => {
_scrollIntoView()
if (!isMounted) {
setIsMounted(true)
} else {
model.callbackAfterUpdate()
}
})
constructor (props: TestProps) {
super(props)
const _launchStudio = useCallback((e: MouseEvent) => {
e.preventDefault()
e.stopPropagation()
this.containerRef = createRef<HTMLDivElement>()
}
eventsProps.emit('studio:init:test', model.id)
}, [eventsProps, model.id])
componentDidMount () {
this._scrollIntoView()
}
componentDidUpdate () {
this._scrollIntoView()
this.props.model.callbackAfterUpdate()
}
_scrollIntoView () {
const { appState, model, scroller } = this.props
const { state } = model
if (appState.autoScrollingEnabled && (appState.isRunning || appState.studioActive) && state !== 'processing') {
const _scrollIntoView = () => {
if (appStateProps.autoScrollingEnabled && (appStateProps.isRunning || appStateProps.studioActive) && model.state !== 'processing') {
window.requestAnimationFrame(() => {
// since this executes async in a RAF the ref might be null
if (this.containerRef.current) {
scroller.scrollIntoView(this.containerRef.current as HTMLElement)
if (containerRef.current) {
scrollerProps.scrollIntoView(containerRef.current as HTMLElement)
}
})
}
}
render () {
const { model } = this.props
return (
<Collapsible
containerRef={this.containerRef}
header={this._header()}
headerClass='runnable-wrapper'
headerStyle={{ paddingLeft: indent(model.level) }}
contentClass='runnable-instruments'
isOpen={model.isOpen}
hideExpander
>
{this._contents()}
</Collapsible>
)
}
_header () {
const { appState, model } = this.props
const _header = () => {
return (<>
<StateIcon aria-hidden className="runnable-state-icon" state={model.state} isStudio={appState.studioActive} />
<StateIcon aria-hidden className="runnable-state-icon" state={model.state} isStudio={appStateProps.studioActive} />
<span className='runnable-title'>
<span>{model.title}</span>
<span className='visually-hidden'>{model.state}</span>
</span>
{this._controls()}
{_controls()}
</>)
}
_controls () {
const _controls = () => {
let controls: Array<JSX.Element> = []
if (this.props.model.state === 'failed') {
if (model.state === 'failed') {
controls.push(
<Tooltip key={`test-failed-${this.props.model}`} placement='top' title='One or more commands failed' className='cy-tooltip'>
<Tooltip key={`test-failed-${model}`} placement='top' title='One or more commands failed' className='cy-tooltip'>
<span>
<WarningIcon className="runnable-controls-status" />
</span>
@@ -195,12 +147,12 @@ class Test extends Component<TestProps> {
)
}
if (this.props.studioEnabled && !appState.studioActive) {
if (studioEnabled && !appStateProps.studioActive) {
controls.push(
<LaunchStudioIcon
key={`studio-command-${this.props.model}`}
key={`studio-command-${model}`}
title='Add Commands to Test'
onClick={this._launchStudio}
onClick={_launchStudio}
/>,
)
}
@@ -216,25 +168,23 @@ class Test extends Component<TestProps> {
)
}
_contents () {
const { appState, model } = this.props
return (
return (
<Collapsible
containerRef={containerRef}
header={_header()}
headerClass='runnable-wrapper'
headerStyle={{ paddingLeft: indent(model.level) }}
contentClass='runnable-instruments'
isOpen={model.isOpen}
onOpenStateChangeRequested={(isOpen: boolean) => model.setIsOpen(isOpen)}
hideExpander
>
<div style={{ paddingLeft: indent(model.level) }}>
<Attempts studioActive={appState.studioActive} test={model} scrollIntoView={() => this._scrollIntoView()} />
{appState.studioActive && <StudioControls model={model} canSaveStudioLogs={this.props.canSaveStudioLogs}/>}
<Attempts studioActive={appStateProps.studioActive} test={model} scrollIntoView={() => _scrollIntoView()} />
{appStateProps.studioActive && <StudioControls canSaveStudioLogs={canSaveStudioLogs}/>}
</div>
)
}
_launchStudio = (e: MouseEvent) => {
e.preventDefault()
e.stopPropagation()
const { model, events } = this.props
events.emit('studio:init:test', model.id)
}
}
</Collapsible>
)
})
export default Test
+6 -2
View File
@@ -86,12 +86,12 @@ export class Automation {
const onReq = this.get('onRequest')
if (onReq) {
debug('Middleware `onRequest` fn found, attempting middleware exec for message: %s', message)
return Bluebird.try(() => {
return onReq(resolvedMessage, resolvedData)
}).catch((e) => {
if (AutomationNotImplemented.isAutomationNotImplementedErr(e)) {
debug(`${e.message}. Falling back to emit via socket.`)
return this.requestAutomationResponse(resolvedMessage, resolvedData, fn)
}
@@ -189,6 +189,8 @@ export class Automation {
}
use (middlewares: AutomationMiddleware) {
debug('installing middleware')
return this.middleware = {
...this.middleware,
...middlewares,
@@ -196,6 +198,7 @@ export class Automation {
}
async push<T extends keyof AutomationCommands> (message: T, data: AutomationCommands[T]['dataType']) {
debug('push `%s`: %o', message, data)
const result = await this.normalize(message, data)
if (result) {
@@ -206,6 +209,7 @@ export class Automation {
async request<T extends keyof AutomationCommands> (message: T, data: AutomationCommands[T]['dataType'], fn) {
// curry in the message + callback function
// for obtaining the external automation data
debug('request: `%s`', message)
const automate = this.automationValve(message, fn)
await this.invokeAsync('onBeforeRequest', message, data)
@@ -1,8 +1,10 @@
import type ProtocolMapping from 'devtools-protocol/types/protocol-mapping'
import type { Protocol } from 'devtools-protocol'
import type { KeyPressParams, KeyPressSupportedKeys } from '@packages/types'
import type { SendDebuggerCommand } from '../../browsers/cdp_automation'
import type { Client } from 'webdriver'
import Debug from 'debug'
import { isEqual, isError } from 'lodash'
const debug = Debug('cypress:server:automation:command:keypress')
@@ -20,11 +22,41 @@ export class InvalidKeyError extends Error {
}
}
export function isSupportedKey (key: string): key is KeyPressSupportedKeys {
return CDP_KEYCODE[key] && BIDI_VALUE[key]
}
export const CDP_KEYCODE: KeyCodeLookup = {
'Tab': 'U+000009',
}
export async function cdpKeyPress ({ key }: KeyPressParams, send: SendDebuggerCommand): Promise<void> {
async function evaluateInFrameContext (expression: string,
send: SendDebuggerCommand,
contexts: Map<Protocol.Runtime.ExecutionContextId, Protocol.Runtime.ExecutionContextDescription>,
frame: Protocol.Page.Frame): Promise<ProtocolMapping.Commands['Runtime.evaluate']['returnType']> {
for (const [contextId, context] of contexts.entries()) {
if (context.auxData?.frameId === frame.id) {
try {
return await send('Runtime.evaluate', {
expression,
contextId,
})
} catch (e) {
if (isError(e) && (e as Error).message.includes('Cannot find context with specified id')) {
debug('found invalid context %d, removing', contextId)
contexts.delete(contextId)
}
}
}
}
throw new Error('Unable to find valid context for frame')
}
export async function cdpKeyPress (
{ key }: KeyPressParams, send: SendDebuggerCommand,
contexts: Map<Protocol.Runtime.ExecutionContextId, Protocol.Runtime.ExecutionContextDescription>,
frameTree: Protocol.Page.FrameTree,
): Promise<void> {
debug('cdp keypress', { key })
if (!CDP_KEYCODE[key]) {
throw new InvalidKeyError(key)
@@ -32,6 +64,22 @@ export async function cdpKeyPress ({ key }: KeyPressParams, send: SendDebuggerCo
const keyIdentifier = CDP_KEYCODE[key]
const autFrame = frameTree.childFrames?.find(({ frame }) => {
return frame.name?.includes('Your project')
})
if (!autFrame) {
throw new Error('Could not find AUT frame')
}
const topActiveElement = await evaluateInFrameContext('document.activeElement', send, contexts, frameTree.frame)
const autFrameIsActive = topActiveElement.result.description && autFrame.frame.name && topActiveElement.result.description.includes(autFrame.frame.name)
if (!autFrameIsActive) {
await evaluateInFrameContext('window.focus()', send, contexts, autFrame.frame)
}
try {
await send('Input.dispatchKeyEvent', {
type: 'keyDown',
@@ -56,19 +104,32 @@ export const BIDI_VALUE: KeyCodeLookup = {
'Tab': '\uE004',
}
export async function bidiKeyPress ({ key }: KeyPressParams, client: Client, context: string, idSuffix?: string): Promise<void> {
export async function bidiKeyPress ({ key }: KeyPressParams, client: Client, autContext: string, idSuffix?: string): Promise<void> {
const value = BIDI_VALUE[key]
if (!value) {
throw new InvalidKeyError(key)
}
const autFrameElement = await client.findElement('css selector', 'iframe.aut-iframe')
const activeElement = await client.getActiveElement()
if (!isEqual(autFrameElement, activeElement)) {
await client.scriptEvaluate(
{
expression: `window.focus()`,
target: { context: autContext },
awaitPromise: false,
},
)
}
try {
await client.inputPerformActions({
context,
context: autContext,
actions: [{
type: 'key',
id: `${context}-${key}-${idSuffix || Date.now()}`,
id: `${autContext}-${key}-${idSuffix || Date.now()}`,
actions: [
{ type: 'keyDown', value },
{ type: 'keyUp', value },
@@ -79,9 +79,9 @@ export class BidiAutomation {
private interceptId: string | undefined = undefined
private constructor (webDriverClient: WebDriverClient, automation: Automation) {
debug('initializing bidi automation')
this.automation = automation
this.webDriverClient = webDriverClient
// bind Bidi Events to update the standard automation client
// Error here is expected until webdriver adds initiatorType and destination to the request object
// @ts-expect-error
@@ -91,9 +91,6 @@ export class BidiAutomation {
this.webDriverClient.on('network.fetchError', this.onFetchError)
this.webDriverClient.on('browsingContext.contextCreated', this.onBrowsingContextCreated)
this.webDriverClient.on('browsingContext.contextDestroyed', this.onBrowsingContextDestroyed)
debug('registering middleware')
automation.use(this.automationMiddleware)
}
setTopLevelContextId = (contextId?: string) => {
@@ -294,10 +291,10 @@ export class BidiAutomation {
switch (message) {
case 'key:press':
if (this.topLevelContextId) {
await bidiKeyPress(data, this.webDriverClient, this.topLevelContextId)
if (this.autContextId) {
await bidiKeyPress(data, this.webDriverClient, this.autContextId, this.topLevelContextId)
} else {
throw new Error('Cannot emit key press: no top level context initialized')
throw new Error('Cannot emit key press: no AUT context initialized')
}
return
+23 -1
View File
@@ -169,6 +169,7 @@ export class CdpAutomation implements CDPClient, AutomationMiddleware {
private frameTree: Protocol.Page.FrameTree | undefined
private gettingFrameTree: Promise<void> | undefined | null
private cachedDataUrlRequestIds: Set<string> = new Set()
private executionContexts: Map<Protocol.Runtime.ExecutionContextId, Protocol.Runtime.ExecutionContextDescription> = new Map()
private constructor (private sendDebuggerCommandFn: SendDebuggerCommand, private onFn: OnFn, private offFn: OffFn, private sendCloseCommandFn: SendCloseCommand, private automation: Automation, private focusTabOnScreenshot: boolean = false, private isHeadless: boolean = false) {
onFn('Network.requestWillBeSent', this.onNetworkRequestWillBeSent)
@@ -178,6 +179,9 @@ export class CdpAutomation implements CDPClient, AutomationMiddleware {
onFn('ServiceWorker.workerRegistrationUpdated', this.onServiceWorkerRegistrationUpdated)
onFn('ServiceWorker.workerVersionUpdated', this.onServiceWorkerVersionUpdated)
onFn('Runtime.executionContextCreated', this.onExecutionContextCreated)
onFn('Runtime.executionContextDestroyed', this.onExecutionContextDestroyed)
this.on = onFn
this.off = offFn
this.send = sendDebuggerCommandFn
@@ -337,6 +341,18 @@ export class CdpAutomation implements CDPClient, AutomationMiddleware {
this.automation.onServiceWorkerVersionUpdated?.(params)
}
private onExecutionContextCreated = (event: Protocol.Runtime.ExecutionContextCreatedEvent) => {
debugVerbose('new execution context:', event)
this.executionContexts.set(event.context.id, event.context)
}
private onExecutionContextDestroyed = (event: Protocol.Runtime.ExecutionContextDestroyedEvent) => {
debugVerbose('removing execution context', event)
if (this.executionContexts.has(event.executionContextId)) {
this.executionContexts.delete(event.executionContextId)
}
}
private getAllCookies = (filter: CyCookieFilter) => {
return this.sendDebuggerCommandFn('Network.getAllCookies')
.then((result: Protocol.Network.GetAllCookiesResponse) => {
@@ -588,7 +604,13 @@ export class CdpAutomation implements CDPClient, AutomationMiddleware {
case 'collect:garbage':
return this.sendDebuggerCommandFn('HeapProfiler.collectGarbage')
case 'key:press':
return cdpKeyPress(data, this.sendDebuggerCommandFn)
if (this.gettingFrameTree) {
debugVerbose('awaiting frame tree')
await this.gettingFrameTree
}
return cdpKeyPress(data, this.sendDebuggerCommandFn, this.executionContexts, (await this.send('Page.getFrameTree')).frameTree)
default:
throw new Error(`No automation handler registered for: '${message}'`)
}
@@ -56,6 +56,8 @@ export default {
// we need to set this to bind our AUT intercepts correctly. Hopefully we can move this in the future on a more sure implementation
client.setTopLevelContextId(contexts[0].context)
automation.use(client.automationMiddleware)
await webdriverClient.browsingContextNavigate({
context: contexts[0].context,
url,
+4
View File
@@ -388,7 +388,11 @@ export function clearInstanceState (options: GracefulShutdownOptions = {}) {
}
export async function connectToNewSpec (browser: Browser, options: BrowserNewTabOpts, automation: Automation) {
debug('connectToNewSpec bidi')
await firefoxUtil.connectToNewSpecBiDi(options, automation, browserBidiClient!)
debug('registering middleware')
automation.use(browserBidiClient!.automationMiddleware)
}
export function connectToExisting () {
+4
View File
@@ -62,6 +62,10 @@ export class ProtocolManager implements ProtocolManagerShape {
} : undefined
}
get db () {
return this._db
}
async prepareProtocol (script: string, options: ProtocolManagerOptions) {
this._captureHash = base64url.fromBase64(crypto.createHash('SHA256').update(script).digest('base64'))
+6
View File
@@ -6,6 +6,7 @@ import os from 'os'
import { agent } from '@packages/network'
import Debug from 'debug'
import { requireScript } from './require_script'
import type Database from 'better-sqlite3'
interface StudioServer { default: StudioServerDefaultShape }
@@ -37,6 +38,10 @@ export class StudioManager implements StudioManagerShape {
return manager
}
setProtocolDb (db: Database.Database): void {
this.invokeSync('setProtocolDb', { isEssential: true }, db)
}
async setup ({ script, studioPath, studioHash, projectSlug, cloudApi }: SetupOptions): Promise<void> {
const { createStudioServer } = requireScript<StudioServer>(script).default
@@ -100,6 +105,7 @@ export class StudioManager implements StudioManagerShape {
}
try {
// @ts-expect-error - TS not associating the method & args properly, even though we know it's correct
return this._studioServer[method].apply(this._studioServer, args)
} catch (error: unknown) {
let actualError: Error
+4
View File
@@ -447,6 +447,10 @@ export class ProjectBase extends EE {
await browsers.connectProtocolToBrowser({ browser: this.browser, foundBrowsers: this.options.browsers, protocolManager: this.protocolManager })
if (this.protocolManager.db) {
this.ctx.coreData.studio?.setProtocolDb(this.protocolManager.db)
}
return { canAccessStudioAI: true }
}
+4 -4
View File
@@ -4,9 +4,9 @@ const { stackUtils } = require('@packages/errors')
// mocha-* is used to allow us to have later versions of mocha specified in devDependencies
// and prevents accidentally upgrading this one
// TODO: look into upgrading this to version in driver
const Mocha = require('mocha-7.0.1')
const mochaReporters = require('mocha-7.0.1/lib/reporters')
const mochaCreateStatsCollector = require('mocha-7.0.1/lib/stats-collector')
const Mocha = require('mocha-7.2.0')
const mochaReporters = require('mocha-7.2.0/lib/reporters')
const mochaCreateStatsCollector = require('mocha-7.2.0/lib/stats-collector')
const mochaColor = mochaReporters.Base.color
const mochaSymbols = mochaReporters.Base.symbols
@@ -16,7 +16,7 @@ const { overrideRequire } = require('./override_require')
// override calls to `require('mocha*')` when to always resolve with a mocha we control
// otherwise mocha will be resolved from project's node_modules and might not work with our code
const customReporterMochaPath = path.dirname(require.resolve('mocha-7.0.1'))
const customReporterMochaPath = path.dirname(require.resolve('mocha-7.2.0'))
const buildAttemptMessage = (currentRetry, totalRetries) => {
return `(Attempt ${currentRetry} of ${totalRetries})`
+2
View File
@@ -185,6 +185,8 @@ export class SocketBase {
message: T,
data: AutomationCommands[T]['dataType'],
) => {
debug('request: %s', message)
return automation.request(message, data, onAutomationClientRequestCallback)
}
+1 -1
View File
@@ -100,7 +100,7 @@
"mime-db": "1.45.0",
"minimatch": "3.1.2",
"minimist": "1.2.8",
"mocha-7.0.1": "npm:mocha@7.0.1",
"mocha-7.2.0": "npm:mocha@7.2.0",
"mocha-junit-reporter": "2.2.0",
"mocha-teamcity-reporter": "3.0.0",
"morgan": "1.9.1",
@@ -1,4 +1,4 @@
import type { Database } from 'better-sqlite3'
import type Database from 'better-sqlite3'
import type { AppCaptureProtocolInterface, CDPClient, ResponseStreamOptions } from '@packages/types'
import { Readable } from 'stream'
@@ -12,7 +12,7 @@ export class AppCaptureProtocol implements AppCaptureProtocolInterface {
responseStreamReceived (options: ResponseStreamOptions): Readable {
return Readable.from([])
}
beforeSpec ({ workingDirectory, archivePath, dbPath, db }: { workingDirectory: string, archivePath: string, dbPath: string, db: Database }): void {}
beforeSpec ({ workingDirectory, archivePath, dbPath, db }: { workingDirectory: string, archivePath: string, dbPath: string, db: Database.Database }): void {}
addRunnables (runnables: any): void {}
commandLogAdded (log: any): void {}
commandLogChanged (log: any): void {}
@@ -1,4 +1,5 @@
import type { StudioServerShape, StudioServerDefaultShape, StudioBrowser } from '@packages/types'
import type Database from 'better-sqlite3'
import type { Router } from 'express'
class StudioServer implements StudioServerShape {
@@ -9,6 +10,9 @@ class StudioServer implements StudioServerShape {
canAccessStudioAI (browser: StudioBrowser): Promise<boolean> {
return Promise.resolve(true)
}
setProtocolDb (db: Database.Database): void {
}
}
const studioServerDefault: StudioServerDefaultShape = {
@@ -3,32 +3,158 @@ import type { KeyPressSupportedKeys } from '@packages/types'
import type { SendDebuggerCommand } from '../../../../lib/browsers/cdp_automation'
import { cdpKeyPress, bidiKeyPress, BIDI_VALUE, CDP_KEYCODE } from '../../../../lib/automation/commands/key_press'
import { Client as WebdriverClient } from 'webdriver'
import type { Protocol } from 'devtools-protocol'
const { expect, sinon } = require('../../../spec_helper')
describe('key:press automation command', () => {
describe('cdp()', () => {
let sendFn: Sinon.SinonStub<Parameters<SendDebuggerCommand>, ReturnType<SendDebuggerCommand>>
const topFrameId = 'abc'
const autFrameId = 'def'
// @ts-expect-error
const topExecutionContext: Protocol.Runtime.ExecutionContextDescription = {
id: 123,
auxData: {
frameId: topFrameId,
},
}
// @ts-expect-error
const autExecutionContext: Protocol.Runtime.ExecutionContextDescription = {
id: 456,
auxData: {
frameId: autFrameId,
},
}
let executionContexts: Map<Protocol.Runtime.ExecutionContextId, Protocol.Runtime.ExecutionContextDescription> = new Map()
const autFrame = {
frame: {
id: autFrameId,
name: 'Your project',
},
}
const frameTree: Protocol.Page.FrameTree = {
// @ts-expect-error - partial mock of the frame tree
frame: {
id: topFrameId,
},
childFrames: [
// @ts-expect-error - partial mock of the frame tree
autFrame,
],
}
beforeEach(() => {
sendFn = sinon.stub()
executionContexts.set(topExecutionContext.id, topExecutionContext)
executionContexts.set(autExecutionContext.id, autExecutionContext)
})
it('dispaches a keydown followed by a keyup event to the provided send fn with the tab keycode', async () => {
await cdpKeyPress({ key: 'Tab' }, sendFn)
describe('when the aut frame does not have focus', () => {
const topActiveElement: Protocol.Runtime.EvaluateResponse = {
result: {
type: 'object',
description: 'a.some-link',
},
}
expect(sendFn).to.have.been.calledWith('Input.dispatchKeyEvent', {
type: 'keyDown',
keyIdentifier: CDP_KEYCODE.Tab,
key: 'Tab',
code: 'Tab',
beforeEach(() => {
sendFn.withArgs('Runtime.evaluate', {
expression: 'document.activeElement',
contextId: topExecutionContext.id,
}).resolves(topActiveElement)
})
expect(sendFn).to.have.been.calledWith('Input.dispatchKeyEvent', {
type: 'keyUp',
keyIdentifier: CDP_KEYCODE.Tab,
key: 'Tab',
code: 'Tab',
it('focuses the frame and sends keydown and keyup', async () => {
await cdpKeyPress({ key: 'Tab' }, sendFn, executionContexts, frameTree)
expect(sendFn).to.have.been.calledWith('Runtime.evaluate', {
expression: 'window.focus()',
contextId: autExecutionContext.id,
})
expect(sendFn).to.have.been.calledWith('Input.dispatchKeyEvent', {
type: 'keyDown',
keyIdentifier: CDP_KEYCODE.Tab,
key: 'Tab',
code: 'Tab',
})
expect(sendFn).to.have.been.calledWith('Input.dispatchKeyEvent', {
type: 'keyUp',
keyIdentifier: CDP_KEYCODE.Tab,
key: 'Tab',
code: 'Tab',
})
})
describe('when there are invalid execution contexts associated with the top frame', () => {
// @ts-expect-error - this is a "fake" partial
const invalidExecutionContext: Protocol.Runtime.ExecutionContextDescription = {
id: 9,
auxData: {
frameId: topFrameId,
},
}
beforeEach(() => {
executionContexts = new Map()
executionContexts.set(invalidExecutionContext.id, invalidExecutionContext)
executionContexts.set(topExecutionContext.id, topExecutionContext)
executionContexts.set(autExecutionContext.id, autExecutionContext)
sendFn.withArgs('Runtime.evaluate', {
expression: 'document.activeElement',
contextId: invalidExecutionContext.id,
}).rejects(new Error('Cannot find context with specified id'))
})
it('does not throw', async () => {
let thrown: any = undefined
try {
await cdpKeyPress({ key: 'Tab' }, sendFn, executionContexts, frameTree)
} catch (e) {
thrown = e
}
expect(thrown).to.be.undefined
})
})
})
describe('when the aut frame has focus', () => {
const topActiveElement: Protocol.Runtime.EvaluateResponse = {
result: {
type: 'object',
description: autFrame.frame.name,
},
}
beforeEach(() => {
sendFn.withArgs('Runtime.evaluate', {
expression: 'document.activeElement',
contextId: topExecutionContext.id,
}).resolves(topActiveElement)
})
it('dispaches a keydown followed by a keyup event to the provided send fn with the tab keycode', async () => {
await cdpKeyPress({ key: 'Tab' }, sendFn, executionContexts, frameTree)
expect(sendFn).to.have.been.calledWith('Input.dispatchKeyEvent', {
type: 'keyDown',
keyIdentifier: CDP_KEYCODE.Tab,
key: 'Tab',
code: 'Tab',
})
expect(sendFn).to.have.been.calledWith('Input.dispatchKeyEvent', {
type: 'keyUp',
keyIdentifier: CDP_KEYCODE.Tab,
key: 'Tab',
code: 'Tab',
})
})
})
@@ -37,15 +163,21 @@ describe('key:press automation command', () => {
// typescript would keep this from happening, but it hasn't yet
// been checked for correctness since being received by automation
// @ts-expect-error
await expect(cdpKeyPress({ key: 'foo' })).to.be.rejectedWith('foo is not supported by \'cy.press()\'.')
await expect(cdpKeyPress({ key: 'foo' }, sendFn, executionContexts, frameTree)).to.be.rejectedWith('foo is not supported by \'cy.press()\'.')
})
})
})
describe('bidi', () => {
let client: Sinon.SinonStubbedInstance<WebdriverClient>
let context: string
let autContext: string
let key: KeyPressSupportedKeys
const iframeElement = {
'element-6066-11e4-a52e-4f735466cecf': 'uuid-1',
}
const otherElement = {
'element-6066-11e4-a52e-4f735466cecf': 'uuid-2',
}
beforeEach(() => {
// can't create a sinon stubbed instance because webdriver doesn't export the constructor. Because it's known that
@@ -53,18 +185,55 @@ describe('key:press automation command', () => {
// @ts-expect-error
client = {
inputPerformActions: (sinon as Sinon.SinonSandbox).stub<Parameters<WebdriverClient['inputPerformActions']>, ReturnType<WebdriverClient['inputPerformActions']>>(),
getActiveElement: (sinon as Sinon.SinonSandbox).stub<Parameters<WebdriverClient['getActiveElement']>, ReturnType<WebdriverClient['getActiveElement']>>(),
findElement: (sinon as Sinon.SinonSandbox).stub<Parameters<WebdriverClient['findElement']>, ReturnType<WebdriverClient['findElement']>>(),
scriptEvaluate: (sinon as Sinon.SinonSandbox).stub<Parameters<WebdriverClient['scriptEvaluate']>, ReturnType<WebdriverClient['scriptEvaluate']>>(),
}
context = 'someContextId'
autContext = 'someContextId'
key = 'Tab'
client.inputPerformActions.resolves()
})
it('calls client.inputPerformActions with a keydown, pause, and keyup action', () => {
bidiKeyPress({ key }, client as WebdriverClient, context, 'idSuffix')
describe('when the aut iframe is not in focus', () => {
beforeEach(() => {
client.findElement.withArgs('css selector ', 'iframe.aut-iframe').resolves(iframeElement)
// @ts-expect-error - webdriver types show this returning a string, but it actually returns an ElementReference, same as findElement
client.getActiveElement.resolves(otherElement)
})
it('focuses the frame before dispatching keydown and keyup', async () => {
await bidiKeyPress({ key }, client as WebdriverClient, autContext, 'idSuffix')
expect(client.scriptEvaluate).to.have.been.calledWith({
expression: 'window.focus()',
target: { context: autContext },
awaitPromise: false,
})
expect(client.inputPerformActions.firstCall.args[0]).to.deep.equal({
context: autContext,
actions: [{
type: 'key',
id: 'someContextId-Tab-idSuffix',
actions: [
{ type: 'keyDown', value: BIDI_VALUE[key] },
{ type: 'keyUp', value: BIDI_VALUE[key] },
],
}],
})
})
})
it('calls client.inputPerformActions with a keydown and keyup action', async () => {
client.findElement.withArgs('css selector ', 'iframe.aut-iframe').resolves(iframeElement)
// @ts-expect-error - webdriver types show this returning a string, but it actually returns an ElementReference, same as findElement
client.getActiveElement.resolves(iframeElement)
await bidiKeyPress({ key }, client as WebdriverClient, autContext, 'idSuffix')
expect(client.inputPerformActions.firstCall.args[0]).to.deep.equal({
context,
context: autContext,
actions: [{
type: 'key',
id: 'someContextId-Tab-idSuffix',
@@ -33,7 +33,7 @@ describe('lib/browsers/bidi_automation', () => {
it('binds BIDI_EVENTS when a new instance is created', () => {
mockWebdriverClient.on = sinon.stub()
const bidiAutoInstance = BidiAutomation.create(mockWebdriverClient, mockAutomationClient)
BidiAutomation.create(mockWebdriverClient, mockAutomationClient)
expect(mockWebdriverClient.on).to.have.been.calledWith('network.beforeRequestSent')
expect(mockWebdriverClient.on).to.have.been.calledWith('network.responseStarted')
@@ -41,7 +41,6 @@ describe('lib/browsers/bidi_automation', () => {
expect(mockWebdriverClient.on).to.have.been.calledWith('network.fetchError')
expect(mockWebdriverClient.on).to.have.been.calledWith('browsingContext.contextCreated')
expect(mockWebdriverClient.on).to.have.been.calledWith('browsingContext.contextDestroyed')
expect(mockAutomationClient.use).to.have.been.calledWith(bidiAutoInstance.automationMiddleware)
})
it('unbinds BIDI_EVENTS when close() is called', () => {
@@ -0,0 +1,58 @@
require('../../spec_helper')
import FirefoxUtil from '../../../lib/browsers/firefox-util'
import sinon from 'sinon'
import { expect } from 'chai'
import { Automation } from '../../../lib/automation'
import { Client as WebDriverClient } from 'webdriver'
import { BidiAutomation } from '../../../lib/browsers/bidi_automation'
describe('Firefox-Util', () => {
let automation: sinon.SinonStubbedInstance<Automation>
let onError: sinon.SinonStub<[Error], void>
let url: string
let remotePort: number | undefined
let webdriverClient: Partial<sinon.SinonStubbedInstance<WebDriverClient>>
let useWebDriverBiDi: boolean
let stubbedBiDiAutomation: sinon.SinonStubbedInstance<BidiAutomation>
beforeEach(() => {
automation = sinon.createStubInstance(Automation)
onError = sinon.stub<[Error], void>()
url = 'http://some-url'
remotePort = 8000
webdriverClient = {
sessionSubscribe: sinon.stub<
Parameters<WebDriverClient['sessionSubscribe']>,
ReturnType<WebDriverClient['sessionSubscribe']>
>().resolves(),
browsingContextGetTree: sinon.stub<
Parameters<WebDriverClient['browsingContextGetTree']>,
ReturnType<WebDriverClient['browsingContextGetTree']>
>().resolves({ contexts: [{
context: 'abc',
children: [],
url: 'http://some-url',
userContext: 'user-context',
}] }),
browsingContextNavigate: sinon.stub<
Parameters<WebDriverClient['browsingContextNavigate']>,
ReturnType<WebDriverClient['browsingContextNavigate']>
>().resolves(),
}
useWebDriverBiDi = true
stubbedBiDiAutomation = sinon.createStubInstance(BidiAutomation)
// sinon's createStubInstance doesn't stub out this member method
stubbedBiDiAutomation.setTopLevelContextId = sinon.stub()
sinon.stub(BidiAutomation, 'create').returns(stubbedBiDiAutomation)
})
describe('.setup()', () => {
describe('when using bidi', () => {
it('registers the automation middleware with the automation system', async () => {
await FirefoxUtil.setup({ automation, onError, url, remotePort, webdriverClient, useWebDriverBiDi })
expect(automation.use).to.have.been.calledWith(stubbedBiDiAutomation.automationMiddleware)
})
})
})
})
@@ -119,6 +119,8 @@ describe('lib/browsers/firefox', () => {
context: mockContextId,
url: 'next-spec-url',
})
expect(this.automation.use).to.have.been.calledWith(bidiAutomationClient.automationMiddleware)
})
})
@@ -350,6 +350,20 @@ describe('lib/cloud/protocol', () => {
})
})
describe('.db', () => {
it('returns the database instance', () => {
const mockDb = { test: 'db' }
protocolManager['_db'] = mockDb
expect(protocolManager.db).to.equal(mockDb)
})
it('returns undefined when no database is set', () => {
expect(protocolManager.db).to.be.undefined
})
})
describe('.uploadCaptureArtifact()', () => {
let filePath: string
let fileSize: number
@@ -160,9 +160,27 @@ describe('lib/cloud/studio', () => {
name: 'chrome',
family: 'chromium',
channel: 'stable',
displayName: 'Chrome',
version: '120.0.0',
majorVersion: '120',
path: '/path/to/chrome',
isHeaded: true,
isHeadless: false,
})
expect(result).to.be.true
})
})
describe('setProtocolDb', () => {
it('sets the protocol database on the studio server', () => {
const mockDb = { test: 'db' }
sinon.stub(studio, 'setProtocolDb')
studioManager.setProtocolDb(mockDb as any)
expect(studio.setProtocolDb).to.be.calledWith(mockDb)
})
})
})
@@ -737,6 +737,7 @@ This option will not have an effect in Some-other-name. Tests that rely on web s
const mockSetupProtocol = sinon.stub()
const mockBeforeSpec = sinon.stub()
const mockAccessStudioLLM = sinon.stub().resolves(true)
const mockSetProtocolDb = sinon.stub()
this.project.spec = {}
this.project.ctx.coreData.studio = {
@@ -744,7 +745,9 @@ This option will not have an effect in Some-other-name. Tests that rely on web s
protocolManager: {
setupProtocol: mockSetupProtocol,
beforeSpec: mockBeforeSpec,
db: { test: 'db' },
},
setProtocolDb: mockSetProtocolDb,
}
sinon.stub(browsers, 'connectProtocolToBrowser').resolves()
@@ -793,6 +796,7 @@ This option will not have an effect in Some-other-name. Tests that rely on web s
})
expect(this.project['_protocolManager']).to.eq(this.project.ctx.coreData.studio.protocolManager)
expect(mockSetProtocolDb).to.be.calledWith({ test: 'db' })
})
it('passes onStudioInit callback with AI enabled but no protocol manager', async function () {
+3 -2
View File
@@ -1,4 +1,4 @@
import type { Database } from 'better-sqlite3'
import type Database from 'better-sqlite3'
import type ProtocolMapping from 'devtools-protocol/types/protocol-mapping'
import type { IncomingHttpHeaders } from 'http'
import type { Readable } from 'stream'
@@ -38,7 +38,7 @@ export interface AppCaptureProtocolCommon {
export interface AppCaptureProtocolInterface extends AppCaptureProtocolCommon {
getDbMetadata (): { offset: number, size: number } | undefined
beforeSpec ({ spec, workingDirectory, archivePath, dbPath, db }: { spec: FoundSpec & { instanceId: string }, workingDirectory: string, archivePath: string, dbPath: string, db: Database }): void
beforeSpec ({ spec, workingDirectory, archivePath, dbPath, db }: { spec: FoundSpec & { instanceId: string }, workingDirectory: string, archivePath: string, dbPath: string, db: Database.Database }): void
uploadStallSamplingInterval: () => number
connectToBrowser (cdpClient: CDPClient): Promise<void>
}
@@ -138,6 +138,7 @@ export interface ProtocolManagerShape extends AppCaptureProtocolCommon {
uploadCaptureArtifact(artifact: CaptureArtifact): Promise<UploadCaptureArtifactResult | undefined>
connectToBrowser (cdpClient: CDPClient): Promise<void>
close (): void
db?: Database.Database
}
type Response = {
@@ -2,6 +2,7 @@
import type { Router } from 'express'
import type { AxiosInstance } from 'axios'
import type Database from 'better-sqlite3'
interface RetryOptions {
maxAttempts: number
@@ -32,6 +33,7 @@ export interface StudioServerOptions {
export interface StudioServerShape {
initializeRoutes(router: Router): void
canAccessStudioAI(browser: Cypress.Browser): Promise<boolean>
setProtocolDb(database: Database.Database): void
}
export interface StudioServerDefaultShape {
+1 -1
View File
@@ -49,7 +49,7 @@ const getDependencyPathsToKeep = async (buildAppDir) => {
'node_modules/webpack-dev-server/lib/Server.js',
'node_modules/html-webpack-plugin-4/index.js',
'node_modules/html-webpack-plugin-5/index.js',
'node_modules/mocha-7.0.1/index.js',
'node_modules/mocha-7.2.0/index.js',
'packages/server/node_modules/webdriver/build/index.js',
// dependencies needed for geckodriver when running firefox in the binary
'node_modules/pump/index.js',
+112 -112
View File
@@ -73,7 +73,7 @@ exports['e2e events'] = `
"line": 7,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:3131/__cypress/tests?p=cypress/e2e/protocol.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:3131/__cypress/tests?p=cypress/e2e/protocol.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -114,7 +114,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -141,7 +141,7 @@ exports['e2e events'] = `
"line": 5,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:16:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:16:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -182,7 +182,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -209,7 +209,7 @@ exports['e2e events'] = `
"line": 12,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:24:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:24:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -250,7 +250,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -277,7 +277,7 @@ exports['e2e events'] = `
"line": 17,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:28:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:28:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -318,7 +318,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -345,7 +345,7 @@ exports['e2e events'] = `
"line": 22,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:32:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:32:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -386,7 +386,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -413,7 +413,7 @@ exports['e2e events'] = `
"line": 32,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:42:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:42:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -454,7 +454,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -481,7 +481,7 @@ exports['e2e events'] = `
"line": 39,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:50:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:50:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -522,7 +522,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -549,7 +549,7 @@ exports['e2e events'] = `
"line": 46,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:58:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:58:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -590,7 +590,7 @@ exports['e2e events'] = `
"line": 54,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -617,7 +617,7 @@ exports['e2e events'] = `
"line": 55,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:70:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:70:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": 0,
@@ -647,7 +647,7 @@ exports['e2e events'] = `
"line": 2,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:9:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:9:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -677,7 +677,7 @@ exports['e2e events'] = `
"line": 7,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -752,7 +752,7 @@ exports['e2e events'] = `
"line": 7,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:3131/__cypress/tests?p=cypress/e2e/protocol.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:3131/__cypress/tests?p=cypress/e2e/protocol.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -802,7 +802,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -838,7 +838,7 @@ exports['e2e events'] = `
"line": 5,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:16:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:16:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -890,7 +890,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -926,7 +926,7 @@ exports['e2e events'] = `
"line": 12,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:24:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:24:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -978,7 +978,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1014,7 +1014,7 @@ exports['e2e events'] = `
"line": 17,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:28:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:28:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1066,7 +1066,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1102,7 +1102,7 @@ exports['e2e events'] = `
"line": 22,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:32:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:32:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1154,7 +1154,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1190,7 +1190,7 @@ exports['e2e events'] = `
"line": 32,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:42:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:42:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1242,7 +1242,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1278,7 +1278,7 @@ exports['e2e events'] = `
"line": 39,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:50:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:50:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1330,7 +1330,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1366,7 +1366,7 @@ exports['e2e events'] = `
"line": 46,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:58:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:58:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1418,7 +1418,7 @@ exports['e2e events'] = `
"line": 54,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1454,7 +1454,7 @@ exports['e2e events'] = `
"line": 55,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:70:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:70:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1502,7 +1502,7 @@ exports['e2e events'] = `
"line": 2,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:9:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:9:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -1552,7 +1552,7 @@ exports['e2e events'] = `
"line": 7,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -1629,7 +1629,7 @@ exports['e2e events'] = `
"line": 7,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:3131/__cypress/tests?p=cypress/e2e/protocol.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:3131/__cypress/tests?p=cypress/e2e/protocol.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1676,7 +1676,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1713,7 +1713,7 @@ exports['e2e events'] = `
"line": 5,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:16:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:16:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1760,7 +1760,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1797,7 +1797,7 @@ exports['e2e events'] = `
"line": 12,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:24:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:24:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1844,7 +1844,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1881,7 +1881,7 @@ exports['e2e events'] = `
"line": 17,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:28:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:28:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -1928,7 +1928,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -1965,7 +1965,7 @@ exports['e2e events'] = `
"line": 22,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:32:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:32:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -2012,7 +2012,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2049,7 +2049,7 @@ exports['e2e events'] = `
"line": 32,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:42:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:42:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -2096,7 +2096,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2133,7 +2133,7 @@ exports['e2e events'] = `
"line": 39,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:50:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:50:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -2180,7 +2180,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2217,7 +2217,7 @@ exports['e2e events'] = `
"line": 46,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:58:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:58:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -2264,7 +2264,7 @@ exports['e2e events'] = `
"line": 54,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2301,7 +2301,7 @@ exports['e2e events'] = `
"line": 55,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:70:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:70:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"final": true,
"currentRetry": 0,
@@ -2347,7 +2347,7 @@ exports['e2e events'] = `
"line": 2,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:9:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:9:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -2393,7 +2393,7 @@ exports['e2e events'] = `
"line": 7,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -2455,7 +2455,7 @@ exports['e2e events'] = `
"line": 2,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/protocol.cy.js:11:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/protocol.cy.js:11:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -2479,7 +2479,7 @@ exports['e2e events'] = `
"line": 7,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/protocol.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/protocol.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -2578,7 +2578,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
},
"retries": -1,
"_slow": 10000,
@@ -2600,7 +2600,7 @@ exports['e2e events'] = `
"line": 5,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:16:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:16:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -2639,7 +2639,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2670,7 +2670,7 @@ exports['e2e events'] = `
"line": 12,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:24:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:24:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -2709,7 +2709,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2740,7 +2740,7 @@ exports['e2e events'] = `
"line": 17,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:28:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:28:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -2779,7 +2779,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2810,7 +2810,7 @@ exports['e2e events'] = `
"line": 22,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:32:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:32:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -2849,7 +2849,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2880,7 +2880,7 @@ exports['e2e events'] = `
"line": 32,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:42:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:42:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -2919,7 +2919,7 @@ exports['e2e events'] = `
"line": 4,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:13:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -2956,7 +2956,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
},
"retries": -1,
"_slow": 10000,
@@ -2978,7 +2978,7 @@ exports['e2e events'] = `
"line": 39,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:50:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:50:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -3017,7 +3017,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -3048,7 +3048,7 @@ exports['e2e events'] = `
"line": 46,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:58:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:58:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -3087,7 +3087,7 @@ exports['e2e events'] = `
"line": 38,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:47:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -3124,7 +3124,7 @@ exports['e2e events'] = `
"line": 54,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
},
"retries": -1,
"_slow": 10000,
@@ -3146,7 +3146,7 @@ exports['e2e events'] = `
"line": 55,
"column": 4,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:70:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:70:5)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:185:16)"
},
"currentRetry": 0,
"retries": -1,
@@ -3185,7 +3185,7 @@ exports['e2e events'] = `
"line": 54,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/test-isolation.cy.js:67:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)"
}
}
],
@@ -3259,7 +3259,7 @@ exports['e2e events'] = `
"line": 2,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:9:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:9:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -3290,7 +3290,7 @@ exports['e2e events'] = `
"line": 7,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.eval (http://localhost:2121/__cypress/tests?p=cypress/e2e/shadow-dom.cy.js:15:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -6184,7 +6184,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -6214,7 +6214,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -6244,7 +6244,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -6274,7 +6274,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -6322,7 +6322,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -6372,7 +6372,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -6420,7 +6420,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -6470,7 +6470,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -6520,7 +6520,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -6566,7 +6566,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -6612,7 +6612,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -6658,7 +6658,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -6717,7 +6717,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -6748,7 +6748,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -6820,7 +6820,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -6851,7 +6851,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -8003,7 +8003,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -8033,7 +8033,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -8063,7 +8063,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -8093,7 +8093,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": 0,
@@ -8141,7 +8141,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -8191,7 +8191,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -8239,7 +8239,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -8289,7 +8289,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -8339,7 +8339,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -8385,7 +8385,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -8431,7 +8431,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -8477,7 +8477,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"final": true,
"currentRetry": 0,
@@ -8536,7 +8536,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -8567,7 +8567,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -8639,7 +8639,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 5,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -8670,7 +8670,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = `
"line": 11,
"column": 2,
"whitespace": " ",
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
"stack": "Error\\n at Suite.<anonymous> (http://localhost:2121/__cypress/src/spec-0.js:22:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:141:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:42:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)"
},
"currentRetry": 0,
"retries": -1,
@@ -3,8 +3,11 @@
"version": "0",
"description": "tests adding user extension into Cypress",
"permissions": [
"tabs",
"webNavigation",
"tabs"
],
"host_permissions": [
"http://*/*",
"https://*/*",
"<all_urls>"
],
"content_scripts": [
@@ -17,11 +20,11 @@
"*://*/__/*"
],
"js": [
"background.js"
"content.js"
],
"run_at": "document_end",
"all_frames": true
}
],
"manifest_version": 2
"manifest_version": 3
}
+59 -58
View File
@@ -33,8 +33,8 @@
"./node_modules/jsonfile/index.js",
"./node_modules/make-dir/index.js",
"./node_modules/minimatch/minimatch.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/node.js",
"./node_modules/mocha-7.0.1/node_modules/glob/node_modules/minimatch/minimatch.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/node.js",
"./node_modules/mocha-7.2.0/node_modules/glob/node_modules/minimatch/minimatch.js",
"./node_modules/mocha-junit-reporter/node_modules/debug/src/node.js",
"./node_modules/mocha/node_modules/debug/src/node.js",
"./node_modules/morgan/node_modules/debug/src/node.js",
@@ -345,28 +345,28 @@
"./node_modules/minizlib/constants.js",
"./node_modules/minizlib/index.js",
"./node_modules/minizlib/node_modules/minipass/index.js",
"./node_modules/mocha-7.0.1/index.js",
"./node_modules/mocha-7.0.1/lib/hook.js",
"./node_modules/mocha-7.0.1/lib/mocha.js",
"./node_modules/mocha-7.0.1/lib/reporters/base.js",
"./node_modules/mocha-7.0.1/lib/reporters/dot.js",
"./node_modules/mocha-7.0.1/lib/reporters/landing.js",
"./node_modules/mocha-7.0.1/lib/reporters/list.js",
"./node_modules/mocha-7.0.1/lib/reporters/min.js",
"./node_modules/mocha-7.0.1/lib/reporters/nyan.js",
"./node_modules/mocha-7.0.1/lib/reporters/progress.js",
"./node_modules/mocha-7.0.1/lib/reporters/spec.js",
"./node_modules/mocha-7.0.1/lib/reporters/tap.js",
"./node_modules/mocha-7.0.1/lib/reporters/xunit.js",
"./node_modules/mocha-7.0.1/lib/runnable.js",
"./node_modules/mocha-7.0.1/lib/runner.js",
"./node_modules/mocha-7.0.1/lib/suite.js",
"./node_modules/mocha-7.0.1/lib/test.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/browser.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/index.js",
"./node_modules/mocha-7.0.1/node_modules/glob/glob.js",
"./node_modules/mocha-7.0.1/node_modules/glob/sync.js",
"./node_modules/mocha-7.0.1/node_modules/supports-color/index.js",
"./node_modules/mocha-7.2.0/index.js",
"./node_modules/mocha-7.2.0/lib/hook.js",
"./node_modules/mocha-7.2.0/lib/mocha.js",
"./node_modules/mocha-7.2.0/lib/reporters/base.js",
"./node_modules/mocha-7.2.0/lib/reporters/dot.js",
"./node_modules/mocha-7.2.0/lib/reporters/landing.js",
"./node_modules/mocha-7.2.0/lib/reporters/list.js",
"./node_modules/mocha-7.2.0/lib/reporters/min.js",
"./node_modules/mocha-7.2.0/lib/reporters/nyan.js",
"./node_modules/mocha-7.2.0/lib/reporters/progress.js",
"./node_modules/mocha-7.2.0/lib/reporters/spec.js",
"./node_modules/mocha-7.2.0/lib/reporters/tap.js",
"./node_modules/mocha-7.2.0/lib/reporters/xunit.js",
"./node_modules/mocha-7.2.0/lib/runnable.js",
"./node_modules/mocha-7.2.0/lib/runner.js",
"./node_modules/mocha-7.2.0/lib/suite.js",
"./node_modules/mocha-7.2.0/lib/test.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/browser.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/index.js",
"./node_modules/mocha-7.2.0/node_modules/glob/glob.js",
"./node_modules/mocha-7.2.0/node_modules/glob/sync.js",
"./node_modules/mocha-7.2.0/node_modules/supports-color/index.js",
"./node_modules/mocha-junit-reporter/index.js",
"./node_modules/mocha/index.js",
"./node_modules/mocha/lib/hook.js",
@@ -2229,7 +2229,6 @@
"./node_modules/is-regexp/index.js",
"./node_modules/is-stream/index.js",
"./node_modules/is-typedarray/index.js",
"./node_modules/isarray/index.js",
"./node_modules/isbinaryfile/lib/index.js",
"./node_modules/isexe/mode.js",
"./node_modules/isexe/windows.js",
@@ -2487,38 +2486,39 @@
"./node_modules/min-indent/index.js",
"./node_modules/minimatch/node_modules/brace-expansion/index.js",
"./node_modules/minimist/index.js",
"./node_modules/mocha-7.0.1/lib/browser/progress.js",
"./node_modules/mocha-7.0.1/lib/context.js",
"./node_modules/mocha-7.0.1/lib/errors.js",
"./node_modules/mocha-7.0.1/lib/growl.js",
"./node_modules/mocha-7.0.1/lib/interfaces/bdd.js",
"./node_modules/mocha-7.0.1/lib/interfaces/common.js",
"./node_modules/mocha-7.0.1/lib/interfaces/exports.js",
"./node_modules/mocha-7.0.1/lib/interfaces/index.js",
"./node_modules/mocha-7.0.1/lib/interfaces/qunit.js",
"./node_modules/mocha-7.0.1/lib/interfaces/tdd.js",
"./node_modules/mocha-7.0.1/lib/mocharc.json",
"./node_modules/mocha-7.0.1/lib/pending.js",
"./node_modules/mocha-7.0.1/lib/reporters/doc.js",
"./node_modules/mocha-7.0.1/lib/reporters/html.js",
"./node_modules/mocha-7.0.1/lib/reporters/index.js",
"./node_modules/mocha-7.0.1/lib/reporters/json-stream.js",
"./node_modules/mocha-7.0.1/lib/reporters/json.js",
"./node_modules/mocha-7.0.1/lib/reporters/markdown.js",
"./node_modules/mocha-7.0.1/lib/stats-collector.js",
"./node_modules/mocha-7.0.1/lib/utils.js",
"./node_modules/mocha-7.0.1/node_modules/brace-expansion/index.js",
"./node_modules/mocha-7.0.1/node_modules/debug/node_modules/ms/index.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/common.js",
"./node_modules/mocha-7.0.1/node_modules/glob/common.js",
"./node_modules/mocha-7.0.1/node_modules/has-flag/index.js",
"./node_modules/mocha-7.0.1/node_modules/mkdirp/index.js",
"./node_modules/mocha-7.0.1/node_modules/ms/index.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/implementation.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/index.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/polyfill.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/shim.js",
"./node_modules/mocha-7.0.1/package.json",
"./node_modules/mocha-7.2.0/lib/browser/progress.js",
"./node_modules/mocha-7.2.0/lib/context.js",
"./node_modules/mocha-7.2.0/lib/errors.js",
"./node_modules/mocha-7.2.0/lib/esm-utils.js",
"./node_modules/mocha-7.2.0/lib/growl.js",
"./node_modules/mocha-7.2.0/lib/interfaces/bdd.js",
"./node_modules/mocha-7.2.0/lib/interfaces/common.js",
"./node_modules/mocha-7.2.0/lib/interfaces/exports.js",
"./node_modules/mocha-7.2.0/lib/interfaces/index.js",
"./node_modules/mocha-7.2.0/lib/interfaces/qunit.js",
"./node_modules/mocha-7.2.0/lib/interfaces/tdd.js",
"./node_modules/mocha-7.2.0/lib/mocharc.json",
"./node_modules/mocha-7.2.0/lib/pending.js",
"./node_modules/mocha-7.2.0/lib/reporters/doc.js",
"./node_modules/mocha-7.2.0/lib/reporters/html.js",
"./node_modules/mocha-7.2.0/lib/reporters/index.js",
"./node_modules/mocha-7.2.0/lib/reporters/json-stream.js",
"./node_modules/mocha-7.2.0/lib/reporters/json.js",
"./node_modules/mocha-7.2.0/lib/reporters/markdown.js",
"./node_modules/mocha-7.2.0/lib/stats-collector.js",
"./node_modules/mocha-7.2.0/lib/utils.js",
"./node_modules/mocha-7.2.0/node_modules/brace-expansion/index.js",
"./node_modules/mocha-7.2.0/node_modules/debug/node_modules/ms/index.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/common.js",
"./node_modules/mocha-7.2.0/node_modules/glob/common.js",
"./node_modules/mocha-7.2.0/node_modules/has-flag/index.js",
"./node_modules/mocha-7.2.0/node_modules/mkdirp/index.js",
"./node_modules/mocha-7.2.0/node_modules/ms/index.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/implementation.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/index.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/polyfill.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/shim.js",
"./node_modules/mocha-7.2.0/package.json",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/index.js",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/lib/find-made.js",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/lib/mkdirp-manual.js",
@@ -3179,6 +3179,7 @@
"./node_modules/react-docgen/node_modules/doctrine/package.json",
"./node_modules/react-docgen/node_modules/strip-indent/index.js",
"./node_modules/readable-stream/lib/internal/streams/destroy.js",
"./node_modules/readable-stream/node_modules/isarray/index.js",
"./node_modules/recast/node_modules/ast-types/def/babel-core.js",
"./node_modules/recast/node_modules/ast-types/def/babel.js",
"./node_modules/recast/node_modules/ast-types/def/core-operators.js",
@@ -4229,5 +4230,5 @@
"./tooling/v8-snapshot/cache/darwin/snapshot-entry.js"
],
"deferredHashFile": "yarn.lock",
"deferredHash": "a83ec07b936fc8a327f5d598ffadd5d272171e21824eabfe913646bf73ca4d43"
"deferredHash": "712617e51b2b166bd89f4eeb0c7840516ff71d7c469fb06777924ee845bd6fb4"
}
+59 -58
View File
@@ -33,8 +33,8 @@
"./node_modules/jsonfile/index.js",
"./node_modules/make-dir/index.js",
"./node_modules/minimatch/minimatch.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/node.js",
"./node_modules/mocha-7.0.1/node_modules/glob/node_modules/minimatch/minimatch.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/node.js",
"./node_modules/mocha-7.2.0/node_modules/glob/node_modules/minimatch/minimatch.js",
"./node_modules/mocha-junit-reporter/node_modules/debug/src/node.js",
"./node_modules/mocha/node_modules/debug/src/node.js",
"./node_modules/morgan/node_modules/debug/src/node.js",
@@ -344,28 +344,28 @@
"./node_modules/minizlib/constants.js",
"./node_modules/minizlib/index.js",
"./node_modules/minizlib/node_modules/minipass/index.js",
"./node_modules/mocha-7.0.1/index.js",
"./node_modules/mocha-7.0.1/lib/hook.js",
"./node_modules/mocha-7.0.1/lib/mocha.js",
"./node_modules/mocha-7.0.1/lib/reporters/base.js",
"./node_modules/mocha-7.0.1/lib/reporters/dot.js",
"./node_modules/mocha-7.0.1/lib/reporters/landing.js",
"./node_modules/mocha-7.0.1/lib/reporters/list.js",
"./node_modules/mocha-7.0.1/lib/reporters/min.js",
"./node_modules/mocha-7.0.1/lib/reporters/nyan.js",
"./node_modules/mocha-7.0.1/lib/reporters/progress.js",
"./node_modules/mocha-7.0.1/lib/reporters/spec.js",
"./node_modules/mocha-7.0.1/lib/reporters/tap.js",
"./node_modules/mocha-7.0.1/lib/reporters/xunit.js",
"./node_modules/mocha-7.0.1/lib/runnable.js",
"./node_modules/mocha-7.0.1/lib/runner.js",
"./node_modules/mocha-7.0.1/lib/suite.js",
"./node_modules/mocha-7.0.1/lib/test.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/browser.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/index.js",
"./node_modules/mocha-7.0.1/node_modules/glob/glob.js",
"./node_modules/mocha-7.0.1/node_modules/glob/sync.js",
"./node_modules/mocha-7.0.1/node_modules/supports-color/index.js",
"./node_modules/mocha-7.2.0/index.js",
"./node_modules/mocha-7.2.0/lib/hook.js",
"./node_modules/mocha-7.2.0/lib/mocha.js",
"./node_modules/mocha-7.2.0/lib/reporters/base.js",
"./node_modules/mocha-7.2.0/lib/reporters/dot.js",
"./node_modules/mocha-7.2.0/lib/reporters/landing.js",
"./node_modules/mocha-7.2.0/lib/reporters/list.js",
"./node_modules/mocha-7.2.0/lib/reporters/min.js",
"./node_modules/mocha-7.2.0/lib/reporters/nyan.js",
"./node_modules/mocha-7.2.0/lib/reporters/progress.js",
"./node_modules/mocha-7.2.0/lib/reporters/spec.js",
"./node_modules/mocha-7.2.0/lib/reporters/tap.js",
"./node_modules/mocha-7.2.0/lib/reporters/xunit.js",
"./node_modules/mocha-7.2.0/lib/runnable.js",
"./node_modules/mocha-7.2.0/lib/runner.js",
"./node_modules/mocha-7.2.0/lib/suite.js",
"./node_modules/mocha-7.2.0/lib/test.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/browser.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/index.js",
"./node_modules/mocha-7.2.0/node_modules/glob/glob.js",
"./node_modules/mocha-7.2.0/node_modules/glob/sync.js",
"./node_modules/mocha-7.2.0/node_modules/supports-color/index.js",
"./node_modules/mocha-junit-reporter/index.js",
"./node_modules/mocha/index.js",
"./node_modules/mocha/lib/hook.js",
@@ -2230,7 +2230,6 @@
"./node_modules/is-regexp/index.js",
"./node_modules/is-stream/index.js",
"./node_modules/is-typedarray/index.js",
"./node_modules/isarray/index.js",
"./node_modules/isbinaryfile/lib/index.js",
"./node_modules/isexe/mode.js",
"./node_modules/isexe/windows.js",
@@ -2488,38 +2487,39 @@
"./node_modules/min-indent/index.js",
"./node_modules/minimatch/node_modules/brace-expansion/index.js",
"./node_modules/minimist/index.js",
"./node_modules/mocha-7.0.1/lib/browser/progress.js",
"./node_modules/mocha-7.0.1/lib/context.js",
"./node_modules/mocha-7.0.1/lib/errors.js",
"./node_modules/mocha-7.0.1/lib/growl.js",
"./node_modules/mocha-7.0.1/lib/interfaces/bdd.js",
"./node_modules/mocha-7.0.1/lib/interfaces/common.js",
"./node_modules/mocha-7.0.1/lib/interfaces/exports.js",
"./node_modules/mocha-7.0.1/lib/interfaces/index.js",
"./node_modules/mocha-7.0.1/lib/interfaces/qunit.js",
"./node_modules/mocha-7.0.1/lib/interfaces/tdd.js",
"./node_modules/mocha-7.0.1/lib/mocharc.json",
"./node_modules/mocha-7.0.1/lib/pending.js",
"./node_modules/mocha-7.0.1/lib/reporters/doc.js",
"./node_modules/mocha-7.0.1/lib/reporters/html.js",
"./node_modules/mocha-7.0.1/lib/reporters/index.js",
"./node_modules/mocha-7.0.1/lib/reporters/json-stream.js",
"./node_modules/mocha-7.0.1/lib/reporters/json.js",
"./node_modules/mocha-7.0.1/lib/reporters/markdown.js",
"./node_modules/mocha-7.0.1/lib/stats-collector.js",
"./node_modules/mocha-7.0.1/lib/utils.js",
"./node_modules/mocha-7.0.1/node_modules/brace-expansion/index.js",
"./node_modules/mocha-7.0.1/node_modules/debug/node_modules/ms/index.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/common.js",
"./node_modules/mocha-7.0.1/node_modules/glob/common.js",
"./node_modules/mocha-7.0.1/node_modules/has-flag/index.js",
"./node_modules/mocha-7.0.1/node_modules/mkdirp/index.js",
"./node_modules/mocha-7.0.1/node_modules/ms/index.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/implementation.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/index.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/polyfill.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/shim.js",
"./node_modules/mocha-7.0.1/package.json",
"./node_modules/mocha-7.2.0/lib/browser/progress.js",
"./node_modules/mocha-7.2.0/lib/context.js",
"./node_modules/mocha-7.2.0/lib/errors.js",
"./node_modules/mocha-7.2.0/lib/esm-utils.js",
"./node_modules/mocha-7.2.0/lib/growl.js",
"./node_modules/mocha-7.2.0/lib/interfaces/bdd.js",
"./node_modules/mocha-7.2.0/lib/interfaces/common.js",
"./node_modules/mocha-7.2.0/lib/interfaces/exports.js",
"./node_modules/mocha-7.2.0/lib/interfaces/index.js",
"./node_modules/mocha-7.2.0/lib/interfaces/qunit.js",
"./node_modules/mocha-7.2.0/lib/interfaces/tdd.js",
"./node_modules/mocha-7.2.0/lib/mocharc.json",
"./node_modules/mocha-7.2.0/lib/pending.js",
"./node_modules/mocha-7.2.0/lib/reporters/doc.js",
"./node_modules/mocha-7.2.0/lib/reporters/html.js",
"./node_modules/mocha-7.2.0/lib/reporters/index.js",
"./node_modules/mocha-7.2.0/lib/reporters/json-stream.js",
"./node_modules/mocha-7.2.0/lib/reporters/json.js",
"./node_modules/mocha-7.2.0/lib/reporters/markdown.js",
"./node_modules/mocha-7.2.0/lib/stats-collector.js",
"./node_modules/mocha-7.2.0/lib/utils.js",
"./node_modules/mocha-7.2.0/node_modules/brace-expansion/index.js",
"./node_modules/mocha-7.2.0/node_modules/debug/node_modules/ms/index.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/common.js",
"./node_modules/mocha-7.2.0/node_modules/glob/common.js",
"./node_modules/mocha-7.2.0/node_modules/has-flag/index.js",
"./node_modules/mocha-7.2.0/node_modules/mkdirp/index.js",
"./node_modules/mocha-7.2.0/node_modules/ms/index.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/implementation.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/index.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/polyfill.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/shim.js",
"./node_modules/mocha-7.2.0/package.json",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/index.js",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/lib/find-made.js",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/lib/mkdirp-manual.js",
@@ -3180,6 +3180,7 @@
"./node_modules/react-docgen/node_modules/doctrine/package.json",
"./node_modules/react-docgen/node_modules/strip-indent/index.js",
"./node_modules/readable-stream/lib/internal/streams/destroy.js",
"./node_modules/readable-stream/node_modules/isarray/index.js",
"./node_modules/recast/node_modules/ast-types/def/babel-core.js",
"./node_modules/recast/node_modules/ast-types/def/babel.js",
"./node_modules/recast/node_modules/ast-types/def/core-operators.js",
@@ -4232,5 +4233,5 @@
"./tooling/v8-snapshot/cache/linux/snapshot-entry.js"
],
"deferredHashFile": "yarn.lock",
"deferredHash": "a83ec07b936fc8a327f5d598ffadd5d272171e21824eabfe913646bf73ca4d43"
"deferredHash": "712617e51b2b166bd89f4eeb0c7840516ff71d7c469fb06777924ee845bd6fb4"
}
+59 -58
View File
@@ -33,8 +33,8 @@
"./node_modules/jsonfile/index.js",
"./node_modules/make-dir/index.js",
"./node_modules/minimatch/minimatch.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/node.js",
"./node_modules/mocha-7.0.1/node_modules/glob/node_modules/minimatch/minimatch.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/node.js",
"./node_modules/mocha-7.2.0/node_modules/glob/node_modules/minimatch/minimatch.js",
"./node_modules/mocha-junit-reporter/node_modules/debug/src/node.js",
"./node_modules/mocha/node_modules/debug/src/node.js",
"./node_modules/morgan/node_modules/debug/src/node.js",
@@ -346,28 +346,28 @@
"./node_modules/minizlib/constants.js",
"./node_modules/minizlib/index.js",
"./node_modules/minizlib/node_modules/minipass/index.js",
"./node_modules/mocha-7.0.1/index.js",
"./node_modules/mocha-7.0.1/lib/hook.js",
"./node_modules/mocha-7.0.1/lib/mocha.js",
"./node_modules/mocha-7.0.1/lib/reporters/base.js",
"./node_modules/mocha-7.0.1/lib/reporters/dot.js",
"./node_modules/mocha-7.0.1/lib/reporters/landing.js",
"./node_modules/mocha-7.0.1/lib/reporters/list.js",
"./node_modules/mocha-7.0.1/lib/reporters/min.js",
"./node_modules/mocha-7.0.1/lib/reporters/nyan.js",
"./node_modules/mocha-7.0.1/lib/reporters/progress.js",
"./node_modules/mocha-7.0.1/lib/reporters/spec.js",
"./node_modules/mocha-7.0.1/lib/reporters/tap.js",
"./node_modules/mocha-7.0.1/lib/reporters/xunit.js",
"./node_modules/mocha-7.0.1/lib/runnable.js",
"./node_modules/mocha-7.0.1/lib/runner.js",
"./node_modules/mocha-7.0.1/lib/suite.js",
"./node_modules/mocha-7.0.1/lib/test.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/browser.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/index.js",
"./node_modules/mocha-7.0.1/node_modules/glob/glob.js",
"./node_modules/mocha-7.0.1/node_modules/glob/sync.js",
"./node_modules/mocha-7.0.1/node_modules/supports-color/index.js",
"./node_modules/mocha-7.2.0/index.js",
"./node_modules/mocha-7.2.0/lib/hook.js",
"./node_modules/mocha-7.2.0/lib/mocha.js",
"./node_modules/mocha-7.2.0/lib/reporters/base.js",
"./node_modules/mocha-7.2.0/lib/reporters/dot.js",
"./node_modules/mocha-7.2.0/lib/reporters/landing.js",
"./node_modules/mocha-7.2.0/lib/reporters/list.js",
"./node_modules/mocha-7.2.0/lib/reporters/min.js",
"./node_modules/mocha-7.2.0/lib/reporters/nyan.js",
"./node_modules/mocha-7.2.0/lib/reporters/progress.js",
"./node_modules/mocha-7.2.0/lib/reporters/spec.js",
"./node_modules/mocha-7.2.0/lib/reporters/tap.js",
"./node_modules/mocha-7.2.0/lib/reporters/xunit.js",
"./node_modules/mocha-7.2.0/lib/runnable.js",
"./node_modules/mocha-7.2.0/lib/runner.js",
"./node_modules/mocha-7.2.0/lib/suite.js",
"./node_modules/mocha-7.2.0/lib/test.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/browser.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/index.js",
"./node_modules/mocha-7.2.0/node_modules/glob/glob.js",
"./node_modules/mocha-7.2.0/node_modules/glob/sync.js",
"./node_modules/mocha-7.2.0/node_modules/supports-color/index.js",
"./node_modules/mocha-junit-reporter/index.js",
"./node_modules/mocha/index.js",
"./node_modules/mocha/lib/hook.js",
@@ -2234,7 +2234,6 @@
"./node_modules/is-regexp/index.js",
"./node_modules/is-stream/index.js",
"./node_modules/is-typedarray/index.js",
"./node_modules/isarray/index.js",
"./node_modules/isbinaryfile/lib/index.js",
"./node_modules/isexe/mode.js",
"./node_modules/isexe/windows.js",
@@ -2492,38 +2491,39 @@
"./node_modules/min-indent/index.js",
"./node_modules/minimatch/node_modules/brace-expansion/index.js",
"./node_modules/minimist/index.js",
"./node_modules/mocha-7.0.1/lib/browser/progress.js",
"./node_modules/mocha-7.0.1/lib/context.js",
"./node_modules/mocha-7.0.1/lib/errors.js",
"./node_modules/mocha-7.0.1/lib/growl.js",
"./node_modules/mocha-7.0.1/lib/interfaces/bdd.js",
"./node_modules/mocha-7.0.1/lib/interfaces/common.js",
"./node_modules/mocha-7.0.1/lib/interfaces/exports.js",
"./node_modules/mocha-7.0.1/lib/interfaces/index.js",
"./node_modules/mocha-7.0.1/lib/interfaces/qunit.js",
"./node_modules/mocha-7.0.1/lib/interfaces/tdd.js",
"./node_modules/mocha-7.0.1/lib/mocharc.json",
"./node_modules/mocha-7.0.1/lib/pending.js",
"./node_modules/mocha-7.0.1/lib/reporters/doc.js",
"./node_modules/mocha-7.0.1/lib/reporters/html.js",
"./node_modules/mocha-7.0.1/lib/reporters/index.js",
"./node_modules/mocha-7.0.1/lib/reporters/json-stream.js",
"./node_modules/mocha-7.0.1/lib/reporters/json.js",
"./node_modules/mocha-7.0.1/lib/reporters/markdown.js",
"./node_modules/mocha-7.0.1/lib/stats-collector.js",
"./node_modules/mocha-7.0.1/lib/utils.js",
"./node_modules/mocha-7.0.1/node_modules/brace-expansion/index.js",
"./node_modules/mocha-7.0.1/node_modules/debug/node_modules/ms/index.js",
"./node_modules/mocha-7.0.1/node_modules/debug/src/common.js",
"./node_modules/mocha-7.0.1/node_modules/glob/common.js",
"./node_modules/mocha-7.0.1/node_modules/has-flag/index.js",
"./node_modules/mocha-7.0.1/node_modules/mkdirp/index.js",
"./node_modules/mocha-7.0.1/node_modules/ms/index.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/implementation.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/index.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/polyfill.js",
"./node_modules/mocha-7.0.1/node_modules/object.assign/shim.js",
"./node_modules/mocha-7.0.1/package.json",
"./node_modules/mocha-7.2.0/lib/browser/progress.js",
"./node_modules/mocha-7.2.0/lib/context.js",
"./node_modules/mocha-7.2.0/lib/errors.js",
"./node_modules/mocha-7.2.0/lib/esm-utils.js",
"./node_modules/mocha-7.2.0/lib/growl.js",
"./node_modules/mocha-7.2.0/lib/interfaces/bdd.js",
"./node_modules/mocha-7.2.0/lib/interfaces/common.js",
"./node_modules/mocha-7.2.0/lib/interfaces/exports.js",
"./node_modules/mocha-7.2.0/lib/interfaces/index.js",
"./node_modules/mocha-7.2.0/lib/interfaces/qunit.js",
"./node_modules/mocha-7.2.0/lib/interfaces/tdd.js",
"./node_modules/mocha-7.2.0/lib/mocharc.json",
"./node_modules/mocha-7.2.0/lib/pending.js",
"./node_modules/mocha-7.2.0/lib/reporters/doc.js",
"./node_modules/mocha-7.2.0/lib/reporters/html.js",
"./node_modules/mocha-7.2.0/lib/reporters/index.js",
"./node_modules/mocha-7.2.0/lib/reporters/json-stream.js",
"./node_modules/mocha-7.2.0/lib/reporters/json.js",
"./node_modules/mocha-7.2.0/lib/reporters/markdown.js",
"./node_modules/mocha-7.2.0/lib/stats-collector.js",
"./node_modules/mocha-7.2.0/lib/utils.js",
"./node_modules/mocha-7.2.0/node_modules/brace-expansion/index.js",
"./node_modules/mocha-7.2.0/node_modules/debug/node_modules/ms/index.js",
"./node_modules/mocha-7.2.0/node_modules/debug/src/common.js",
"./node_modules/mocha-7.2.0/node_modules/glob/common.js",
"./node_modules/mocha-7.2.0/node_modules/has-flag/index.js",
"./node_modules/mocha-7.2.0/node_modules/mkdirp/index.js",
"./node_modules/mocha-7.2.0/node_modules/ms/index.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/implementation.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/index.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/polyfill.js",
"./node_modules/mocha-7.2.0/node_modules/object.assign/shim.js",
"./node_modules/mocha-7.2.0/package.json",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/index.js",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/lib/find-made.js",
"./node_modules/mocha-junit-reporter/node_modules/mkdirp/lib/mkdirp-manual.js",
@@ -3184,6 +3184,7 @@
"./node_modules/react-docgen/node_modules/doctrine/package.json",
"./node_modules/react-docgen/node_modules/strip-indent/index.js",
"./node_modules/readable-stream/lib/internal/streams/destroy.js",
"./node_modules/readable-stream/node_modules/isarray/index.js",
"./node_modules/recast/node_modules/ast-types/def/babel-core.js",
"./node_modules/recast/node_modules/ast-types/def/babel.js",
"./node_modules/recast/node_modules/ast-types/def/core-operators.js",
@@ -4232,5 +4233,5 @@
"./tooling/v8-snapshot/cache/win32/snapshot-entry.js"
],
"deferredHashFile": "yarn.lock",
"deferredHash": "8314db54df0460f6d49850716cab3431b20fcf5dc94a69f6f5a6d87e071d0865"
"deferredHash": "4098770ca48f758aedb33b68d8f40029bffb3e9c1617cb46d0aa9f5edc0bd2ac"
}
@@ -43,14 +43,14 @@ export default [
'node_modules/stream-parser/node_modules/debug/src/node.js',
'node_modules/@cypress/commit-info/node_modules/debug/src/node.js',
'node_modules/@cypress/get-windows-proxy/node_modules/debug/src/node.js',
'node_modules/mocha-7.0.1/node_modules/debug/src/node.js',
'node_modules/mocha-7.2.0/node_modules/debug/src/node.js',
'node_modules/tcp-port-used/node_modules/debug/src/node.js',
'packages/data-context/node_modules/debug/src/node.js',
'packages/graphql/node_modules/debug/src/node.js',
'packages/net-stubbing/node_modules/debug/src/node.js',
'packages/server/node_modules/mocha/node_modules/debug/src/node.js',
'node_modules/minimatch/minimatch.js',
'node_modules/mocha-7.0.1/node_modules/glob/node_modules/minimatch/minimatch.js',
'node_modules/mocha-7.2.0/node_modules/glob/node_modules/minimatch/minimatch.js',
'packages/data-context/node_modules/minimatch/minimatch.js',
'packages/network/node_modules/minimatch/minimatch.js',
'packages/server/node_modules/glob/node_modules/minimatch/minimatch.js',
+50 -42
View File
@@ -11886,7 +11886,7 @@ cachedir@2.3.0, cachedir@^2.3.0:
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
@@ -11894,18 +11894,17 @@ call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
es-errors "^1.3.0"
function-bind "^1.1.2"
call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
dependencies:
call-bind-apply-helpers "^1.0.0"
es-define-property "^1.0.0"
es-errors "^1.3.0"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
set-function-length "^1.2.2"
call-bound@^1.0.2:
call-bound@^1.0.2, call-bound@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
@@ -12437,7 +12436,7 @@ ci-info@^2.0.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
ci-info@^3.2.0:
ci-info@^3.2.0, ci-info@^3.7.0:
version "3.9.0"
resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
@@ -17411,15 +17410,6 @@ fs-extra@^6.0.1:
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-extra@^7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-minipass@^2.0.0, fs-minipass@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
@@ -19627,7 +19617,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
is-ci@2.0.0, is-ci@^2.0.0:
is-ci@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
@@ -20663,7 +20653,7 @@ json-stable-stringify@1.0.1:
dependencies:
jsonify "~0.0.0"
json-stable-stringify@1.1.1, json-stable-stringify@^1.0.1:
json-stable-stringify@1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454"
integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==
@@ -20673,6 +20663,17 @@ json-stable-stringify@1.1.1, json-stable-stringify@^1.0.1:
jsonify "^0.0.1"
object-keys "^1.1.1"
json-stable-stringify@^1.0.1, json-stable-stringify@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.2.1.tgz#addb683c2b78014d0b78d704c2fcbdf0695a60e2"
integrity sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==
dependencies:
call-bind "^1.0.8"
call-bound "^1.0.3"
isarray "^2.0.5"
jsonify "^0.0.1"
object-keys "^1.1.1"
json-stringify-nice@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67"
@@ -22846,10 +22847,10 @@ mobx@6.13.6:
resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.13.6.tgz#3b80895c7c9df456efc86ae0b6983ccea1da6cc6"
integrity sha512-r19KNV0uBN4b+ER8Z0gA4y+MzDYIQ2SvOmn3fUrqPnWXdQfakd9yfbPBDBF/p5I+bd3N5Rk1fHONIvMay+bJGA==
"mocha-7.0.1@npm:mocha@7.0.1":
version "7.0.1"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.0.1.tgz#276186d35a4852f6249808c6dd4a1376cbf6c6ce"
integrity sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg==
"mocha-7.2.0@npm:mocha@7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604"
integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==
dependencies:
ansi-colors "3.2.3"
browser-stdout "1.3.1"
@@ -22862,9 +22863,9 @@ mobx@6.13.6:
growl "1.10.5"
he "1.2.0"
js-yaml "3.13.1"
log-symbols "2.2.0"
log-symbols "3.0.0"
minimatch "3.0.4"
mkdirp "0.5.1"
mkdirp "0.5.5"
ms "2.1.1"
node-environment-flags "1.0.6"
object.assign "4.1.0"
@@ -22872,8 +22873,8 @@ mobx@6.13.6:
supports-color "6.0.0"
which "1.3.1"
wide-align "1.1.3"
yargs "13.3.0"
yargs-parser "13.1.1"
yargs "13.3.2"
yargs-parser "13.1.2"
yargs-unparser "1.6.0"
mocha-banner@1.1.2:
@@ -23053,7 +23054,7 @@ mocha@7.1.2:
yargs-parser "13.1.2"
yargs-unparser "1.6.0"
mocha@^7.1.0:
mocha@7.2.0, mocha@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604"
integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==
@@ -25405,24 +25406,26 @@ pascalcase@^0.1.1:
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
patch-package@6.4.7:
version "6.4.7"
resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148"
integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==
patch-package@8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61"
integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==
dependencies:
"@yarnpkg/lockfile" "^1.1.0"
chalk "^2.4.2"
cross-spawn "^6.0.5"
chalk "^4.1.2"
ci-info "^3.7.0"
cross-spawn "^7.0.3"
find-yarn-workspace-root "^2.0.0"
fs-extra "^7.0.1"
is-ci "^2.0.0"
fs-extra "^9.0.0"
json-stable-stringify "^1.0.2"
klaw-sync "^6.0.0"
minimist "^1.2.0"
minimist "^1.2.6"
open "^7.4.2"
rimraf "^2.6.3"
semver "^5.6.0"
semver "^7.5.3"
slash "^2.0.0"
tmp "^0.0.33"
yaml "^2.2.2"
path-browserify@0.0.1:
version "0.0.1"
@@ -28301,7 +28304,7 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
set-function-length@^1.2.1:
set-function-length@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
@@ -33185,7 +33188,7 @@ yaml-eslint-parser@^1.2.2:
lodash "^4.17.21"
yaml "^2.0.0"
yaml@2.7.0, yaml@^2.0.0, yaml@^2.3.4, yaml@^2.4.1, yaml@^2.6.0:
yaml@2.7.0:
version "2.7.0"
resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98"
integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
@@ -33195,6 +33198,11 @@ yaml@^1.10.0:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
yaml@^2.0.0, yaml@^2.2.2, yaml@^2.3.4, yaml@^2.4.1, yaml@^2.6.0:
version "2.7.1"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6"
integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==
yargs-parser@13.1.1:
version "13.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"