From ab2f0c1fdb9dba91ee1ffdb3bf01768c6c670f33 Mon Sep 17 00:00:00 2001 From: Matt Schile Date: Mon, 13 Jan 2025 08:33:27 -0700 Subject: [PATCH 01/16] fix: update tsconfig files to match previous config (#30856) --- cli/CHANGELOG.md | 1 + packages/app/cypress/e2e/specs_list_e2e.cy.ts | 20 +++++++++++++++++++ packages/app/tsconfig.json | 2 ++ packages/config/tsconfig.json | 3 ++- packages/data-context/tsconfig.json | 3 ++- packages/driver/tsconfig.json | 1 - packages/errors/tsconfig.json | 3 ++- packages/extension/tsconfig.json | 1 + .../graphql/src/utils/nexusTypegenUtils.ts | 2 +- packages/graphql/tsconfig.json | 1 + packages/icons/tsconfig.json | 3 ++- packages/reporter/tsconfig.json | 1 + packages/scaffold-config/tsconfig.json | 3 ++- packages/telemetry/tsconfig.json | 1 + packages/ts/tsconfig.json | 6 +++--- 15 files changed, 41 insertions(+), 10 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 7443b288e350..79ff8a0fd828 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -55,6 +55,7 @@ in this [GitHub issue](https://github.com/cypress-io/cypress/issues/30447). Addr - Fixed a visibility issue for elements with `textContent` but without a width or height. Fixed in [#29688](https://github.com/cypress-io/cypress/pull/29688). Fixes [#29687](https://github.com/cypress-io/cypress/issues/29687). - Elements whose parent elements has `overflow: clip` and no height/width will now correctly show as hidden. Fixed in [#29778](https://github.com/cypress-io/cypress/pull/29778). Fixes [#23852](https://github.com/cypress-io/cypress/issues/23852). - The CSS pseudo-class `:dir()` is now supported when testing in Electron. Addresses [#29766](https://github.com/cypress-io/cypress/issues/29766). +- Fixed an issue where the spec filename was not updating correctly when changing specs in `open` mode. Fixes [#30852](https://github.com/cypress-io/cypress/issues/30852). **Misc:** diff --git a/packages/app/cypress/e2e/specs_list_e2e.cy.ts b/packages/app/cypress/e2e/specs_list_e2e.cy.ts index 03cfd8fbe936..51fbd1734f0f 100644 --- a/packages/app/cypress/e2e/specs_list_e2e.cy.ts +++ b/packages/app/cypress/e2e/specs_list_e2e.cy.ts @@ -127,6 +127,26 @@ describe('App: Spec List (E2E)', () => { cy.findByTestId('runnable-header').should('be.visible') }) + it('updates the spec filename when a new spec is selected', () => { + // load the first spec + cy.findAllByTestId('spec-item-link').contains('accounts_list.spec.js').click() + + // ensure the tests are loaded + cy.contains('[aria-controls=reporter-inline-specs-list]', 'Specs') + cy.findByText('Your tests are loading...').should('not.be.visible') + + // open the inline spec list + cy.get('body').type('f') + + // verify the first spec filename + cy.findByTestId('runnable-header').contains('accounts_list.spec.js') + + // select the second spec from the inline spec list + cy.findAllByTestId('spec-file-item').contains('accounts_new.spec.js').click() + // verify the spec filename was updated + cy.findByTestId('runnable-header').contains('accounts_new.spec.js') + }) + it('cannot open the Spec File Row link in a new tab with "cmd + click"', (done) => { let numTargets let newNumTargets diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json index 347deb1bb0be..a96c821699ab 100644 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -13,6 +13,7 @@ ], "compilerOptions": { "noImplicitThis": true, + "useDefineForClassFields": true, "paths": { "@cy/i18n": ["../frontend-shared/src/locales/i18n"], "@cy/components/*": ["../frontend-shared/src/components/*"], @@ -20,6 +21,7 @@ "@cy/store/*": ["../frontend-shared/src/store/*"], "@packages/*": ["../*"] }, + "allowJs": true, "types": [ "cypress", "cypress-real-events", diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json index cf4b494620ff..2f41e195210a 100644 --- a/packages/config/tsconfig.json +++ b/packages/config/tsconfig.json @@ -10,9 +10,10 @@ "allowJs": false, "rootDir": "src", "noImplicitAny": true, + "noUncheckedIndexedAccess": true, "types": ["node"], "typeRoots": [ "../../node_modules/@types" ], } -} \ No newline at end of file +} diff --git a/packages/data-context/tsconfig.json b/packages/data-context/tsconfig.json index 587382a7499e..bfc314d22947 100644 --- a/packages/data-context/tsconfig.json +++ b/packages/data-context/tsconfig.json @@ -11,6 +11,7 @@ "lib": ["esnext"], "allowJs": false, "noImplicitAny": true, + "noUncheckedIndexedAccess": true, "types": ["cypress"], } -} \ No newline at end of file +} diff --git a/packages/driver/tsconfig.json b/packages/driver/tsconfig.json index 33203e370049..72cb39c9fc63 100644 --- a/packages/driver/tsconfig.json +++ b/packages/driver/tsconfig.json @@ -9,7 +9,6 @@ "preserveWatchOutput": true, "sourceMap": true, "strictNullChecks": true, - "forceConsistentCasingInFileNames": true, "noEmit": true, "outDir": "dist", "noErrorTruncation": true, diff --git a/packages/errors/tsconfig.json b/packages/errors/tsconfig.json index dfb951b17cde..3959f1d1fc2b 100644 --- a/packages/errors/tsconfig.json +++ b/packages/errors/tsconfig.json @@ -7,5 +7,6 @@ "allowJs": false, "noImplicitAny": true, "noImplicitReturns": false, + "noUncheckedIndexedAccess": true, } -} \ No newline at end of file +} diff --git a/packages/extension/tsconfig.json b/packages/extension/tsconfig.json index aa782866197b..a1b8190d11c3 100644 --- a/packages/extension/tsconfig.json +++ b/packages/extension/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../ts/tsconfig.json", "compilerOptions": { "target": "es2015", + "allowJs": true, "strict": false } } diff --git a/packages/graphql/src/utils/nexusTypegenUtils.ts b/packages/graphql/src/utils/nexusTypegenUtils.ts index f209bc45af2e..0480e9e65082 100644 --- a/packages/graphql/src/utils/nexusTypegenUtils.ts +++ b/packages/graphql/src/utils/nexusTypegenUtils.ts @@ -92,7 +92,7 @@ const nexusTypegenDebounced = (cfg: NexusTypegenCfg) => { debounced[cfg.filePath] = debounced[cfg.filePath] ?? _.debounce(nexusTypegen, 500) - debounced[cfg.filePath](cfg) + debounced[cfg.filePath]?.(cfg) } interface NexusTypegenWatchCfg extends NexusTypegenCfg { diff --git a/packages/graphql/tsconfig.json b/packages/graphql/tsconfig.json index d7e45065be2f..b5aef75f955c 100644 --- a/packages/graphql/tsconfig.json +++ b/packages/graphql/tsconfig.json @@ -12,6 +12,7 @@ "lib": ["esnext"], "allowJs": false, "noImplicitAny": true, + "noUncheckedIndexedAccess": true, "types": [] }, } diff --git a/packages/icons/tsconfig.json b/packages/icons/tsconfig.json index 8995f295a6c7..315454e205ac 100644 --- a/packages/icons/tsconfig.json +++ b/packages/icons/tsconfig.json @@ -3,6 +3,7 @@ "compilerOptions": { "allowJs": false, "noImplicitAny": true, + "noUncheckedIndexedAccess": true, "outDir": "dist", }, -} \ No newline at end of file +} diff --git a/packages/reporter/tsconfig.json b/packages/reporter/tsconfig.json index be6c7cd941b3..99b6a70b5bf3 100644 --- a/packages/reporter/tsconfig.json +++ b/packages/reporter/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "../ts/tsconfig.json", "compilerOptions": { + "useDefineForClassFields": true, "types": [ "node", "cypress", diff --git a/packages/scaffold-config/tsconfig.json b/packages/scaffold-config/tsconfig.json index ae027f650086..dde12ed64ec4 100644 --- a/packages/scaffold-config/tsconfig.json +++ b/packages/scaffold-config/tsconfig.json @@ -12,6 +12,7 @@ "lib": ["esnext"], "allowJs": false, "noImplicitAny": true, + "noUncheckedIndexedAccess": true, "types": [] } -} \ No newline at end of file +} diff --git a/packages/telemetry/tsconfig.json b/packages/telemetry/tsconfig.json index d887c0486cc8..50c4b856c19c 100644 --- a/packages/telemetry/tsconfig.json +++ b/packages/telemetry/tsconfig.json @@ -6,6 +6,7 @@ "lib": ["esnext", "DOM"], "allowJs": false, "noImplicitAny": true, + "noUncheckedIndexedAccess": true, "types": ["cypress"], } } diff --git a/packages/ts/tsconfig.json b/packages/ts/tsconfig.json index 20f39e2b453c..7acbe3eff819 100644 --- a/packages/ts/tsconfig.json +++ b/packages/ts/tsconfig.json @@ -24,7 +24,7 @@ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Modules */ + /* Modules */ "module": "commonjs", /* Specify what module code is generated. */ // "rootDir": "./", /* Specify the root folder within your source files. */ "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ @@ -98,8 +98,8 @@ "noUnusedLocals": false, /* Enable error reporting when local variables aren't read. */ "noUnusedParameters": false, /* Raise an error when a function parameter isn't read. */ // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ From 2f013105b12924cb8babc88a590a668c8b67b2d6 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 13 Jan 2025 13:44:20 -0500 Subject: [PATCH 02/16] chore: add the `packageManager` key to `package.json` generated by corepack (#30860) --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e2bc39dd78bb..d59c8c983976 100644 --- a/package.json +++ b/package.json @@ -278,5 +278,6 @@ "devtools-protocol": "0.0.1346313", "sharp": "0.29.3", "vue-template-compiler": "2.6.12" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } From 249cfde3e20343a918cb36e2dfaf4b930f978b19 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Mon, 13 Jan 2025 15:57:32 -0500 Subject: [PATCH 03/16] fix: make sure scrollTo, window, document, title, go, reload, location, hash, and url commands can communicate with the AUT (#30858) --- cli/CHANGELOG.md | 1 + .../e2e/e2e/origin/commands/actions.cy.ts | 104 ++++++++++++++++-- .../e2e/e2e/origin/commands/viewport.cy.ts | 6 +- .../cypress/e2e/e2e/origin/navigation.cy.ts | 10 +- .../driver/src/cy/commands/actions/scroll.ts | 3 + packages/driver/src/cy/commands/location.ts | 9 ++ packages/driver/src/cy/commands/navigation.ts | 7 ++ packages/driver/src/cy/commands/window.ts | 7 ++ packages/graphql/schemas/cloud.graphql | 6 +- .../__snapshots__/web_security_spec.js | 39 +++++-- 10 files changed, 160 insertions(+), 32 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 79ff8a0fd828..3f9a6008c0ff 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -56,6 +56,7 @@ in this [GitHub issue](https://github.com/cypress-io/cypress/issues/30447). Addr - Elements whose parent elements has `overflow: clip` and no height/width will now correctly show as hidden. Fixed in [#29778](https://github.com/cypress-io/cypress/pull/29778). Fixes [#23852](https://github.com/cypress-io/cypress/issues/23852). - The CSS pseudo-class `:dir()` is now supported when testing in Electron. Addresses [#29766](https://github.com/cypress-io/cypress/issues/29766). - Fixed an issue where the spec filename was not updating correctly when changing specs in `open` mode. Fixes [#30852](https://github.com/cypress-io/cypress/issues/30852). +- `cy.origin()` now correctly errors when the [`cy.window()`](https://docs.cypress.io/api/commands/window), [`cy.document()`](https://docs.cypress.io/api/commands/document), [`cy.title()`](https://docs.cypress.io/api/commands/title), [`cy.url()`](https://docs.cypress.io/api/commands/url), [`cy.location()`](https://docs.cypress.io/api/commands/location) ,[`cy.hash()`](https://docs.cypress.io/api/commands/hash), [`cy.go()`](https://docs.cypress.io/api/commands/go), [`cy.reload()`](https://docs.cypress.io/api/commands/reload), and [`cy.scrollTo()`](https://docs.cypress.io/api/commands/scrollTo) commands are used outside of the `cy.origin()` command after the AUT has navigated away from the primary origin. Fixes [#30848](https://github.com/cypress-io/cypress/issues/30848). Fixed in [#30858](https://github.com/cypress-io/cypress/pull/30858). **Misc:** diff --git a/packages/driver/cypress/e2e/e2e/origin/commands/actions.cy.ts b/packages/driver/cypress/e2e/e2e/origin/commands/actions.cy.ts index 446ac4dcc2d0..3210ddda03cc 100644 --- a/packages/driver/cypress/e2e/e2e/origin/commands/actions.cy.ts +++ b/packages/driver/cypress/e2e/e2e/origin/commands/actions.cy.ts @@ -190,23 +190,109 @@ context('cy.origin actions', { browser: '!webkit' }, () => { context('cross-origin AUT errors', () => { // We only need to check .get here because the other commands are chained off of it. + // the exceptions are window(), document(), title(), url(), hash(), location(), go(), reload(), and scrollTo() + const assertOriginFailure = (err: Error, done: () => void) => { + expect(err.message).to.include(`The command was expected to run against origin \`http://localhost:3500\` but the application is at origin \`http://www.foobar.com:3500\`.`) + expect(err.message).to.include(`This commonly happens when you have either not navigated to the expected origin or have navigated away unexpectedly.`) + expect(err.message).to.include(`Using \`cy.origin()\` to wrap the commands run on \`http://www.foobar.com:3500\` will likely fix this issue.`) + expect(err.message).to.include(`cy.origin('http://www.foobar.com:3500', () => {\`\n\` \`\n\`})`) + + // make sure that the secondary origin failures do NOT show up as spec failures or AUT failures + expect(err.message).not.to.include(`The following error originated from your test code, not from Cypress`) + expect(err.message).not.to.include(`The following error originated from your application code, not from Cypress`) + done() + } + it('.get()', { defaultCommandTimeout: 50 }, (done) => { cy.on('fail', (err) => { expect(err.message).to.include(`Timed out retrying after 50ms:`) - expect(err.message).to.include(`The command was expected to run against origin \`http://localhost:3500\` but the application is at origin \`http://www.foobar.com:3500\`.`) - expect(err.message).to.include(`This commonly happens when you have either not navigated to the expected origin or have navigated away unexpectedly.`) - expect(err.message).to.include(`Using \`cy.origin()\` to wrap the commands run on \`http://www.foobar.com:3500\` will likely fix this issue.`) - expect(err.message).to.include(`cy.origin('http://www.foobar.com:3500', () => {\`\n\` \`\n\`})`) - - // make sure that the secondary origin failures do NOT show up as spec failures or AUT failures - expect(err.message).not.to.include(`The following error originated from your test code, not from Cypress`) - expect(err.message).not.to.include(`The following error originated from your application code, not from Cypress`) - done() + assertOriginFailure(err, done) }) cy.get('a[data-cy="dom-link"]').click() cy.get('#button') }) + + it('.window()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.window() + }) + + it('.document()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.document() + }) + + it('.title()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.title() + }) + + it('.url()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.url() + }) + + it('.hash()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.hash() + }) + + it('.location()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.location() + }) + + it('.go()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.go('back') + }) + + it('.reload()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.reload() + }) + + it('.scrollTo()', (done) => { + cy.on('fail', (err) => { + assertOriginFailure(err, done) + }) + + cy.get('a[data-cy="dom-link"]').click() + cy.scrollTo('bottom') + }) }) context('#consoleProps', () => { diff --git a/packages/driver/cypress/e2e/e2e/origin/commands/viewport.cy.ts b/packages/driver/cypress/e2e/e2e/origin/commands/viewport.cy.ts index bf0a18581245..c80845df6902 100644 --- a/packages/driver/cypress/e2e/e2e/origin/commands/viewport.cy.ts +++ b/packages/driver/cypress/e2e/e2e/origin/commands/viewport.cy.ts @@ -154,10 +154,10 @@ context('cy.origin viewport', { browser: '!webkit' }, () => { cy.window().its('innerHeight').should('eq', 480) cy.window().its('innerWidth').should('eq', 320) - }) - cy.window().then((win) => { - win.location.href = 'http://www.idp.com:3500/fixtures/primary-origin.html' + cy.window().then((win) => { + win.location.href = 'http://www.idp.com:3500/fixtures/primary-origin.html' + }) }) cy.origin('http://www.idp.com:3500', () => { diff --git a/packages/driver/cypress/e2e/e2e/origin/navigation.cy.ts b/packages/driver/cypress/e2e/e2e/origin/navigation.cy.ts index 0890dd42414e..d8bd44e16e70 100644 --- a/packages/driver/cypress/e2e/e2e/origin/navigation.cy.ts +++ b/packages/driver/cypress/e2e/e2e/origin/navigation.cy.ts @@ -192,11 +192,11 @@ describe('event timing', { browser: '!webkit' }, () => { cy.origin('http://www.foobar.com:3500', () => { cy.log('inside cy.origin foobar') - }) - - // This command is run from localhost against the cross-origin aut. Updating href is one of the few allowed commands. See https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#location - cy.window().then((win) => { - win.location.href = 'http://www.idp.com:3500/fixtures/primary-origin.html' + // Updating href is one of the few allowed commands. See https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#location + // However, not everything on the window is accessible. Therefore, we force window() to only run on the same origin as the AUT context + cy.window().then((win) => { + win.location.href = 'http://www.idp.com:3500/fixtures/primary-origin.html' + }) }) cy.origin('http://www.idp.com:3500', () => { diff --git a/packages/driver/src/cy/commands/actions/scroll.ts b/packages/driver/src/cy/commands/actions/scroll.ts index 04b7f31fa958..0529c27f7b88 100644 --- a/packages/driver/src/cy/commands/actions/scroll.ts +++ b/packages/driver/src/cy/commands/actions/scroll.ts @@ -325,6 +325,9 @@ export default (Commands, Cypress, cy, state) => { const subjectChain = cy.subjectChain() const ensureScrollability = () => { + // Make sure the scroll command can communicate with the AUT + Cypress.ensure.commandCanCommunicateWithAUT(cy) + try { subject = cy.getSubjectFromChain(subjectChain) diff --git a/packages/driver/src/cy/commands/location.ts b/packages/driver/src/cy/commands/location.ts index 911bd19eb57a..d68d93eb59aa 100644 --- a/packages/driver/src/cy/commands/location.ts +++ b/packages/driver/src/cy/commands/location.ts @@ -4,6 +4,9 @@ import $errUtils from '../../cypress/error_utils' export default (Commands, Cypress, cy) => { Commands.addQuery('url', function url (options: Partial = {}) { + // Make sure the url command can communicate with the AUT. + // otherwise, it yields an empty string + Cypress.ensure.commandCanCommunicateWithAUT(cy) this.set('timeout', options.timeout) Cypress.log({ message: '', hidden: options.log === false, timeout: options.timeout }) @@ -16,6 +19,8 @@ export default (Commands, Cypress, cy) => { }) Commands.addQuery('hash', function url (options: Partial = {}) { + // Make sure the hash command can communicate with the AUT. + Cypress.ensure.commandCanCommunicateWithAUT(cy) this.set('timeout', options.timeout) Cypress.log({ message: '', hidden: options.log === false, timeout: options.timeout }) @@ -26,6 +31,10 @@ export default (Commands, Cypress, cy) => { Commands.addQuery('location', function location (key, options: Partial = {}) { // normalize arguments allowing key + options to be undefined // key can represent the options + + // Make sure the location command can communicate with the AUT. + // otherwise the command just yields 'null' and the reason may be unclear to the user. + Cypress.ensure.commandCanCommunicateWithAUT(cy) if (_.isObject(key)) { options = key } diff --git a/packages/driver/src/cy/commands/navigation.ts b/packages/driver/src/cy/commands/navigation.ts index ce2956e95e5b..5283a1ecee70 100644 --- a/packages/driver/src/cy/commands/navigation.ts +++ b/packages/driver/src/cy/commands/navigation.ts @@ -616,6 +616,10 @@ export default (Commands, Cypress, cy, state, config) => { cleanup() } + // Make sure the reload command can communicate with the AUT. + // if we failed for any other reason, we need to display the correct error to the user. + Cypress.ensure.commandCanCommunicateWithAUT(cy) + return null }) }, @@ -700,6 +704,9 @@ export default (Commands, Cypress, cy, state, config) => { cleanup() } + // Make sure the go command can communicate with the AUT. + Cypress.ensure.commandCanCommunicateWithAUT(cy) + return null }) } diff --git a/packages/driver/src/cy/commands/window.ts b/packages/driver/src/cy/commands/window.ts index 87d8c074f92f..a42ef1b98472 100644 --- a/packages/driver/src/cy/commands/window.ts +++ b/packages/driver/src/cy/commands/window.ts @@ -89,6 +89,9 @@ export default (Commands, Cypress, cy, state) => { } Commands.addQuery('title', function title (options: Partial = {}) { + // Make sure the window command can communicate with the AUT. + // otherwise, it yields an empty string + Cypress.ensure.commandCanCommunicateWithAUT(cy) this.set('timeout', options.timeout) Cypress.log({ timeout: options.timeout, hidden: options.log === false }) @@ -96,6 +99,8 @@ export default (Commands, Cypress, cy, state) => { }) Commands.addQuery('window', function windowFn (options: Partial = {}) { + // Make sure the window command can communicate with the AUT. + Cypress.ensure.commandCanCommunicateWithAUT(cy) this.set('timeout', options.timeout) Cypress.log({ hidden: options.log === false, @@ -114,6 +119,8 @@ export default (Commands, Cypress, cy, state) => { }) Commands.addQuery('document', function documentFn (options: Partial = {}) { + // Make sure the document command can communicate with the AUT. + Cypress.ensure.commandCanCommunicateWithAUT(cy) this.set('timeout', options.timeout) Cypress.log({ hidden: options.log === false, diff --git a/packages/graphql/schemas/cloud.graphql b/packages/graphql/schemas/cloud.graphql index c8297ec9b5e2..4edac353bd6a 100644 --- a/packages/graphql/schemas/cloud.graphql +++ b/packages/graphql/schemas/cloud.graphql @@ -333,7 +333,7 @@ type CloudProjectNotFound { } union CloudProjectResult = - CloudProject + | CloudProject | CloudProjectNotFound | CloudProjectUnauthorized @@ -456,7 +456,7 @@ type CloudProjectSpec implements Node { } union CloudProjectSpecFlakyResult = - CloudFeatureNotEnabled + | CloudFeatureNotEnabled | CloudProjectSpecFlakyStatus type CloudProjectSpecFlakyStatus { @@ -500,7 +500,7 @@ type CloudProjectSpecNotFound { } union CloudProjectSpecResult = - CloudProjectSpec + | CloudProjectSpec | CloudProjectSpecNotFound | CloudProjectUnauthorized diff --git a/system-tests/__snapshots__/web_security_spec.js b/system-tests/__snapshots__/web_security_spec.js index 4be0bb77e096..16be6dac9785 100644 --- a/system-tests/__snapshots__/web_security_spec.js +++ b/system-tests/__snapshots__/web_security_spec.js @@ -30,32 +30,47 @@ exports['e2e web security / when enabled / fails'] = ` 1) web security fails when clicking to another origin: + CypressError: The command was expected to run against origin \`http://localhost:4466\` but the application is at origin \`https://www.foo.com:44665\`. - Timed out retrying after 4000ms - + expected - actual +This commonly happens when you have either not navigated to the expected origin or have navigated away unexpectedly. - +'https://www.foo.com:44665/cross_origin' - +Using \`cy.origin()\` to wrap the commands run on \`https://www.foo.com:44665\` will likely fix this issue. + +\`cy.origin('https://www.foo.com:44665', () => {\` +\` \` +\`})\` + +https://on.cypress.io/cy-visit-succeeded-but-commands-fail [stack trace lines] 2) web security fails when submitted a form and being redirected to another origin: + CypressError: The command was expected to run against origin \`http://localhost:4466\` but the application is at origin \`https://www.foo.com:44665\`. + +This commonly happens when you have either not navigated to the expected origin or have navigated away unexpectedly. - Timed out retrying after 4000ms - + expected - actual +Using \`cy.origin()\` to wrap the commands run on \`https://www.foo.com:44665\` will likely fix this issue. - +'https://www.foo.com:44665/cross_origin' - +\`cy.origin('https://www.foo.com:44665', () => {\` +\` \` +\`})\` + +https://on.cypress.io/cy-visit-succeeded-but-commands-fail [stack trace lines] 3) web security fails when using a javascript redirect to another origin: + CypressError: The command was expected to run against origin \`http://localhost:4466\` but the application is at origin \`https://www.foo.com:44665\`. + +This commonly happens when you have either not navigated to the expected origin or have navigated away unexpectedly. + +Using \`cy.origin()\` to wrap the commands run on \`https://www.foo.com:44665\` will likely fix this issue. - Timed out retrying after 4000ms - + expected - actual +\`cy.origin('https://www.foo.com:44665', () => {\` +\` \` +\`})\` - +'https://www.foo.com:44665/cross_origin' - +https://on.cypress.io/cy-visit-succeeded-but-commands-fail [stack trace lines] 4) web security From 0532f920893e29e00c9886a5f11465d94858540f Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 14 Jan 2025 15:33:33 -0500 Subject: [PATCH 04/16] chore: Open in IDE button for block and hook definitions in Runner UI (#30859) * init vitest unit test harness for @packages/driver * unit tests with stack examples * drop lines until __cypress/tests rather than just __cypress * changelog * changelog * remove vitest globals (unnecessary) from driver tsconfig * bump the number of junit reports expected from the unit tests job * fix ts-check error in scroll.ts * fix type definition for getInvocationDetails * rm packageManager key on package.json * remove junit reporter, as script that verifies result does not recognize it as valid * change @ts-expect-error to @ts-ignore for .scroll, as this ts check is apparently flaky * set expected mocha result back to 19 * add ct style stacks for cy in cy ct tests * re-enable junit reporter, update mocha result verification to be more lenient about the order of xml fields * persist binaries for this branch * expect 20 junit reports again * fix mocha v vitest verification? * add binary system test to verify correct file paths for codepoints in protocol events * fix invocation details system test filename * add required config for binary tests * build on darwin to fix binary system tests * build linux-arm64 for this branch * simplify binary test * build windows binary * rm binary system test * Update cli/CHANGELOG.md --- .circleci/workflows.yml | 7 +- package.json | 2 +- packages/driver/package.json | 6 +- .../driver/src/cy/commands/actions/scroll.ts | 1 + packages/driver/src/cypress/stack_utils.ts | 25 +- .../__fixtures__/spec_stackframes.json | 43 ++ .../test/unit/cypress/stack_utils.spec.ts | 68 +++ packages/driver/tsconfig.json | 6 +- packages/driver/vitest.config.mjs | 13 + scripts/verify-mocha-results.js | 21 +- system-tests/lib/serverStub.ts | 2 +- yarn.lock | 391 ++++++++++++++++-- 12 files changed, 541 insertions(+), 44 deletions(-) create mode 100644 packages/driver/test/unit/cypress/__fixtures__/spec_stackframes.json create mode 100644 packages/driver/test/unit/cypress/stack_utils.spec.ts create mode 100644 packages/driver/vitest.config.mjs diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index b69469b746be..79c4f8933ca2 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -44,6 +44,7 @@ macWorkflowFilters: &darwin-workflow-filters # 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: [ 'chore/update_vue_test_utils', << pipeline.git.branch >> ] + - equal: [ 'cacie/fix-hook-test-stack-analysis', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -55,6 +56,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters # 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: [ 'chore/update_binary_branch', << pipeline.git.branch >> ] + - equal: [ 'cacie/fix-hook-test-stack-analysis', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -78,6 +80,7 @@ windowsWorkflowFilters: &windows-workflow-filters # 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: [ 'ryanm/chore/electron-33-upgrade', << pipeline.git.branch >> ] + - equal: [ 'cacie/fix-hook-test-stack-analysis', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -153,7 +156,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" != "chore/update_vue_test_utils" ]]; then + echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "chore/update_vue_test_utils" && "$CIRCLE_BRANCH" != cacie/fix-hook-test-stack-analysis ]]; 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 @@ -1678,7 +1681,7 @@ jobs: # run type checking for each individual package - run: yarn lerna run types - verify-mocha-results: - expectedResultCount: 19 + expectedResultCount: 20 - store_test_results: path: /tmp/cypress # CLI tests generate HTML files with sample CLI command output diff --git a/package.json b/package.json index d59c8c983976..68fb27eb102e 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "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-all": "yarn stop-only --folder packages", "pretest": "yarn ensure-deps", - "test": "yarn lerna exec yarn test --scope=cypress --scope=@packages/{config,data-context,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}", + "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}", "test-debug": "lerna exec yarn test-debug --ignore=@packages/{driver,root,static,web-config}", "test-integration": "lerna exec yarn test-integration --ignore=@packages/{driver,root,static,web-config}", "test-mocha": "mocha --reporter spec scripts/spec.js", diff --git a/packages/driver/package.json b/packages/driver/package.json index 041cfc593e44..cd4e7531377a 100644 --- a/packages/driver/package.json +++ b/packages/driver/package.json @@ -10,7 +10,9 @@ "cypress:run:inject-document-domain": "node ../../scripts/cypress run --config-file ./cypress.config-injectDocumentDomain.ts", "postinstall": "patch-package", "lint": "eslint --ext .js,.jsx,.ts,.tsx,.json, .", - "start": "node -e 'console.log(require(`chalk`).red(`\nError:\n\tRunning \\`yarn start\\` is no longer needed for driver/cypress tests.\n\tWe now automatically spawn the server in e2e.setupNodeEvents config.\n\tChanges to the server will be watched and reloaded automatically.`))'" + "start": "node -e 'console.log(require(`chalk`).red(`\nError:\n\tRunning \\`yarn start\\` is no longer needed for driver/cypress tests.\n\tWe now automatically spawn the server in e2e.setupNodeEvents config.\n\tChanges to the server will be watched and reloaded automatically.`))'", + "test": "vitest run", + "test:watch": "vitest watch" }, "dependencies": {}, "devDependencies": { @@ -58,6 +60,7 @@ "jimp": "0.22.12", "jquery": "3.7.1", "js-cookie": "3.0.5", + "jsdom": "^26.0.0", "json-stable-stringify": "1.0.1", "lodash": "^4.17.21", "md5": "2.3.0", @@ -81,6 +84,7 @@ "url-parse": "1.5.10", "vanilla-text-mask": "5.1.1", "vite": "5.2.11", + "vitest": "^2.1.8", "webpack": "^5.88.2", "zone.js": "0.9.0" }, diff --git a/packages/driver/src/cy/commands/actions/scroll.ts b/packages/driver/src/cy/commands/actions/scroll.ts index 0529c27f7b88..c42c456e4423 100644 --- a/packages/driver/src/cy/commands/actions/scroll.ts +++ b/packages/driver/src/cy/commands/actions/scroll.ts @@ -128,6 +128,7 @@ export default (Commands, Cypress, cy, state) => { const scrollIntoView = () => { return new Promise((resolve, reject) => { // scroll our axes + // @ts-ignore - scrollTo does not define a 'done()' key on its config object. return $(options.$parent).scrollTo(options.$el, { axis: options.axis, easing: options.easing, diff --git a/packages/driver/src/cypress/stack_utils.ts b/packages/driver/src/cypress/stack_utils.ts index c28049d262bc..2dc557d370dc 100644 --- a/packages/driver/src/cypress/stack_utils.ts +++ b/packages/driver/src/cypress/stack_utils.ts @@ -108,9 +108,17 @@ const stackWithUserInvocationStackSpliced = (err, userInvocationStack): StackAnd } } -type InvocationDetails = MessageLineDetail | {} +type InvocationDetails = { + absoluteFile?: string + column?: number + line?: number + originalFile?: string + relativeFile?: string + stack: string +} -const getInvocationDetails = (specWindow, config) => { +// used to determine codeframes for hook/test/etc definitions rather than command invocations +const getInvocationDetails = (specWindow, config): InvocationDetails | undefined => { if (specWindow.Error) { let stack = (new specWindow.Error()).stack @@ -120,10 +128,19 @@ const getInvocationDetails = (specWindow, config) => { // firefox and chrome throw stacks that include lines from cypress // So we drop the lines until we get to the spec stackframe (includes __cypress) if (specWindow.Cypress) { - stack = stackWithLinesDroppedFromMarker(stack, '__cypress', true) + // The stack includes frames internal to cypress, after the spec stackframe. In order + // to determine the invocation details, the stack needs to be parsed and trimmed. + + // in Chrome and Firefox in E2E contexts, the spec stackframe includes the pattern, '__cypress/tests'. + if (stack.includes('__cypress/tests')) { + stack = stackWithLinesDroppedFromMarker(stack, '__cypress/tests', true) + } else { + // CT error contexts include the `__cypress` marker but not the `/tests` portion + stack = stackWithLinesDroppedFromMarker(stack, '__cypress', true) + } } - const details: InvocationDetails = getSourceDetailsForFirstLine(stack, config('projectRoot')) || {}; + const details: Omit = getSourceDetailsForFirstLine(stack, config('projectRoot')) || {}; (details as any).stack = stack diff --git a/packages/driver/test/unit/cypress/__fixtures__/spec_stackframes.json b/packages/driver/test/unit/cypress/__fixtures__/spec_stackframes.json new file mode 100644 index 000000000000..fa9f958c3acd --- /dev/null +++ b/packages/driver/test/unit/cypress/__fixtures__/spec_stackframes.json @@ -0,0 +1,43 @@ +{ + "invocationFile": "cypress/tests/some_spec.cy.ts", + "line": 80, + "column": 12, + "scenarios": [ + { + "browser": "chrome", + "build": "dev", + "specFrame": "http://localhost:3000/__cypress/tests?p=cypress/tests/some_spec.cy.ts", + "stack": "Error\n at eval (eval at getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts), :1:1)\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:98:32)\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:488:86)\n at Suite.create (cypress:///../driver/node_modules/mocha/lib/suite.js:33:10)\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:123:27)\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\n at eval (http://localhost:3000/__cypress/tests?p=cypress/tests/some_spec.cy.ts:80:12)\n at eval (http://localhost:3000/__cypress/tests?p=some/other/file.ts:212:3)" + }, + { + "browser": "chrome", + "build": "binary", + "specFrame": "http://localhost:3000/__cypress/tests?p=cypress/tests/some_spec.cy.ts", + "stack": "Error\n at eval (eval at getInvocationDetails (http://localhost:3000/__cypress/runner/cypress_runner.js:97352:7), :1:1)\n at Object.getInvocationDetails (http://localhost:3000/__cypress/runner/cypress_runner.js:97352:7)\n at Suite.addTest (http://localhost:3000/__cypress/runner/cypress_runner.js:144608:85)\n at context.it.context.specify (http://localhost:3000/__cypress/runner/cypress_runner.js:159706:13)\n at createRunnable (http://localhost:3000/__cypress/runner/cypress_runner.js:144272:31)\n at http://localhost:3000/__cypress/runner/cypress_runner.js:144333:14\n at Suite.eval (http://localhost:3000/__cypress/tests?p=cypress/tests/some_spec.cy.ts:80:12)\n at Object.create (http://localhost:3000/__cypress/runner/cypress_runner.js:159940:19)\n at context.describe.context.context (http://localhost:3000/__cypress/runner/cypress_runner.js:159659:27)\n at createRunnable (http://localhost:3000/__cypress/runner/cypress_runner.js:144272:31)" + }, + { + "browser": "chrome", + "build": "injectDocumentDomain", + "specFrame": "http://localhost:3000/__cypress/tests?p=cypress/tests/some_spec.cy.ts", + "stack": "Error\nat eval (http://localhost:3000/__cypress/tests?p=cypress/tests/some_spec.cy.ts:80:12)\nat eval (http://localhost:3000/__cypress/tests?p=some/other/file.ts:212:3)\nat eval (http://localhost:3000/__cypress/tests?p=some/other/file.ts:214:12)\nat eval ()" + }, + { + "browser": "firefox", + "build": "binary", + "specFrame": "http://localhost:3000/__cypress/tests?p=cypress/tests/some_spec.cy.ts", + "stack": "getInvocationDetails@http://localhost:3000/__cypress/runner/cypress_runner.js:97344:17\n__webpack_modules__ [as beforeEach] (cypress:///../driver/src/cypress/mocha.ts:546:23)\n at beforeEach (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:73:17)\n at Context. (http://localhost:4455/__cypress/src/@fs/private/var/folders/g4/15yxjhzs4bd01m_s6cscgxfw0000gq/T/cy-projects/runner-ct-specs/cypress/test.cy.ts:80:12)\n at __stackReplacementMarker (cypress:///../driver/src/cypress/cy.ts:85:13)\n at runnable.fn (cypress:///../driver/src/cypress/cy.ts:872:19)\n at callFn (cypress:///../driver/node_modules/mocha/lib/runnable.js:394:21)\n at Runnable.run (cypress:///../driver/node_modules/mocha/lib/runnable.js:381:7)" + } + ] +} \ No newline at end of file diff --git a/packages/driver/test/unit/cypress/stack_utils.spec.ts b/packages/driver/test/unit/cypress/stack_utils.spec.ts new file mode 100644 index 000000000000..5aadabde1206 --- /dev/null +++ b/packages/driver/test/unit/cypress/stack_utils.spec.ts @@ -0,0 +1,68 @@ +/** + * @vitest-environment jsdom + */ +import { vi, describe, it, expect, beforeEach } from 'vitest' + +import source_map_utils from '../../../src/cypress/source_map_utils' +import stack_utils from '../../../src/cypress/stack_utils' +import stackFrameFixture from './__fixtures__/spec_stackframes.json' + +vi.mock('../../../src/cypress/source_map_utils', () => { + return { + default: { + getSourcePosition: vi.fn(), + }, + } +}) + +describe('stack_utils', () => { + beforeEach(() => { + // @ts-expect-error + global.Cypress = { + config: vi.fn(), + } + + vi.resetAllMocks() + }) + + describe('getInvocationDetails', () => { + const { line, column, scenarios } = stackFrameFixture + + const projectRoot = '/foo/bar' + + let stack: string + + class MockError { + get stack () { + return stack + } + } + const config = () => projectRoot + + for (const scenario of scenarios) { + const { browser, build, specFrame, stack: scenarioStack } = scenario + + describe(`${browser}:${build}`, () => { + beforeEach(() => { + stack = scenarioStack + }) + + it('calls getSourcePosition with the correct file, line, and column', () => { + stack_utils.getInvocationDetails( + { Error: MockError, Cypress: {} }, + config, + ) + + // getSourcePosition is not called directly from getInvocationDetails, but via: + // - getSourceDetailsForFirstLine + // - getSourceDetailsForLine + expect(source_map_utils.getSourcePosition).toHaveBeenCalledWith(specFrame, expect.objectContaining({ + column, + line, + file: specFrame, + })) + }) + }) + } + }) +}) diff --git a/packages/driver/tsconfig.json b/packages/driver/tsconfig.json index 72cb39c9fc63..90b9b73471cf 100644 --- a/packages/driver/tsconfig.json +++ b/packages/driver/tsconfig.json @@ -12,9 +12,11 @@ "noEmit": true, "outDir": "dist", "noErrorTruncation": true, - "types": [] + "types": [], + "resolveJsonModule": true }, "exclude": [ - "dist" + "dist", + "test" ] } diff --git a/packages/driver/vitest.config.mjs b/packages/driver/vitest.config.mjs new file mode 100644 index 000000000000..0549d3593ad6 --- /dev/null +++ b/packages/driver/vitest.config.mjs @@ -0,0 +1,13 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + include: ['test/unit/**/*.spec.ts'], + environment: 'jsdom', + exclude: ['**/__fixtures__/**/*'], + reporters: [ + 'default', + ['junit', { suiteName: 'Driver Unit Tests', outputFile: '/tmp/cypress/junit/driver-test-results.xml' }], + ], + }, +}) diff --git a/scripts/verify-mocha-results.js b/scripts/verify-mocha-results.js index 35be807e5a2d..b830b41ed092 100644 --- a/scripts/verify-mocha-results.js +++ b/scripts/verify-mocha-results.js @@ -11,19 +11,34 @@ const la = require('lazy-ass') const path = require('path') const { readCircleEnv } = require('./circle-env') -const RESULT_REGEX = // +// mocha regex +const MOCHA_REGEX = // +// vitest regex +const VITEST_REGEX = // + const REPORTS_PATH = '/tmp/cypress/junit' const expectedResultCount = Number(process.argv[process.argv.length - 1]) -const parseResult = (xml) => { - const [name, time, tests, failures, skipped] = RESULT_REGEX.exec(xml).slice(1) +const parseMochaResult = (xml) => { + const [name, time, tests, failures, skipped] = MOCHA_REGEX.exec(xml).slice(1) + + return { + name, time, tests: Number(tests), failures: Number(failures), skipped: Number(skipped || 0), + } +} +const parseVitestResult = (xml) => { + const [name, tests, failures, , time, skipped] = VITEST_REGEX.exec(xml).slice(1) return { name, time, tests: Number(tests), failures: Number(failures), skipped: Number(skipped || 0), } } +const parseResult = (xml) => { + return MOCHA_REGEX.test(xml) ? parseMochaResult(xml) : parseVitestResult(xml) +} + const total = { tests: 0, failures: 0, skipped: 0 } console.log(`Looking for reports in ${REPORTS_PATH}`) diff --git a/system-tests/lib/serverStub.ts b/system-tests/lib/serverStub.ts index cf40802af117..7d069746317b 100644 --- a/system-tests/lib/serverStub.ts +++ b/system-tests/lib/serverStub.ts @@ -269,7 +269,7 @@ export const routeHandlers: Record = { }, } -export const createRoutes = (props: DeepPartial) => { +export const createRoutes = (props: DeepPartial = {}) => { return _.values(_.merge(_.cloneDeep(routeHandlers), props)) } diff --git a/yarn.lock b/yarn.lock index 527ec23f98fe..494eed93fcc0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -144,6 +144,17 @@ resolved "https://registry.yarnpkg.com/@ardatan/fetch-event-source/-/fetch-event-source-2.0.2.tgz#734aa3eaa0da456453d24d8dc7c14d5e366a8d21" integrity sha512-mcpz/wJ7s50PJIVz4OQ1Yim3w/AAchtYtIg0QMWiMR2cZZoI9t23hRyqeumtD5EmyJu0fxtjmQ5WY8GI86V4rQ== +"@asamuzakjp/css-color@^2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-2.8.2.tgz#817e84b0cc9f426379f4b549836f32b670c43649" + integrity sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w== + dependencies: + "@csstools/css-calc" "^2.1.1" + "@csstools/css-color-parser" "^3.0.7" + "@csstools/css-parser-algorithms" "^3.0.4" + "@csstools/css-tokenizer" "^3.0.3" + lru-cache "^11.0.2" + "@aws-crypto/crc32@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" @@ -2606,6 +2617,34 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@csstools/color-helpers@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.0.1.tgz#829f1c76f5800b79c51c709e2f36821b728e0e10" + integrity sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA== + +"@csstools/css-calc@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.1.tgz#a7dbc66627f5cf458d42aed14bda0d3860562383" + integrity sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag== + +"@csstools/css-color-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz#442d61d58e54ad258d52c309a787fceb33906484" + integrity sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA== + dependencies: + "@csstools/color-helpers" "^5.0.1" + "@csstools/css-calc" "^2.1.1" + +"@csstools/css-parser-algorithms@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz#74426e93bd1c4dcab3e441f5cc7ba4fb35d94356" + integrity sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A== + +"@csstools/css-tokenizer@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz#a5502c8539265fecbd873c1e395a890339f119c2" + integrity sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw== + "@cypress-design/color-constants@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@cypress-design/color-constants/-/color-constants-1.0.0.tgz#a8373c5eeeefc9b2040710b9159c96e6e2ac09b3" @@ -8888,6 +8927,16 @@ chai "^5.1.2" tinyrainbow "^1.2.0" +"@vitest/expect@2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.1.8.tgz#13fad0e8d5a0bf0feb675dcf1d1f1a36a1773bc1" + integrity sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw== + dependencies: + "@vitest/spy" "2.1.8" + "@vitest/utils" "2.1.8" + chai "^5.1.2" + tinyrainbow "^1.2.0" + "@vitest/mocker@2.1.4": version "2.1.4" resolved "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.4.tgz#0dc07edb9114f7f080a0181fbcdb16cd4a2d855d" @@ -8897,13 +8946,29 @@ estree-walker "^3.0.3" magic-string "^0.30.12" -"@vitest/pretty-format@2.1.4", "@vitest/pretty-format@^2.1.4": +"@vitest/mocker@2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-2.1.8.tgz#51dec42ac244e949d20009249e033e274e323f73" + integrity sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA== + dependencies: + "@vitest/spy" "2.1.8" + estree-walker "^3.0.3" + magic-string "^0.30.12" + +"@vitest/pretty-format@2.1.4": version "2.1.4" resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.4.tgz#fc31993bdc1ef5a6c1a4aa6844e7ba55658a4f9f" integrity sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww== dependencies: tinyrainbow "^1.2.0" +"@vitest/pretty-format@2.1.8", "@vitest/pretty-format@^2.1.4", "@vitest/pretty-format@^2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.8.tgz#88f47726e5d0cf4ba873d50c135b02e4395e2bca" + integrity sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ== + dependencies: + tinyrainbow "^1.2.0" + "@vitest/runner@2.1.4": version "2.1.4" resolved "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.4.tgz#f9346500bdd0be1c926daaac5d683bae87ceda2c" @@ -8912,6 +8977,14 @@ "@vitest/utils" "2.1.4" pathe "^1.1.2" +"@vitest/runner@2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.8.tgz#b0e2dd29ca49c25e9323ea2a45a5125d8729759f" + integrity sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg== + dependencies: + "@vitest/utils" "2.1.8" + pathe "^1.1.2" + "@vitest/snapshot@2.1.4": version "2.1.4" resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.4.tgz#ef8c3f605fbc23a32773256d37d3fdfd9b23d353" @@ -8921,6 +8994,15 @@ magic-string "^0.30.12" pathe "^1.1.2" +"@vitest/snapshot@2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.1.8.tgz#d5dc204f4b95dc8b5e468b455dfc99000047d2de" + integrity sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg== + dependencies: + "@vitest/pretty-format" "2.1.8" + magic-string "^0.30.12" + pathe "^1.1.2" + "@vitest/spy@2.1.4": version "2.1.4" resolved "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.4.tgz#4e90f9783437c5841a27c80f8fd84d7289a6100a" @@ -8928,6 +9010,13 @@ dependencies: tinyspy "^3.0.2" +"@vitest/spy@2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.1.8.tgz#bc41af3e1e6a41ae3b67e51f09724136b88fa447" + integrity sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg== + dependencies: + tinyspy "^3.0.2" + "@vitest/utils@2.1.4": version "2.1.4" resolved "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.4.tgz#6d67ac966647a21ce8bc497472ce230de3b64537" @@ -8937,6 +9026,15 @@ loupe "^3.1.2" tinyrainbow "^1.2.0" +"@vitest/utils@2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.8.tgz#f8ef85525f3362ebd37fd25d268745108d6ae388" + integrity sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA== + dependencies: + "@vitest/pretty-format" "2.1.8" + loupe "^3.1.2" + tinyrainbow "^1.2.0" + "@volar/language-core@2.2.4", "@volar/language-core@~2.2.4": version "2.2.4" resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-2.2.4.tgz#50a9194732988610d6b0d8d8732a07235e6464c8" @@ -9802,12 +9900,10 @@ agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" -agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" +agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== agentkeepalive@^4.2.1: version "4.2.1" @@ -13637,6 +13733,14 @@ csso@^5.0.5: dependencies: css-tree "~2.2.0" +cssstyle@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.2.1.tgz#5142782410fea95db66fb68147714a652a7c2381" + integrity sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw== + dependencies: + "@asamuzakjp/css-color" "^2.8.2" + rrweb-cssom "^0.8.0" + csstype@^2.6.8: version "2.6.17" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e" @@ -13732,6 +13836,14 @@ data-uri-to-buffer@^5.0.1: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz#db89a9e279c2ffe74f50637a59a32fb23b3e4d7c" integrity sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg== +data-urls@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" + integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== + dependencies: + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" + data-view-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" @@ -13904,6 +14016,11 @@ decamelize@^6.0.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== +decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + decode-uri-component@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -15246,10 +15363,10 @@ es-module-lexer@^0.9.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -es-module-lexer@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" - integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== +es-module-lexer@^1.2.1, es-module-lexer@^1.5.4: + version "1.6.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" + integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== es-object-atoms@^1.0.0: version "1.0.0" @@ -17102,7 +17219,7 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^4.0.0, form-data@~4.0.0: +form-data@^4.0.0, form-data@^4.0.1, form-data@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== @@ -18635,6 +18752,13 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +html-encoding-sniffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" + integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== + dependencies: + whatwg-encoding "^3.1.1" + html-entities@^2.3.2, html-entities@^2.4.0: version "2.5.2" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" @@ -18891,12 +19015,12 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5: - version "7.0.5" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" - integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== +https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5, https-proxy-agent@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: - agent-base "^7.0.2" + agent-base "^7.1.2" debug "4" human-interval@1.0.0: @@ -18953,7 +19077,7 @@ iconv-lite@0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@^0.6.2: +iconv-lite@0.6.3, iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -19824,6 +19948,11 @@ is-port-reachable@4.0.0: resolved "https://registry.yarnpkg.com/is-port-reachable/-/is-port-reachable-4.0.0.tgz#dac044091ef15319c8ab2f34604d8794181f8c2d" integrity sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig== +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + is-promise@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" @@ -20349,6 +20478,33 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdom@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-26.0.0.tgz#446dd1ad8cfc50df7e714e58f1f972c1763b354c" + integrity sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw== + dependencies: + cssstyle "^4.2.1" + data-urls "^5.0.0" + decimal.js "^10.4.3" + form-data "^4.0.1" + html-encoding-sniffer "^4.0.0" + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.6" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.16" + parse5 "^7.2.1" + rrweb-cssom "^0.8.0" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^5.0.0" + w3c-xmlserializer "^5.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^3.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.1.0" + ws "^8.18.0" + xml-name-validator "^5.0.0" + jsesc@2.5.2, jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -21734,6 +21890,11 @@ lru-cache@^10.0.0, lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== +lru-cache@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.2.tgz#fbd8e7cf8211f5e7e5d91905c415a3f55755ca39" + integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA== + lru-cache@^4.0.0, lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -22614,7 +22775,7 @@ mobx@6.13.5: resolved "https://registry.npmjs.org/mobx/-/mobx-6.13.5.tgz#957d9df88c7f8b4baa7c6f8bdcb6d68b432a6ed5" integrity sha512-/HTWzW2s8J1Gqt+WmUj5Y0mddZk+LInejADc79NJadrWla3rHzmRHki/mnEUH1AvOmbNTZ1BRbKxr8DSgfdjMA== -"mocha-7.0.1@npm:mocha@7.0.1", mocha@7.0.1: +"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== @@ -22731,6 +22892,36 @@ mocha@6.2.2: yargs-parser "13.1.1" yargs-unparser "1.6.0" +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== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "2.2.0" + minimatch "3.0.4" + mkdirp "0.5.1" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.0" + yargs-parser "13.1.1" + yargs-unparser "1.6.0" + mocha@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.0.tgz#c784f579ad0904d29229ad6cb1e2514e4db7d249" @@ -24071,6 +24262,11 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +nwsapi@^2.2.16: + version "2.2.16" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.16.tgz#177760bba02c351df1d2644e220c31dfec8cdb43" + integrity sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ== + nx@19.8.6, "nx@>=17.1.2 < 20": version "19.8.6" resolved "https://registry.yarnpkg.com/nx/-/nx-19.8.6.tgz#979a8b6183596a69fcaa975aeb74d01c37294309" @@ -25078,6 +25274,13 @@ parse5@^6.0.1: resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +parse5@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" + integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== + dependencies: + entities "^4.5.0" + parseqs@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" @@ -26116,10 +26319,10 @@ punycode@^1.2.4, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== pupa@^2.0.1: version "2.1.1" @@ -27484,6 +27687,11 @@ rollup@^4.13.0, rollup@^4.20.0, rollup@^4.23.0, rollup@^4.24.4: "@rollup/rollup-win32-x64-msvc" "4.27.4" fsevents "~2.3.2" +rrweb-cssom@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz#3021d1b4352fbf3b614aaeed0bc0d5739abe0bc2" + integrity sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw== + run-applescript@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-3.2.0.tgz#73fb34ce85d3de8076d511ea767c30d4fdfc918b" @@ -27618,6 +27826,13 @@ sax@>=0.6.0, sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + scheduler@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" @@ -29118,10 +29333,10 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -std-env@^3.7.0: - version "3.7.0" - resolved "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" - integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== +std-env@^3.7.0, std-env@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5" + integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w== stdio-mock@^1.1.0: version "1.1.0" @@ -29277,7 +29492,7 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -29303,6 +29518,15 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -29413,7 +29637,7 @@ stringify-object@^3.0.0, stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -29434,6 +29658,13 @@ strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -29773,6 +30004,11 @@ symbol-observable@^1.0.4, symbol-observable@^1.1.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + sync-fetch@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.3.0.tgz#77246da949389310ad978ab26790bb05f88d1335" @@ -30458,6 +30694,13 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +tr46@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-5.0.0.tgz#3b46d583613ec7283020d79019f1335723801cec" + integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== + dependencies: + punycode "^2.3.1" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -31708,6 +31951,17 @@ vite-node@2.1.4: pathe "^1.1.2" vite "^5.0.0" +vite-node@2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.1.8.tgz#9495ca17652f6f7f95ca7c4b568a235e0c8dbac5" + integrity sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg== + dependencies: + cac "^6.7.14" + debug "^4.3.7" + es-module-lexer "^1.5.4" + pathe "^1.1.2" + vite "^5.0.0" + vite-plugin-inspect@0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/vite-plugin-inspect/-/vite-plugin-inspect-0.8.4.tgz#1fcdf6703164d651db3f13c8c6610e1ced5108e1" @@ -31826,6 +32080,32 @@ vitest@2.1.4: vite-node "2.1.4" why-is-node-running "^2.3.0" +vitest@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-2.1.8.tgz#2e6a00bc24833574d535c96d6602fb64163092fa" + integrity sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ== + dependencies: + "@vitest/expect" "2.1.8" + "@vitest/mocker" "2.1.8" + "@vitest/pretty-format" "^2.1.8" + "@vitest/runner" "2.1.8" + "@vitest/snapshot" "2.1.8" + "@vitest/spy" "2.1.8" + "@vitest/utils" "2.1.8" + chai "^5.1.2" + debug "^4.3.7" + expect-type "^1.1.0" + magic-string "^0.30.12" + pathe "^1.1.2" + std-env "^3.8.0" + tinybench "^2.9.0" + tinyexec "^0.3.1" + tinypool "^1.0.1" + tinyrainbow "^1.2.0" + vite "^5.0.0" + vite-node "2.1.8" + why-is-node-running "^2.3.0" + vm-browserify@^1.0.1, vm-browserify@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -31923,6 +32203,13 @@ vuex@^4.0.0: resolved "https://registry.yarnpkg.com/vuex/-/vuex-4.0.0.tgz#ac877aa76a9c45368c979471e461b520d38e6cf5" integrity sha512-56VPujlHscP5q/e7Jlpqc40sja4vOhC4uJD1llBCWolVI8ND4+VzisDVkUMl+z5y0MpIImW6HjhNc+ZvuizgOw== +w3c-xmlserializer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== + dependencies: + xml-name-validator "^5.0.0" + wait-port@1.1.0, wait-port@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz#e5d64ee071118d985e2b658ae7ad32b2ce29b6b5" @@ -32019,6 +32306,11 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + "webpack-4@npm:webpack@^4": version "4.46.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" @@ -32275,11 +32567,31 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== + dependencies: + iconv-lite "0.6.3" + whatwg-fetch@>=0.10.0, whatwg-fetch@^3.4.1: version "3.6.2" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== + +whatwg-url@^14.0.0, whatwg-url@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.1.0.tgz#fffebec86cc8e6c2a657e50dc606207b870f0ab3" + integrity sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w== + dependencies: + tr46 "^5.0.0" + webidl-conversions "^7.0.0" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -32468,7 +32780,7 @@ workerpool@6.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -32511,6 +32823,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -32654,6 +32975,11 @@ xhr@^2.0.1: parse-headers "^2.0.0" xtend "^4.0.0" +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== + xml-parse-from-string@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" @@ -32690,6 +33016,11 @@ xmlbuilder@~11.0.0: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xmlhttprequest-ssl@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz#03b713873b01659dfa2c1c5d056065b27ddc2de6" From 932cea281661b240b020b5c9601494b3eb710857 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 07:41:38 -0600 Subject: [PATCH 05/16] chore: Update v8 snapshot cache - darwin (#30873) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- .../cache/darwin/snapshot-meta.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json index 327ba9224d0b..de3678d560ea 100644 --- a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json @@ -2585,6 +2585,14 @@ "./node_modules/nexus/dist/typegenTypeHelpers.js", "./node_modules/nexus/package.json", "./node_modules/nice-try/src/index.js", + "./node_modules/node-fetch/node_modules/tr46/index.js", + "./node_modules/node-fetch/node_modules/tr46/lib/mappingTable.json", + "./node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js", "./node_modules/node-forge/lib/baseN.js", "./node_modules/node-forge/lib/forge.js", "./node_modules/node-forge/lib/md.js", @@ -3356,8 +3364,6 @@ "./node_modules/tough-cookie/lib/validators.js", "./node_modules/tough-cookie/lib/version.js", "./node_modules/tough-cookie/node_modules/universalify/index.js", - "./node_modules/tr46/index.js", - "./node_modules/tr46/lib/mappingTable.json", "./node_modules/trash/index.js", "./node_modules/trash/lib/linux.js", "./node_modules/trash/lib/macos.js", @@ -3501,12 +3507,6 @@ "./node_modules/value-or-promise/build/main/ValueOrPromise.js", "./node_modules/value-or-promise/build/main/index.js", "./node_modules/vary/index.js", - "./node_modules/webidl-conversions/lib/index.js", - "./node_modules/whatwg-url/lib/URL-impl.js", - "./node_modules/whatwg-url/lib/URL.js", - "./node_modules/whatwg-url/lib/public-api.js", - "./node_modules/whatwg-url/lib/url-state-machine.js", - "./node_modules/whatwg-url/lib/utils.js", "./node_modules/which/which.js", "./node_modules/widest-line/index.js", "./node_modules/win-version-info/index.js", @@ -4189,5 +4189,5 @@ "./tooling/v8-snapshot/cache/darwin/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "8539f3ac8dc0ba925401274bc586b68465f4a839f4a36e74ea695ae160c2149f" + "deferredHash": "a0daf93ef6eaedc3d63c4958f7f40244dcae4429548749da989756606a7f54f7" } \ No newline at end of file From 55178c7dfaad38b16a18a7642ddc63f0309f7b99 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 07:41:58 -0600 Subject: [PATCH 06/16] chore: Update v8 snapshot cache - linux (#30874) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- .../v8-snapshot/cache/linux/snapshot-meta.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tooling/v8-snapshot/cache/linux/snapshot-meta.json b/tooling/v8-snapshot/cache/linux/snapshot-meta.json index 8e9bdef6dfe2..2d2c9c48051a 100644 --- a/tooling/v8-snapshot/cache/linux/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/linux/snapshot-meta.json @@ -2586,6 +2586,14 @@ "./node_modules/nexus/dist/typegenTypeHelpers.js", "./node_modules/nexus/package.json", "./node_modules/nice-try/src/index.js", + "./node_modules/node-fetch/node_modules/tr46/index.js", + "./node_modules/node-fetch/node_modules/tr46/lib/mappingTable.json", + "./node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js", "./node_modules/node-forge/lib/baseN.js", "./node_modules/node-forge/lib/forge.js", "./node_modules/node-forge/lib/md.js", @@ -3359,8 +3367,6 @@ "./node_modules/tough-cookie/lib/validators.js", "./node_modules/tough-cookie/lib/version.js", "./node_modules/tough-cookie/node_modules/universalify/index.js", - "./node_modules/tr46/index.js", - "./node_modules/tr46/lib/mappingTable.json", "./node_modules/trash/index.js", "./node_modules/trash/lib/linux.js", "./node_modules/trash/lib/macos.js", @@ -3504,12 +3510,6 @@ "./node_modules/value-or-promise/build/main/ValueOrPromise.js", "./node_modules/value-or-promise/build/main/index.js", "./node_modules/vary/index.js", - "./node_modules/webidl-conversions/lib/index.js", - "./node_modules/whatwg-url/lib/URL-impl.js", - "./node_modules/whatwg-url/lib/URL.js", - "./node_modules/whatwg-url/lib/public-api.js", - "./node_modules/whatwg-url/lib/url-state-machine.js", - "./node_modules/whatwg-url/lib/utils.js", "./node_modules/which/which.js", "./node_modules/widest-line/index.js", "./node_modules/win-version-info/index.js", @@ -4192,5 +4192,5 @@ "./tooling/v8-snapshot/cache/linux/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "8539f3ac8dc0ba925401274bc586b68465f4a839f4a36e74ea695ae160c2149f" + "deferredHash": "a0daf93ef6eaedc3d63c4958f7f40244dcae4429548749da989756606a7f54f7" } \ No newline at end of file From 9da988c46e68ff5bc762207bc5f191b3253a1612 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 07:42:20 -0600 Subject: [PATCH 07/16] chore: Update v8 snapshot cache - windows (#30875) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- .../v8-snapshot/cache/win32/snapshot-meta.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tooling/v8-snapshot/cache/win32/snapshot-meta.json b/tooling/v8-snapshot/cache/win32/snapshot-meta.json index a1882a249f87..37596557295e 100644 --- a/tooling/v8-snapshot/cache/win32/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/win32/snapshot-meta.json @@ -2590,6 +2590,14 @@ "./node_modules/nexus/dist/typegenTypeHelpers.js", "./node_modules/nexus/package.json", "./node_modules/nice-try/src/index.js", + "./node_modules/node-fetch/node_modules/tr46/index.js", + "./node_modules/node-fetch/node_modules/tr46/lib/mappingTable.json", + "./node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js", + "./node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js", "./node_modules/node-forge/lib/baseN.js", "./node_modules/node-forge/lib/forge.js", "./node_modules/node-forge/lib/md.js", @@ -3360,8 +3368,6 @@ "./node_modules/tough-cookie/lib/validators.js", "./node_modules/tough-cookie/lib/version.js", "./node_modules/tough-cookie/node_modules/universalify/index.js", - "./node_modules/tr46/index.js", - "./node_modules/tr46/lib/mappingTable.json", "./node_modules/trash/index.js", "./node_modules/trash/lib/linux.js", "./node_modules/trash/lib/macos.js", @@ -3505,12 +3511,6 @@ "./node_modules/value-or-promise/build/main/ValueOrPromise.js", "./node_modules/value-or-promise/build/main/index.js", "./node_modules/vary/index.js", - "./node_modules/webidl-conversions/lib/index.js", - "./node_modules/whatwg-url/lib/URL-impl.js", - "./node_modules/whatwg-url/lib/URL.js", - "./node_modules/whatwg-url/lib/public-api.js", - "./node_modules/whatwg-url/lib/url-state-machine.js", - "./node_modules/whatwg-url/lib/utils.js", "./node_modules/which/which.js", "./node_modules/widest-line/index.js", "./node_modules/wonka/dist/wonka.js", @@ -4192,5 +4192,5 @@ "./tooling/v8-snapshot/cache/win32/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "cac2a04bea7f60a30ddbb63147faa962e1fa215cb71fc140f600732a8d80d907" + "deferredHash": "8a4c6fa48c051e4ad6b6358540a034c5018fc3439b27934c40b2c9435171071b" } \ No newline at end of file From a7c8ad510a39e006295346624734e18571e5d340 Mon Sep 17 00:00:00 2001 From: Ryan Manuel Date: Wed, 15 Jan 2025 09:28:23 -0600 Subject: [PATCH 08/16] chore: bump circle cache (#30878) --- .circleci/cache-version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/cache-version.txt b/.circleci/cache-version.txt index f82a827eb247..5f61494081b3 100644 --- a/.circleci/cache-version.txt +++ b/.circleci/cache-version.txt @@ -1,3 +1,3 @@ # Bump this version to force CI to re-create the cache from scratch. -12-11-24 +1-15-24 From c31050afe6ef190f2cc8bc1c537cc54df1a5e097 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 15 Jan 2025 11:47:49 -0500 Subject: [PATCH 09/16] chore: release @cypress/vite-dev-server-v6.0.1 [skip ci] --- npm/vite-dev-server/CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/npm/vite-dev-server/CHANGELOG.md b/npm/vite-dev-server/CHANGELOG.md index b70ea7d88400..6f32b2850ffa 100644 --- a/npm/vite-dev-server/CHANGELOG.md +++ b/npm/vite-dev-server/CHANGELOG.md @@ -1,3 +1,10 @@ +# [@cypress/vite-dev-server-v6.0.1](https://github.com/cypress-io/cypress/compare/@cypress/vite-dev-server-v6.0.0...@cypress/vite-dev-server-v6.0.1) (2025-01-15) + + +### Bug Fixes + +* add cypress 14 as a peer dependency for vite-dev-server ([#30857](https://github.com/cypress-io/cypress/issues/30857)) ([107d3ed](https://github.com/cypress-io/cypress/commit/107d3eda5e71029d879f5d21289c0aca16af3091)) + # [@cypress/vite-dev-server-v6.0.0](https://github.com/cypress-io/cypress/compare/@cypress/vite-dev-server-v5.2.1...@cypress/vite-dev-server-v6.0.0) (2025-01-08) From 0a3ad9ab82a68147ca98ebf324449a6a46a5e499 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 15 Jan 2025 11:48:05 -0500 Subject: [PATCH 10/16] chore: release @cypress/webpack-dev-server-v4.0.1 [skip ci] --- npm/webpack-dev-server/CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/npm/webpack-dev-server/CHANGELOG.md b/npm/webpack-dev-server/CHANGELOG.md index cd55e3579513..11bcfef22717 100644 --- a/npm/webpack-dev-server/CHANGELOG.md +++ b/npm/webpack-dev-server/CHANGELOG.md @@ -1,3 +1,10 @@ +# [@cypress/webpack-dev-server-v4.0.1](https://github.com/cypress-io/cypress/compare/@cypress/webpack-dev-server-v4.0.0...@cypress/webpack-dev-server-v4.0.1) (2025-01-15) + + +### Bug Fixes + +* add cypress 14 as a peer dependency for webpack-dev-server ([#30862](https://github.com/cypress-io/cypress/issues/30862)) ([a46c2dd](https://github.com/cypress-io/cypress/commit/a46c2dde8dc9778f2048fb5f67a74de2a9377b4b)) + # [@cypress/webpack-dev-server-v4.0.0](https://github.com/cypress-io/cypress/compare/@cypress/webpack-dev-server-v3.11.0...@cypress/webpack-dev-server-v4.0.0) (2025-01-08) From 94d18c3b7a3ef8c038ca65d993ddee63c72b903a Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Wed, 15 Jan 2025 16:03:05 -0500 Subject: [PATCH 11/16] chore: update Cypress 14 release date to January 16th (#30880) --- cli/CHANGELOG.md | 2 +- packages/launchpad/src/migration/MajorVersionWelcome.cy.tsx | 2 +- packages/launchpad/src/migration/MajorVersionWelcome.vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 3f9a6008c0ff..a7e76592c4fd 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,7 +1,7 @@ ## 14.0.0 -_Released 1/7/2024 (PENDING)_ +_Released 1/16/2025 (PENDING)_ **Breaking Changes:** diff --git a/packages/launchpad/src/migration/MajorVersionWelcome.cy.tsx b/packages/launchpad/src/migration/MajorVersionWelcome.cy.tsx index a850b9586f85..2a2a01bac99a 100644 --- a/packages/launchpad/src/migration/MajorVersionWelcome.cy.tsx +++ b/packages/launchpad/src/migration/MajorVersionWelcome.cy.tsx @@ -35,7 +35,7 @@ describe('', { viewportWidth: 1280, viewportHeight: 1400 }) it('renders correct time for releases and overflows correctly', () => { - cy.clock(Date.UTC(2025, 0, 10)) + cy.clock(Date.UTC(2025, 0, 16)) cy.mount() cy.contains('14.0.0 Released just now') cy.contains('13.0.0 Released last year') diff --git a/packages/launchpad/src/migration/MajorVersionWelcome.vue b/packages/launchpad/src/migration/MajorVersionWelcome.vue index 9fc00069bca9..ea559e974d97 100644 --- a/packages/launchpad/src/migration/MajorVersionWelcome.vue +++ b/packages/launchpad/src/migration/MajorVersionWelcome.vue @@ -212,7 +212,7 @@ const versionReleaseDates = computed(() => { '11': useTimeAgo(Date.UTC(2022, 10, 8)).value, '12': useTimeAgo(Date.UTC(2022, 11, 6)).value, '13': useTimeAgo(Date.UTC(2023, 7, 29)).value, - '14': useTimeAgo(Date.UTC(2025, 0, 10)).value, + '14': useTimeAgo(Date.UTC(2025, 0, 16)).value, } }) From 90b017c1c19991517fcfbdc8e906db8b0cae0588 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Thu, 16 Jan 2025 08:53:56 -0500 Subject: [PATCH 12/16] chore: release Cypress 14.0.0 (#30883) --- cli/CHANGELOG.md | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index a7e76592c4fd..97718e27af3b 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,7 +1,7 @@ ## 14.0.0 -_Released 1/16/2025 (PENDING)_ +_Released 1/16/2025_ **Breaking Changes:** @@ -10,8 +10,8 @@ _Released 1/16/2025 (PENDING)_ - Prebuilt binaries for Linux are no longer compatible with Linux distributions based on glibc <2.28, for example: Ubuntu 14-18, RHEL 7, CentOS 7, Amazon Linux 2. Addresses [#29601](https://github.com/cypress-io/cypress/issues/29601). - Cypress now only officially supports the latest 3 major versions of Chrome, Firefox, and Edge - older browser versions may still work, but we recommend keeping your browsers up to date to ensure compatibility with Cypress. A warning will no longer be displayed on browser selection in the Launchpad for any 'unsupported' browser versions. Additionally, the undocumented `minSupportedVersion` property has been removed from `Cypress.browser`. Addressed in [#30462](https://github.com/cypress-io/cypress/pull/30462). - The `cy.origin()` command must now be used when navigating between subdomains. Because this is a fairly disruptive change for users who frequently navigate between subdomains, a new configuration option is being introduced. `injectDocumentDomain` can be set to `true` in order to re-enable the injection of `document.domain` by Cypress. This configuration option is marked as deprecated and you will receive a warning when Cypress is launched with this option set to `true`. It will be removed in Cypress 15. Addressed in [#30770](https://github.com/cypress-io/cypress/pull/30770). Addresses [#25806](https://github.com/cypress-io/cypress/issues/25806), [#25987](https://github.com/cypress-io/cypress/issues/25987), [#27528](https://github.com/cypress-io/cypress/issues/27528), [#29445](https://github.com/cypress-io/cypress/issues/29445), [#29590](https://github.com/cypress-io/cypress/issues/29590) and [#30571](https://github.com/cypress-io/cypress/issues/30571). -- It is no longer possible to make a `fetch` or `XMLHttpRequest` request from the `about:blank` page in Electron (i.e. `cy.window().then((win) => win.fetch(''))`). You must use `cy.request` instead or perform some form of initial navigation via `cy.visit()`. Addressed in [#29547](https://github.com/cypress-io/cypress/pull/30394). -- The `experimentalJustInTimeCompile` configuration option for component testing has been replaced with a `justInTimeCompile` option that is `true` by default. This option will only compile resources directly related to your spec, compiling them 'just-in-time' before spec execution. This should result in improved memory management and performance for component tests in `cypress open` and `cypress run` modes, in particular for large component testing suites. `justInTimeCompile` is now only supported for [`webpack`](https://www.npmjs.com/package/webpack). Addresses [#30234](https://github.com/cypress-io/cypress/issues/30234). Addressed in [#30402](https://github.com/cypress-io/cypress/pull/30402). +- It is no longer possible to make a `fetch` or `XMLHttpRequest` request from the `about:blank` page in Electron (i.e. `cy.window().then((win) => win.fetch(''))`). You must use `cy.request` instead or perform some form of initial navigation via `cy.visit()`. Addressed in [#30394](https://github.com/cypress-io/cypress/pull/30394). +- The `experimentalJustInTimeCompile` configuration option for component testing has been replaced with a `justInTimeCompile` option that is `true` by default. This option will only compile resources directly related to your spec, compiling them 'just-in-time' before spec execution. This should result in improved memory management and performance for component tests in `cypress open` and `cypress run` modes, in particular for large component testing suites. `justInTimeCompile` is now only supported for [`webpack`](https://www.npmjs.com/package/webpack). Addresses [#30234](https://github.com/cypress-io/cypress/issues/30234). Addressed in [#30641](https://github.com/cypress-io/cypress/pull/30641). - Cypress Component Testing no longer supports: - `create-react-app`. Addresses [#30028](https://github.com/cypress-io/cypress/issues/30028). - `@vue/cli-service`. Addresses [#30481](https://github.com/cypress-io/cypress/issues/30481). @@ -24,7 +24,7 @@ _Released 1/16/2025 (PENDING)_ - The `cypress/react18` test harness is no longer included in the Cypress binary. Instead, React 18 support is now shipped with `cypress/react`! Addresses [#29607](https://github.com/cypress-io/cypress/issues/29607). - The `cypress/angular-signals` test harness is no longer included in the Cypress binary. Instead, signals support is now shipped with `cypress/angular`! This requires `rxjs` to be installed as a `peerDependency`. Addresses [#29606](https://github.com/cypress-io/cypress/issues/29606). - The Cypress configuration wizard for Component Testing supports TypeScript 4.0 or greater. Addresses [#30493](https://github.com/cypress-io/cypress/issues/30493). -- `@cypress/webpack-dev-server` no longer supports `webpack-dev-server` version 3. Additionally, `@cypress/webpack-dev-server` now ships with `webpack-dev-server` version 5 by default. `webpack-dev-server` version 4 will need to be installed along side Cypress if you are still using `webpack` version 4. Addresses [#29308](https://github.com/cypress-io/cypress/issues/29308), [#30347](https://github.com/cypress-io/cypress/issues/30347), and [#30141](https://github.com/cypress-io/cypress/issues/30141). +- `@cypress/webpack-dev-server` no longer supports `webpack-dev-server` version 3. Additionally, `@cypress/webpack-dev-server` now ships with `webpack-dev-server` version 5 by default. `webpack-dev-server` version 4 will need to be installed alongside Cypress if you are still using `webpack` version 4. Addresses [#29308](https://github.com/cypress-io/cypress/issues/29308), [#30347](https://github.com/cypress-io/cypress/issues/30347), and [#30141](https://github.com/cypress-io/cypress/issues/30141). - `@cypress/vite-dev-server` no longer supports `vite` versions 2 and 3. Addresses [#29377](https://github.com/cypress-io/cypress/issues/29377) and [#29378](https://github.com/cypress-io/cypress/issues/29378). - The `delayMs` option of `cy.intercept()` has been removed. This option was deprecated in Cypress 6.4.0. Please use the `delay` option instead. Addressed in [#30463](https://github.com/cypress-io/cypress/pull/30463). - The `experimentalFetchPolyfill` configuration option was removed. This option was deprecated in Cypress 6.0.0. We recommend using `cy.intercept()` for handling fetch requests. Addressed in [#30466](https://github.com/cypress-io/cypress/pull/30466). @@ -50,7 +50,7 @@ in this [GitHub issue](https://github.com/cypress-io/cypress/issues/30447). Addr **Bugfixes:** -- Elements with `display: contents` will no longer use box model calculations for visibility, and correctly show as visible when it is visible. Fixed in [#29680](https://github.com/cypress-io/cypress/pull/29680). Fixes [#29605](https://github.com/cypress-io/cypress/issues/29605). +- Elements with `display: contents` will no longer use box model calculations for visibility, and correctly show as visible when they are visible. Fixed in [#29680](https://github.com/cypress-io/cypress/pull/29680). Fixes [#29605](https://github.com/cypress-io/cypress/issues/29605). - Fixed a visibility issue when the element is positioned `static` or `relative` and the element's offset parent is positioned `absolute`, a descendent of the ancestor, and has no clippable overflow. Fixed in [#29689](https://github.com/cypress-io/cypress/pull/29689). Fixes [#28638](https://github.com/cypress-io/cypress/issues/28638). - Fixed a visibility issue for elements with `textContent` but without a width or height. Fixed in [#29688](https://github.com/cypress-io/cypress/pull/29688). Fixes [#29687](https://github.com/cypress-io/cypress/issues/29687). - Elements whose parent elements has `overflow: clip` and no height/width will now correctly show as hidden. Fixed in [#29778](https://github.com/cypress-io/cypress/pull/29778). Fixes [#23852](https://github.com/cypress-io/cypress/issues/23852). diff --git a/package.json b/package.json index 68fb27eb102e..4dfc93313248 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cypress", - "version": "13.17.0", + "version": "14.0.0", "description": "Cypress is a next generation front end testing tool built for the modern web", "private": true, "scripts": { From 49d578c5c76491b21159b8153fcd98513720134b Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Thu, 16 Jan 2025 13:43:48 -0500 Subject: [PATCH 13/16] chore: make sure the constant for the welcome screen is patched (#30893) --- packages/frontend-shared/cypress/support/e2e.ts | 2 +- packages/types/src/constants.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend-shared/cypress/support/e2e.ts b/packages/frontend-shared/cypress/support/e2e.ts index 2b365631743c..7594ffb1f0c6 100644 --- a/packages/frontend-shared/cypress/support/e2e.ts +++ b/packages/frontend-shared/cypress/support/e2e.ts @@ -402,7 +402,7 @@ function visitLaunchpad (options: { showWelcome?: boolean } = { showWelcome: fal // avoid re-stubbing already stubbed prompts in case we call getPreferences multiple times if ((ctx._apis.localSettingsApi.getPreferences as any).wrappedMethod === undefined) { o.sinon.stub(ctx._apis.localSettingsApi, 'getPreferences').resolves({ majorVersionWelcomeDismissed: { - [13]: Date.now(), + [14]: Date.now(), } }) } }).then(() => { diff --git a/packages/types/src/constants.ts b/packages/types/src/constants.ts index e1df518af270..b564b5615f49 100644 --- a/packages/types/src/constants.ts +++ b/packages/types/src/constants.ts @@ -25,7 +25,7 @@ export const PACKAGE_MANAGERS = ['npm', 'yarn', 'pnpm'] as const // Note: ONLY change this in code that will be merged into a release branch // for a new major version of Cypress -export const MAJOR_VERSION_FOR_CONTENT = '13' +export const MAJOR_VERSION_FOR_CONTENT = '14' export const RUN_ALL_SPECS_KEY = '__all' as const From f33e4fcf362520532242620452136011e27c63a3 Mon Sep 17 00:00:00 2001 From: Mike McCready <66998419+MikeMcC399@users.noreply.github.com> Date: Thu, 16 Jan 2025 23:46:48 +0100 Subject: [PATCH 14/16] docs: update yarn contributing requirements with corepack (#30877) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3ee8c7d81040..b5c113706058 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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`](https://yarnpkg.com/en/docs/install) +- [`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. - [`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 From 3d67ab762b5c9e8fbb0b39befddba297537cc03a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 17:53:44 -0500 Subject: [PATCH 15/16] chore: Update Chrome (stable) to 132.0.6834.83 and Chrome (beta) to 133.0.6943.16 (#30876) * chore: Update Chrome (stable) to 132.0.6834.83 * chore: Update Chrome (stable) to 132.0.6834.83 and Chrome (beta) to 133.0.6943.16 --------- Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Jennifer Shehane --- browser-versions.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser-versions.json b/browser-versions.json index 1c7058cbc1e7..2ad2021f6f57 100644 --- a/browser-versions.json +++ b/browser-versions.json @@ -1,5 +1,5 @@ { - "chrome:beta": "132.0.6834.83", - "chrome:stable": "131.0.6778.264", + "chrome:beta": "133.0.6943.16", + "chrome:stable": "132.0.6834.83", "chrome:minimum": "64.0.3282.0" } From e3a28437bc22e7970a22f3f45bbec6788054891e Mon Sep 17 00:00:00 2001 From: Matt Schile Date: Fri, 17 Jan 2025 07:15:19 -0700 Subject: [PATCH 16/16] fix: prevent navigating to about:blank (#30864) * fix: prevent navigating to about:blank * update snapshots * update test * fix changelog * pr updates * Update CHANGELOG.md --------- Co-authored-by: Jennifer Shehane --- cli/CHANGELOG.md | 9 + ...experimentalRetries.mochaEvents.cy.ts.json | 4841 +++++++++++++++-- .../snapshots/retries.mochaEvents.cy.ts.json | 291 + ...experimentalRetries.mochaEvents.cy.ts.json | 1180 +++- .../driver/cypress/e2e/issues/28527.cy.ts | 31 + packages/driver/src/cypress/runner.ts | 10 +- 6 files changed, 5855 insertions(+), 507 deletions(-) create mode 100644 packages/driver/cypress/e2e/issues/28527.cy.ts diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 97718e27af3b..3c11ad8b1e4a 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,4 +1,12 @@ +## 14.0.1 + +_Released 1/28/2025 (PENDING)_ + +**Bugfixes:** + +- Fixed an issue where Cypress would incorrectly navigate to `about:blank` when test isolation was disabled and the last test would fail and then retry. Fixes [#28527](https://github.com/cypress-io/cypress/issues/28527). + ## 14.0.0 _Released 1/16/2025_ @@ -57,6 +65,7 @@ in this [GitHub issue](https://github.com/cypress-io/cypress/issues/30447). Addr - The CSS pseudo-class `:dir()` is now supported when testing in Electron. Addresses [#29766](https://github.com/cypress-io/cypress/issues/29766). - Fixed an issue where the spec filename was not updating correctly when changing specs in `open` mode. Fixes [#30852](https://github.com/cypress-io/cypress/issues/30852). - `cy.origin()` now correctly errors when the [`cy.window()`](https://docs.cypress.io/api/commands/window), [`cy.document()`](https://docs.cypress.io/api/commands/document), [`cy.title()`](https://docs.cypress.io/api/commands/title), [`cy.url()`](https://docs.cypress.io/api/commands/url), [`cy.location()`](https://docs.cypress.io/api/commands/location) ,[`cy.hash()`](https://docs.cypress.io/api/commands/hash), [`cy.go()`](https://docs.cypress.io/api/commands/go), [`cy.reload()`](https://docs.cypress.io/api/commands/reload), and [`cy.scrollTo()`](https://docs.cypress.io/api/commands/scrollTo) commands are used outside of the `cy.origin()` command after the AUT has navigated away from the primary origin. Fixes [#30848](https://github.com/cypress-io/cypress/issues/30848). Fixed in [#30858](https://github.com/cypress-io/cypress/pull/30858). +- Fixed an issue where Cypress would incorrectly navigate to `about:blank` when test isolation was disabled and the last test would fail and then retry. Fixes [#28527](https://github.com/cypress-io/cypress/issues/28527). **Misc:** diff --git a/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json b/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json index 6e9e68e44cda..57a872b4219e 100644 --- a/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json +++ b/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json @@ -129,6 +129,43 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -269,6 +306,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -407,6 +480,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -545,6 +654,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -683,6 +828,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -1249,6 +1430,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -1521,6 +1760,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -1777,6 +2066,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -2033,6 +2372,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -2289,6 +2678,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -3080,6 +3519,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -3352,6 +3849,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -3608,6 +4155,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -3864,6 +4461,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -4120,6 +4767,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -4996,6 +5693,71 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "hookName": "before each", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "failedFromHookId": "h3", + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -5367,6 +6129,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -5729,6 +6551,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -6091,6 +6973,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -6453,6 +7395,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -17145,6 +18147,43 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -17290,6 +18329,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -17435,7 +18510,7 @@ ], [ "mocha", - "test:after:run", + "test:before:after:run:async", { "id": "r2", "order": 1, @@ -17452,7 +18527,6 @@ "type": "test", "duration": "match.number", "wallClockStartedAt": "match.date", - "wallClockDuration": "match.number", "timings": { "lifecycle": "match.number", "test": { @@ -17465,11 +18539,48 @@ "currentRetry": 2, "retries": 9, "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true } ], [ "mocha", - "test:after:run:async", + "test:after:run", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "wallClockDuration": "match.number", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + } + ], + [ + "mocha", + "test:after:run:async", { "id": "r2", "order": 1, @@ -17576,6 +18687,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -17719,6 +18866,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -18139,6 +19322,43 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -18279,6 +19499,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -18417,6 +19673,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -18555,6 +19847,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -18695,7 +20023,7 @@ ], [ "mocha", - "test:after:run", + "test:before:after:run:async", { "id": "r3", "order": 1, @@ -18712,7 +20040,6 @@ "type": "test", "duration": "match.number", "wallClockStartedAt": "match.date", - "wallClockDuration": "match.number", "timings": { "lifecycle": "match.number", "test": { @@ -18725,11 +20052,48 @@ "currentRetry": 4, "retries": 9, "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true } ], [ "mocha", - "test:after:run:async", + "test:after:run", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "wallClockDuration": "match.number", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + } + ], + [ + "mocha", + "test:after:run:async", { "id": "r3", "order": 1, @@ -18831,6 +20195,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 5, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -18969,6 +20369,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 6, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -19107,6 +20543,42 @@ }, null ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 7, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -19247,7 +20719,7 @@ ], [ "mocha", - "test:after:run", + "test:before:after:run:async", { "id": "r3", "order": 1, @@ -19264,7 +20736,6 @@ "type": "test", "duration": "match.number", "wallClockStartedAt": "match.date", - "wallClockDuration": "match.number", "timings": { "lifecycle": "match.number", "test": { @@ -19277,11 +20748,14 @@ "currentRetry": 8, "retries": 9, "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true } ], [ "mocha", - "test:after:run:async", + "test:after:run", { "id": "r3", "order": 1, @@ -19315,50 +20789,8 @@ ], [ "mocha", - "test:before:run", - { - "id": "r3", - "order": 1, - "title": "test 1", - "pending": false, - "body": "[body]", - "type": "test", - "wallClockStartedAt": "match.date", - "file": null, - "currentRetry": 9, - "retries": 9, - "_slow": 10000 - } - ], - [ - "mocha", - "test:before:run:async", - { - "id": "r3", - "order": 1, - "title": "test 1", - "pending": false, - "body": "[body]", - "type": "test", - "wallClockStartedAt": "match.date", - "file": null, - "currentRetry": 9, - "retries": 9, - "_slow": 10000, - "invocationDetails": "{Object 9}", - "hooks": "[Array 2]" - } - ], - [ - "mocha", - "fail", + "test:after:run:async", { - "_cypressTestStatusInfo": { - "strategy": "detect-flake-but-always-fail", - "shouldAttemptsContinue": false, - "attempts": 10, - "outerStatus": "failed" - }, "id": "r3", "order": 1, "title": "test 1", @@ -19374,6 +20806,7 @@ "type": "test", "duration": "match.number", "wallClockStartedAt": "match.date", + "wallClockDuration": "match.number", "timings": { "lifecycle": "match.number", "test": { @@ -19382,52 +20815,24 @@ } }, "file": null, - "final": true, - "currentRetry": 9, + "final": false, + "currentRetry": 8, "retries": 9, "_slow": 10000 - }, - { - "message": "[error message]", - "name": "AssertionError", - "stack": "match.string", - "parsedStack": "match.array" } ], [ "mocha", - "test end", + "test:before:run", { - "_cypressTestStatusInfo": { - "strategy": "detect-flake-but-always-fail", - "shouldAttemptsContinue": false, - "attempts": 10, - "outerStatus": "failed" - }, "id": "r3", "order": 1, "title": "test 1", - "err": { - "message": "[error message]", - "name": "AssertionError", - "stack": "match.string", - "parsedStack": "match.array" - }, - "state": "passed", "pending": false, "body": "[body]", "type": "test", - "duration": "match.number", "wallClockStartedAt": "match.date", - "timings": { - "lifecycle": "match.number", - "test": { - "fnDuration": "match.number", - "afterFnDuration": "match.number" - } - }, "file": null, - "final": true, "currentRetry": 9, "retries": 9, "_slow": 10000 @@ -19435,22 +20840,26 @@ ], [ "mocha", - "suite end", + "test:before:run:async", { - "id": "r2", - "title": "suite 1", - "root": false, + "id": "r3", + "order": 1, + "title": "test 1", "pending": false, - "type": "suite", + "body": "[body]", + "type": "test", + "wallClockStartedAt": "match.date", "file": null, + "currentRetry": 9, + "retries": 9, + "_slow": 10000, "invocationDetails": "{Object 9}", - "retries": -1, - "_slow": 10000 + "hooks": "[Array 2]" } ], [ "mocha", - "test:after:run", + "fail", { "_cypressTestStatusInfo": { "strategy": "detect-flake-but-always-fail", @@ -19473,7 +20882,6 @@ "type": "test", "duration": "match.number", "wallClockStartedAt": "match.date", - "wallClockDuration": "match.number", "timings": { "lifecycle": "match.number", "test": { @@ -19486,11 +20894,111 @@ "currentRetry": 9, "retries": 9, "_slow": 10000 + }, + { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" } ], [ "mocha", - "test:after:run:async", + "test end", + { + "_cypressTestStatusInfo": { + "strategy": "detect-flake-but-always-fail", + "shouldAttemptsContinue": false, + "attempts": 10, + "outerStatus": "failed" + }, + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": true, + "currentRetry": 9, + "retries": 9, + "_slow": 10000 + } + ], + [ + "mocha", + "suite end", + { + "id": "r2", + "title": "suite 1", + "root": false, + "pending": false, + "type": "suite", + "file": null, + "invocationDetails": "{Object 9}", + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:after:run", + { + "_cypressTestStatusInfo": { + "strategy": "detect-flake-but-always-fail", + "shouldAttemptsContinue": false, + "attempts": 10, + "outerStatus": "failed" + }, + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "wallClockDuration": "match.number", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": true, + "currentRetry": 9, + "retries": 9, + "_slow": 10000 + } + ], + [ + "mocha", + "test:after:run:async", { "_cypressTestStatusInfo": { "strategy": "detect-flake-but-always-fail", @@ -19841,6 +21349,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -20069,48 +21635,404 @@ }, "file": null, "final": false, - "currentRetry": 1, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + null + ], + [ + "mocha", + "hook", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "hook end", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], + [ + "mocha", + "test:after:run", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "wallClockDuration": "match.number", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + } + ], + [ + "mocha", + "test:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "wallClockDuration": "match.number", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + } + ], + [ + "mocha", + "hook", + { + "id": "r3", + "title": "\"before each\" hook", + "hookName": "before each", + "hookId": "h2", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:run", + { + "id": "r3", + "order": 1, + "title": "test 1", + "pending": false, + "body": "[body]", + "type": "test", + "wallClockStartedAt": "match.date", + "file": null, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "pending": false, + "body": "[body]", + "type": "test", + "wallClockStartedAt": "match.date", + "file": null, + "currentRetry": 2, + "retries": 9, + "_slow": 10000, + "invocationDetails": "{Object 9}", + "hooks": "[Array 6]" + } + ], + [ + "mocha", + "hook end", + { + "id": "r3", + "title": "\"before each\" hook", + "hookName": "before each", + "hookId": "h2", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "retry", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + null + ], + [ + "mocha", + "hook", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "hook end", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, "retries": 9, "_slow": 10000 }, - null - ], - [ - "mocha", - "hook", { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - [ - "mocha", - "hook end", - { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 + "nextTestHasTestIsolationOn": true } ], [ @@ -20156,7 +22078,7 @@ }, "file": null, "final": false, - "currentRetry": 1, + "currentRetry": 2, "retries": 9, "_slow": 10000 } @@ -20204,7 +22126,7 @@ }, "file": null, "final": false, - "currentRetry": 1, + "currentRetry": 2, "retries": 9, "_slow": 10000 } @@ -20240,7 +22162,7 @@ "type": "test", "wallClockStartedAt": "match.date", "file": null, - "currentRetry": 2, + "currentRetry": 3, "retries": 9, "_slow": 10000 } @@ -20257,7 +22179,7 @@ "type": "test", "wallClockStartedAt": "match.date", "file": null, - "currentRetry": 2, + "currentRetry": 3, "retries": 9, "_slow": 10000, "invocationDetails": "{Object 9}", @@ -20325,7 +22247,7 @@ }, "file": null, "final": false, - "currentRetry": 2, + "currentRetry": 3, "retries": 9, "_slow": 10000 }, @@ -20371,7 +22293,7 @@ ], [ "mocha", - "test:after:run", + "test:before:after:run:async", { "id": "r3", "order": 1, @@ -20388,7 +22310,6 @@ "type": "test", "duration": "match.number", "wallClockStartedAt": "match.date", - "wallClockDuration": "match.number", "timings": { "lifecycle": "match.number", "before each": [ @@ -20412,14 +22333,17 @@ }, "file": null, "final": false, - "currentRetry": 2, + "currentRetry": 3, "retries": 9, "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true } ], [ "mocha", - "test:after:run:async", + "test:after:run", { "id": "r3", "order": 1, @@ -20460,42 +22384,6 @@ }, "file": null, "final": false, - "currentRetry": 2, - "retries": 9, - "_slow": 10000 - } - ], - [ - "mocha", - "hook", - { - "id": "r3", - "title": "\"before each\" hook", - "hookName": "before each", - "hookId": "h2", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - [ - "mocha", - "test:before:run", - { - "id": "r3", - "order": 1, - "title": "test 1", - "pending": false, - "body": "[body]", - "type": "test", - "wallClockStartedAt": "match.date", - "file": null, "currentRetry": 3, "retries": 9, "_slow": 10000 @@ -20503,45 +22391,7 @@ ], [ "mocha", - "test:before:run:async", - { - "id": "r3", - "order": 1, - "title": "test 1", - "pending": false, - "body": "[body]", - "type": "test", - "wallClockStartedAt": "match.date", - "file": null, - "currentRetry": 3, - "retries": 9, - "_slow": 10000, - "invocationDetails": "{Object 9}", - "hooks": "[Array 6]" - } - ], - [ - "mocha", - "hook end", - { - "id": "r3", - "title": "\"before each\" hook", - "hookName": "before each", - "hookId": "h2", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - [ - "mocha", - "retry", + "test:after:run:async", { "id": "r3", "order": 1, @@ -20558,6 +22408,7 @@ "type": "test", "duration": "match.number", "wallClockStartedAt": "match.date", + "wallClockDuration": "match.number", "timings": { "lifecycle": "match.number", "before each": [ @@ -20584,17 +22435,16 @@ "currentRetry": 3, "retries": 9, "_slow": 10000 - }, - null + } ], [ "mocha", "hook", { "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", + "title": "\"before each\" hook", + "hookName": "before each", + "hookId": "h2", "pending": false, "body": "[body]", "type": "hook", @@ -20608,74 +22458,62 @@ ], [ "mocha", - "hook end", + "test:before:run", { "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", + "order": 1, + "title": "test 1", "pending": false, "body": "[body]", - "type": "hook", - "duration": "match.number", + "type": "test", + "wallClockStartedAt": "match.date", "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, + "currentRetry": 4, + "retries": 9, "_slow": 10000 } ], [ "mocha", - "test:after:run", + "test:before:run:async", { "id": "r3", "order": 1, "title": "test 1", - "err": { - "message": "[error message]", - "name": "AssertionError", - "stack": "match.string", - "parsedStack": "match.array" - }, - "state": "passed", "pending": false, "body": "[body]", "type": "test", - "duration": "match.number", "wallClockStartedAt": "match.date", - "wallClockDuration": "match.number", - "timings": { - "lifecycle": "match.number", - "before each": [ - { - "hookId": "h2", - "fnDuration": "match.number", - "afterFnDuration": "match.number" - } - ], - "test": { - "fnDuration": "match.number", - "afterFnDuration": "match.number" - }, - "after each": [ - { - "hookId": "h4", - "fnDuration": "match.number", - "afterFnDuration": "match.number" - } - ] - }, "file": null, - "final": false, - "currentRetry": 3, + "currentRetry": 4, "retries": 9, + "_slow": 10000, + "invocationDetails": "{Object 9}", + "hooks": "[Array 6]" + } + ], + [ + "mocha", + "hook end", + { + "id": "r3", + "title": "\"before each\" hook", + "hookName": "before each", + "hookId": "h2", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, "_slow": 10000 } ], [ "mocha", - "test:after:run:async", + "retry", { "id": "r3", "order": 1, @@ -20692,7 +22530,6 @@ "type": "test", "duration": "match.number", "wallClockStartedAt": "match.date", - "wallClockDuration": "match.number", "timings": { "lifecycle": "match.number", "before each": [ @@ -20716,19 +22553,20 @@ }, "file": null, "final": false, - "currentRetry": 3, + "currentRetry": 4, "retries": 9, "_slow": 10000 - } + }, + null ], [ "mocha", "hook", { "id": "r3", - "title": "\"before each\" hook", - "hookName": "before each", - "hookId": "h2", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", "pending": false, "body": "[body]", "type": "hook", @@ -20740,50 +22578,14 @@ "_slow": 10000 } ], - [ - "mocha", - "test:before:run", - { - "id": "r3", - "order": 1, - "title": "test 1", - "pending": false, - "body": "[body]", - "type": "test", - "wallClockStartedAt": "match.date", - "file": null, - "currentRetry": 4, - "retries": 9, - "_slow": 10000 - } - ], - [ - "mocha", - "test:before:run:async", - { - "id": "r3", - "order": 1, - "title": "test 1", - "pending": false, - "body": "[body]", - "type": "test", - "wallClockStartedAt": "match.date", - "file": null, - "currentRetry": 4, - "retries": 9, - "_slow": 10000, - "invocationDetails": "{Object 9}", - "hooks": "[Array 6]" - } - ], [ "mocha", "hook end", { "id": "r3", - "title": "\"before each\" hook", - "hookName": "before each", - "hookId": "h2", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", "pending": false, "body": "[body]", "type": "hook", @@ -20797,7 +22599,7 @@ ], [ "mocha", - "retry", + "test:before:after:run:async", { "id": "r3", "order": 1, @@ -20841,44 +22643,8 @@ "retries": 9, "_slow": 10000 }, - null - ], - [ - "mocha", - "hook", { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - [ - "mocha", - "hook end", - { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 + "nextTestHasTestIsolationOn": true } ], [ @@ -21137,6 +22903,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 5, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -21393,6 +23209,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 6, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -21649,6 +23515,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 7, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -21865,44 +23781,94 @@ "retries": 9, "_slow": 10000 }, - null - ], - [ - "mocha", - "hook", - { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - [ - "mocha", - "hook end", + null + ], + [ + "mocha", + "hook", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "hook end", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 8, + "retries": 9, + "_slow": 10000 + }, { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 + "nextTestHasTestIsolationOn": true } ], [ @@ -22726,6 +24692,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -22998,6 +25022,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -23254,6 +25328,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -23470,44 +25594,94 @@ "retries": 9, "_slow": 10000 }, - null - ], - [ - "mocha", - "hook", + null + ], + [ + "mocha", + "hook", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "hook end", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - [ - "mocha", - "hook end", - { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 + "nextTestHasTestIsolationOn": true } ], [ @@ -23766,6 +25940,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -24022,6 +26246,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 5, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -24278,6 +26552,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 6, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -24494,44 +26818,94 @@ "retries": 9, "_slow": 10000 }, - null - ], - [ - "mocha", - "hook", + null + ], + [ + "mocha", + "hook", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "hook end", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h4", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 7, + "retries": 9, + "_slow": 10000 + }, { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - [ - "mocha", - "hook end", - { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 + "nextTestHasTestIsolationOn": true } ], [ @@ -24790,6 +27164,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 8, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -25696,6 +28120,71 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "hookName": "before each", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "failedFromHookId": "h3", + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -26067,6 +28556,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -26429,6 +28978,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -26791,6 +29400,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -27153,6 +29822,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -27515,6 +30244,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 5, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -27837,44 +30626,104 @@ "retries": 9, "_slow": 10000 }, - null - ], - [ - "mocha", - "hook", - { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h6", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - [ - "mocha", - "hook end", + null + ], + [ + "mocha", + "hook", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h6", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "hook end", + { + "id": "r3", + "title": "\"after each\" hook", + "hookName": "after each", + "hookId": "h6", + "pending": false, + "body": "[body]", + "type": "hook", + "duration": "match.number", + "file": null, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 6, + "retries": 9, + "_slow": 10000 + }, { - "id": "r3", - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h6", - "pending": false, - "body": "[body]", - "type": "hook", - "duration": "match.number", - "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, - "_slow": 10000 + "nextTestHasTestIsolationOn": true } ], [ @@ -28239,6 +31088,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 7, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -28601,6 +31510,66 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "passed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 8, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -42931,6 +45900,43 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -43076,6 +46082,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -43213,10 +46255,46 @@ "_slow": 10000 }, { - "message": "[error message]", - "name": "AssertionError", - "stack": "match.string", - "parsedStack": "match.array" + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true } ], [ @@ -43362,6 +46440,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -43505,6 +46619,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -43648,6 +46798,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 5, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -43791,6 +46977,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 6, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -43934,6 +47156,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 7, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -44077,6 +47335,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 8, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -44497,6 +47791,43 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -45095,6 +48426,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -45932,6 +49321,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -46854,6 +50301,71 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "hookName": "before each", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "failedFromHookId": "h3", + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -53543,6 +57055,43 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -53682,10 +57231,46 @@ "_slow": 10000 }, { - "message": "[error message]", - "name": "AssertionError", - "stack": "match.string", - "parsedStack": "match.array" + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true } ], [ @@ -53831,6 +57416,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -53974,6 +57595,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -54117,6 +57774,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -54260,6 +57953,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 5, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -54403,6 +58132,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 6, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -54546,6 +58311,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 7, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -54689,6 +58490,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 8, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", diff --git a/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json b/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json index 8e2d6472cf32..0d3ae1269034 100644 --- a/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json +++ b/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json @@ -129,6 +129,43 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 1, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -697,6 +734,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 1, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -1504,6 +1599,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 1, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -2396,6 +2549,71 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 1", + "hookName": "before each", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "failedFromHookId": "h3", + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + { + "hookId": "h3", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h6", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 1, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -8947,6 +9165,43 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 2, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -9092,6 +9347,42 @@ "parsedStack": "match.array" } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r2", + "order": 1, + "title": "visits", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 2, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", diff --git a/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json b/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json index 34fe0b696e99..46928580630d 100644 --- a/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json +++ b/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json @@ -4638,6 +4638,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -4915,6 +4973,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -5176,6 +5284,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -5437,6 +5595,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -5698,6 +5906,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -15221,6 +15479,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -15498,6 +15814,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -15753,10 +16119,60 @@ "type": "hook", "duration": "match.number", "file": null, - "invocationDetails": "{Object 9}", - "currentRetry": 0, - "retries": -1, + "invocationDetails": "{Object 9}", + "currentRetry": 0, + "retries": -1, + "_slow": 10000 + } + ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true } ], [ @@ -16020,6 +16436,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -16281,6 +16747,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -16542,6 +17058,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 5, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -16803,6 +17369,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 6, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -17064,6 +17680,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 7, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -17325,6 +17991,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 8, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -26520,6 +27236,64 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before all": [ + { + "hookId": "h1", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "invocationDetails": "{Object 9}", + "final": false, + "currentRetry": 0, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -26797,6 +27571,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 1, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -27058,6 +27882,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 2, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -27319,6 +28193,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 3, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -27580,6 +28504,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 4, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -27841,6 +28815,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 5, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -28102,6 +29126,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 6, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -28363,6 +29437,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 7, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", @@ -28624,6 +29748,56 @@ "_slow": 10000 } ], + [ + "mocha", + "test:before:after:run:async", + { + "id": "r3", + "order": 1, + "title": "test 2", + "err": { + "message": "[error message]", + "name": "AssertionError", + "stack": "match.string", + "parsedStack": "match.array" + }, + "state": "failed", + "pending": false, + "body": "[body]", + "type": "test", + "duration": "match.number", + "wallClockStartedAt": "match.date", + "timings": { + "lifecycle": "match.number", + "before each": [ + { + "hookId": "h2", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ], + "test": { + "fnDuration": "match.number", + "afterFnDuration": "match.number" + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": "match.number", + "afterFnDuration": "match.number" + } + ] + }, + "file": null, + "final": false, + "currentRetry": 8, + "retries": 9, + "_slow": 10000 + }, + { + "nextTestHasTestIsolationOn": true + } + ], [ "mocha", "test:after:run", diff --git a/packages/driver/cypress/e2e/issues/28527.cy.ts b/packages/driver/cypress/e2e/issues/28527.cy.ts new file mode 100644 index 000000000000..52f98fa53fea --- /dev/null +++ b/packages/driver/cypress/e2e/issues/28527.cy.ts @@ -0,0 +1,31 @@ +describe('issue 28527', { testIsolation: false, retries: 2 }, () => { + before(() => { + cy.visit('/fixtures/empty.html') + }) + + beforeEach(() => { + // ensure we run the tests in run mode + // @ts-expect-error + Cypress.config('isInteractive', false) + // @ts-expect-error + Cypress.config('exit', true) + }) + + // there can only be one test in this file to ensure we are testing the scenario + // where a test fails and the runner does not navigate to about:blank between retries + it('fails and then retries and verifies about:blank is not displayed', () => { + cy.then(() => { + // fail the first attempt to ensure we don't go to about:blank before the second attempt + if (Cypress.currentRetry < 2) { + throw new Error(`attempt ${Cypress.currentRetry + 1} error`) + } + }) + + cy.get('title').should('have.text', 'Empty HTML Fixture') + cy.url().should('include', '/fixtures/empty.html') + cy.url().should('not.include', 'about:blank') + cy.then(() => { + expect(Cypress.currentRetry).to.equal(2) + }) + }) +}) diff --git a/packages/driver/src/cypress/runner.ts b/packages/driver/src/cypress/runner.ts index aa26ca18f9a4..d4c1b77ff9f9 100644 --- a/packages/driver/src/cypress/runner.ts +++ b/packages/driver/src/cypress/runner.ts @@ -362,7 +362,7 @@ const isLastSuite = (suite, tests) => { } // we are the last test that will run in the suite -// if we're the last test in the tests array or +// if we're the last test in the tests array and we're not retrying (i.e. test.final) or // if we failed from a hook and that hook was 'before' // since then mocha skips the remaining tests in the suite const lastTestThatWillRunInSuite = (test, tests): boolean => { @@ -370,10 +370,16 @@ const lastTestThatWillRunInSuite = (test, tests): boolean => { } const nextTestThatWillRunInSuite = (test, tests) => { + // if the test failed in the before all hook, then we are the next test that will run if (test.failedFromHookId && (test.hookName === 'before all')) { return null } + // if this test hasn't been finalized, then we will be retrying it so just return this test + if (test.final === false) { + return test + } + const index = _.findIndex(tests, { id: test.id }) return index < tests.length - 1 ? tests[index + 1] : null @@ -522,7 +528,7 @@ const overrideRunnerHook = (Cypress, _runner, getTestById, getTest, setTest, get const isRunMode = !Cypress.config('isInteractive') const isHeadedNoExit = Cypress.config('browser').isHeaded && !Cypress.config('exit') const shouldAlwaysResetPage = isRunMode && !isHeadedNoExit - const isLastTestThatWillRunInSuite = lastTestThatWillRunInSuite(test, getAllSiblingTests(topSuite, getTestById)) + const isLastTestThatWillRunInSuite = test.final && lastTestThatWillRunInSuite(test, getAllSiblingTests(topSuite, getTestById)) // If we're not in open mode or we're in open mode and not the last test we reset state. // The last test will needs to stay so that the user can see what the end result of the AUT was.