From f6821e03f48e74efaffc2be3fb0592dffa5dcd5b Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Mon, 24 Jul 2023 11:19:12 -0400 Subject: [PATCH 01/40] chore: set up feature/test-burn-in feature branch --- .circleci/workflows.yml | 10 +++++----- .github/workflows/update_v8_snapshot_cache.yml | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index 3c20cd7478d3..94ccd16ef311 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -30,7 +30,7 @@ mainBuildFilters: &mainBuildFilters - /^release\/\d+\.\d+\.\d+$/ # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - 'update-v8-snapshot-cache-on-develop' - - 'reduce_requests_paused' + - 'feature/test-burn-in' # usually we don't build Mac app - it takes a long time # but sometimes we want to really confirm we are doing the right thing @@ -41,7 +41,7 @@ macWorkflowFilters: &darwin-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'reduce_requests_paused', << pipeline.git.branch >> ] + - equal: [ 'feature/test-burn-in', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -52,7 +52,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'reduce_requests_paused', << pipeline.git.branch >> ] + - equal: [ 'feature/test-burn-in', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -72,7 +72,7 @@ windowsWorkflowFilters: &windows-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'reduce_requests_paused', << pipeline.git.branch >> ] + - equal: [ 'feature/test-burn-in', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -139,7 +139,7 @@ commands: - run: name: Check current branch to persist artifacts command: | - if [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "update-v8-snapshot-cache-on-develop" && "$CIRCLE_BRANCH" != "reduce_requests_paused" ]]; then + if [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "update-v8-snapshot-cache-on-develop" && "$CIRCLE_BRANCH" != "feature/test-burn-in" ]]; then echo "Not uploading artifacts or posting install comment for this branch." circleci-agent step halt fi diff --git a/.github/workflows/update_v8_snapshot_cache.yml b/.github/workflows/update_v8_snapshot_cache.yml index 61f06d52a336..443bdaf15ebd 100644 --- a/.github/workflows/update_v8_snapshot_cache.yml +++ b/.github/workflows/update_v8_snapshot_cache.yml @@ -8,6 +8,7 @@ on: push: branches: - 'release/**' + - 'feature/test-burn-in' workflow_dispatch: inputs: branch: From c42844307946f438a7369b381a702f121ff17657 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Wed, 26 Jul 2023 16:00:56 -0400 Subject: [PATCH 02/40] feat: add burnIn Configuration option (currently a no-op) (#27377) * feat: add the burnIn Configuration to the config package. Option currently is a no-op * chore: make burn in experimental * chore: set experimentalBurnIn to false by default --- cli/types/cypress.d.ts | 12 ++ .../config/__snapshots__/index.spec.ts.js | 3 + .../__snapshots__/validation.spec.ts.js | 71 +++++++++++ packages/config/src/options.ts | 5 + packages/config/src/validation.ts | 22 ++++ packages/config/test/project/utils.spec.ts | 2 + packages/config/test/validation.spec.ts | 115 ++++++++++++++++++ .../frontend-shared/src/locales/en-US.json | 4 + 8 files changed, 234 insertions(+) diff --git a/cli/types/cypress.d.ts b/cli/types/cypress.d.ts index b2b1c3272ab4..914d03ffa658 100644 --- a/cli/types/cypress.d.ts +++ b/cli/types/cypress.d.ts @@ -3055,6 +3055,18 @@ declare namespace Cypress { * @default 'top' */ scrollBehavior: scrollBehaviorOptions + /** + * Enables flake detection on risky passing tests, such as for new or modified tests or tests which failed or flaked on previous runs. + * Note: This feature is only available for Team, Business, and Enterprise plans on Cypress Cloud. + * Furthermore, only Business and Enterprise plans can override the `experimentalBurnIn.default` or `experimentalBurnIn.flaky` settings. + * TODO: make sure experimental link is available in documentation before experimentalBurnIn release! + * @see https://on.cypress.io/experiments#Experimental-Burn-In + * @default false + */ + experimentalBurnIn: boolean | { + default: number + flaky: number + }, /** * Indicates whether Cypress should allow CSP header directives from the application under test. * - When this option is set to `false`, Cypress will strip the entire CSP header. diff --git a/packages/config/__snapshots__/index.spec.ts.js b/packages/config/__snapshots__/index.spec.ts.js index ee999fa83308..27a34d91f4c3 100644 --- a/packages/config/__snapshots__/index.spec.ts.js +++ b/packages/config/__snapshots__/index.spec.ts.js @@ -21,6 +21,7 @@ exports['config/src/index .getDefaultValues returns list of public config keys 1 'animationDistanceThreshold': 5, 'baseUrl': null, 'blockHosts': null, + 'experimentalBurnIn': false, 'chromeWebSecurity': true, 'clientCertificates': [], 'component': { @@ -109,6 +110,7 @@ exports['config/src/index .getDefaultValues returns list of public config keys f 'animationDistanceThreshold': 5, 'baseUrl': null, 'blockHosts': null, + 'experimentalBurnIn': false, 'chromeWebSecurity': true, 'clientCertificates': [], 'component': { @@ -198,6 +200,7 @@ exports['config/src/index .getPublicConfigKeys returns list of public config key 'arch', 'baseUrl', 'blockHosts', + 'experimentalBurnIn', 'chromeWebSecurity', 'clientCertificates', 'component', diff --git a/packages/config/__snapshots__/validation.spec.ts.js b/packages/config/__snapshots__/validation.spec.ts.js index ace0c97230bd..dbc4461334c4 100644 --- a/packages/config/__snapshots__/validation.spec.ts.js +++ b/packages/config/__snapshots__/validation.spec.ts.js @@ -261,3 +261,74 @@ exports['invalid upper bound'] = { 'value': 52, 'type': 'a valid CRF number between 1 & 51, 0 or false to disable compression, or true to use the default compression of 32', } + +exports['missing key "flaky"'] = { + 'key': 'experimentalBurnIn', + 'value': { + 'default': 1, + }, + 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', +} + +exports['missing key "default"'] = { + 'key': 'experimentalBurnIn', + 'value': { + 'flaky': 1, + }, + 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', +} + +exports['keys cannot be zero key'] = { + 'key': 'experimentalBurnIn', + 'value': { + 'default': 0, + 'flaky': 0, + }, + 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', +} + +exports['keys cannot be zero'] = { + 'key': 'experimentalBurnIn', + 'value': { + 'default': 0, + 'flaky': 0, + }, + 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', +} + +exports['keys cannot be negative'] = { + 'key': 'experimentalBurnIn', + 'value': { + 'default': -3, + 'flaky': -40, + }, + 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', +} + +exports['keys cannot be floating point numbers'] = { + 'key': 'experimentalBurnIn', + 'value': { + 'default': 5.7, + 'flaky': 8.22, + }, + 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', +} + +exports['keys cannot be Infinity'] = { + 'key': 'experimentalBurnIn', + 'value': { + 'default': null, + 'flaky': null, + }, + 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', +} + +exports['extraneous keys'] = { + 'key': 'experimentalBurnIn', + 'value': { + 'default': 3, + 'flaky': 5, + 'notflaky': null, + }, + 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', +} diff --git a/packages/config/src/options.ts b/packages/config/src/options.ts index 3128d671f7f4..2cef1c2a3688 100644 --- a/packages/config/src/options.ts +++ b/packages/config/src/options.ts @@ -152,6 +152,11 @@ const driverConfigOptions: Array = [ validation: validate.isStringOrArrayOfStrings, overrideLevel: 'any', requireRestartOnChange: 'server', + }, { + // experimentalBurnIn config is only considered in run-mode while recording to cypress-cloud + name: 'experimentalBurnIn', + defaultValue: false, + validation: validate.isValidBurnInConfig, }, { name: 'chromeWebSecurity', defaultValue: true, diff --git a/packages/config/src/validation.ts b/packages/config/src/validation.ts index 1cbcb34c71b1..180d59086105 100644 --- a/packages/config/src/validation.ts +++ b/packages/config/src/validation.ts @@ -384,3 +384,25 @@ export function isNullOrArrayOfStrings (key: string, value: any): ErrResult | tr return errMsg(key, value, 'an array of strings or null') } + +export function isValidBurnInConfig (key: string, value: any): ErrResult | true { + // false can be provided to turn off test burn in + if (_.isBoolean(value)) { + return true + } + + if (_.isPlainObject(value)) { + const { default: defaultKey, flaky: flakyKey, ...extraneousKeys } = value + + if (defaultKey !== undefined && defaultKey !== undefined && _.isEmpty(extraneousKeys)) { + const isDefaultKeyValid = _.isInteger(defaultKey) && _.inRange(defaultKey, 1, Infinity) + const isFlakyKeyValid = _.isInteger(flakyKey) && _.inRange(flakyKey, 1, Infinity) + + if (isDefaultKeyValid && isFlakyKeyValid) { + return true + } + } + } + + return errMsg(key, value, 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.') +} diff --git a/packages/config/test/project/utils.spec.ts b/packages/config/test/project/utils.spec.ts index d76d8f239aa2..7342c6557527 100644 --- a/packages/config/test/project/utils.spec.ts +++ b/packages/config/test/project/utils.spec.ts @@ -1073,6 +1073,7 @@ describe('config/src/project/utils', () => { baseUrl: { value: null, from: 'default' }, blockHosts: { value: null, from: 'default' }, browsers: { value: [], from: 'default' }, + experimentalBurnIn: { value: false, from: 'default' }, chromeWebSecurity: { value: true, from: 'default' }, clientCertificates: { value: [], from: 'default' }, defaultCommandTimeout: { value: 4000, from: 'default' }, @@ -1172,6 +1173,7 @@ describe('config/src/project/utils', () => { baseUrl: { value: 'http://localhost:8080', from: 'config' }, blockHosts: { value: null, from: 'default' }, browsers: { value: [], from: 'default' }, + experimentalBurnIn: { value: false, from: 'default' }, chromeWebSecurity: { value: true, from: 'default' }, clientCertificates: { value: [], from: 'default' }, defaultCommandTimeout: { value: 4000, from: 'default' }, diff --git a/packages/config/test/validation.spec.ts b/packages/config/test/validation.spec.ts index 05af3d8d8d44..df538d799da8 100644 --- a/packages/config/test/validation.spec.ts +++ b/packages/config/test/validation.spec.ts @@ -509,4 +509,119 @@ describe('config/src/validation', () => { return snapshot('invalid upper bound', upperBoundMsg) }) }) + + describe('.isValidBurnInConfig', () => { + it('validates default config if enabled', () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + default: 3, + flaky: 5, + }) + + expect(validate).to.be.true + }) + + it('validates false', () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', false) + + expect(validate).to.be.true + }) + + it('validates true', () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', true) + + expect(validate).to.be.true + }) + + it('does not allow extraneous keys', () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + default: 3, + flaky: 5, + // extraneous key + notflaky: null, + }) + + expect(validate).to.not.be.true + + return snapshot(`extraneous keys`, validate) + }) + + const possibleConfigKeys = ['default', 'flaky'] + + possibleConfigKeys.forEach((burnInConfigKey) => { + it(`Does not populate missing config value with default values (key "${burnInConfigKey}")`, () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + [burnInConfigKey]: 1, + }) + + expect(validate).to.not.be.true + + const missingKey = possibleConfigKeys.find((key) => key !== burnInConfigKey) + + return snapshot(`missing key "${missingKey}"`, validate) + }) + }) + + it(`does not allow keys to be zero`, () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + default: 0, + flaky: 0, + }) + + expect(validate).to.not.be.true + + return snapshot(`keys cannot be zero`, validate) + }) + + it(`does not allow keys to be negative`, () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + default: -3, + flaky: -40, + }) + + expect(validate).to.not.be.true + + return snapshot(`keys cannot be negative`, validate) + }) + + it(`does not allow keys to be floating point numbers`, () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + default: 5.7, + flaky: 8.22, + }) + + expect(validate).to.not.be.true + + return snapshot(`keys cannot be floating point numbers`, validate) + }) + + it(`does not allow keys to be Infinity`, () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + default: Infinity, + flaky: Infinity, + }) + + expect(validate).to.not.be.true + + return snapshot(`keys cannot be Infinity`, validate) + }) + + it(`tests lower bound`, () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + default: 1, + flaky: 1, + }) + + expect(validate).to.be.true + }) + + // TODO: revisit limit on 'default' and 'flaky' keys to set sane limits + it(`tests upper bound (currently no limit and is subject to change)`, () => { + const validate = validation.isValidBurnInConfig('experimentalBurnIn', { + default: 100000, + flaky: 142342342, + }) + + expect(validate).to.be.true + }) + }) }) diff --git a/packages/frontend-shared/src/locales/en-US.json b/packages/frontend-shared/src/locales/en-US.json index 5e8cd31b41cf..da26aa6f1dc9 100644 --- a/packages/frontend-shared/src/locales/en-US.json +++ b/packages/frontend-shared/src/locales/en-US.json @@ -570,6 +570,10 @@ "experiments": { "title": "Experiments", "description": "If you'd like to try out new features that we're working on, you can enable beta features for your project by turning on the experimental features you'd like to try. {0}", + "experimentalBurnIn": { + "name": "Burn-in", + "description": "Enables flake detection on risky passing tests, such as for new or modified tests or tests which failed or flaked on previous runs. Note: This feature is only available for Team, Business, and Enterprise plans on Cypress Cloud. Furthermore, only Business and Enterprise plans can override the `experimentalBurnIn.default` or `experimentalBurnIn.flaky` settings." + }, "experimentalCspAllowList": { "name": "CSP Allow List", "description": "Enables Cypress to selectively permit Content-Security-Policy and Content-Security-Policy-Report-Only header directives, including those that might otherwise block Cypress from running." From ef84f03585a870d68e7ed2a9222f0468cfed03a9 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Tue, 1 Aug 2023 17:23:57 -0400 Subject: [PATCH 03/40] feat: add new experimental retries configuration (#27412) * feat: implement the experimental retries configuration options to pair with test burn in * [run ci] --- cli/types/cypress.d.ts | 26 +- cli/types/tests/cypress-tests.ts | 33 ++ .../app/src/settings/project/Experiments.vue | 24 +- .../__snapshots__/validation.spec.ts.js | 337 +++++++++++++++++- packages/config/src/options.ts | 22 ++ packages/config/src/validation.ts | 74 +++- packages/config/test/project/utils.spec.ts | 4 +- packages/config/test/validation.spec.ts | 283 +++++++++++++++ .../frontend-shared/src/locales/en-US.json | 10 + packages/server/test/unit/config_spec.js | 2 +- .../testConfigOverrides_spec.ts.js | 28 +- 11 files changed, 817 insertions(+), 26 deletions(-) diff --git a/cli/types/cypress.d.ts b/cli/types/cypress.d.ts index 914d03ffa658..db25220c1fb4 100644 --- a/cli/types/cypress.d.ts +++ b/cli/types/cypress.d.ts @@ -2838,6 +2838,30 @@ declare namespace Cypress { certs: PEMCert[] | PFXCert[] } + type RetryStrategyWithModeSpecs = RetryStrategy & { + openMode: boolean; // defaults to false + runMode: boolean; // defaults to true + } + + type RetryStrategy = + | RetryStrategyDetectFlakeAndPassOnThresholdType + | RetryStrategyDetectFlakeButAlwaysFailType + + interface RetryStrategyDetectFlakeAndPassOnThresholdType { + experimentalStrategy: "detect-flake-and-pass-on-threshold" + experimentalOptions?: { + maxRetries: number; // defaults to 2 if experimentalOptions is not provided, must be a whole number > 0 + passesRequired: number; // defaults to 2 if experimentalOptions is not provided, must be a whole number > 0 and <= maxRetries + } + } + + interface RetryStrategyDetectFlakeButAlwaysFailType { + experimentalStrategy: "detect-flake-but-always-fail" + experimentalOptions?: { + maxRetries: number; // defaults to 2 if experimentalOptions is not provided, must be a whole number > 0 + stopIfAnyPassed: boolean; // defaults to false if experimentalOptions is not provided + } + } interface ResolvedConfigOptions { /** * Url used as prefix for [cy.visit()](https://on.cypress.io/visit) or [cy.request()](https://on.cypress.io/request) command's url @@ -3131,7 +3155,7 @@ declare namespace Cypress { * To enable test retries only in runMode, set e.g. `{ openMode: null, runMode: 2 }` * @default null */ - retries: Nullable, openMode?: Nullable }> + retries: Nullable, openMode?: Nullable }) | RetryStrategyWithModeSpecs> /** * Enables including elements within the shadow DOM when using querying * commands (e.g. cy.get(), cy.find()). Can be set globally in cypress.config.{js,ts,mjs,cjs}, diff --git a/cli/types/tests/cypress-tests.ts b/cli/types/tests/cypress-tests.ts index dd306c4ed4d6..6bba72144c26 100644 --- a/cli/types/tests/cypress-tests.ts +++ b/cli/types/tests/cypress-tests.ts @@ -1159,6 +1159,39 @@ namespace CypressLocalStorageTests { cy.clearAllSessionStorage({ log: 'true' }) // $ExpectError } +namespace CypressRetriesSpec { + Cypress.config('retries', { + openMode: 0, + runMode: 1 + }) + + Cypress.config('retries', { + openMode: false, + runMode: false, + experimentalStrategy: "detect-flake-and-pass-on-threshold", + experimentalOptions: { + maxRetries: 2, + passesRequired: 2 + } + }) + + Cypress.config('retries', { + openMode: false, + runMode: false, + experimentalStrategy: "detect-flake-but-always-fail", + experimentalOptions: { + maxRetries: 2, + stopIfAnyPassed: true + } + }) + + Cypress.config('retries', { openMode: false, runMode: true, experimentalStrategy: "detect-flake-and-pass-on-threshold", experimentalOptions: { maxRetries: 2} }) // $ExpectError + Cypress.config('retries', { openMode: false, runMode: true, experimentalStrategy: "detect-flake-but-always-fail", experimentalOptions: { maxRetries: 2} }) // $ExpectError + + Cypress.config('retries', { openMode: false, runMode: true, experimentalStrategy: "detect-flake-and-pass-on-threshold", experimentalOptions: { passesRequired: 2} }) // $ExpectError + Cypress.config('retries', { openMode: false, runMode: true, experimentalStrategy: "detect-flake-but-always-fail", experimentalOptions: { stopIfAnyPassed: true} }) // $ExpectError +} + namespace CypressTraversalTests { cy.wrap({}).prevUntil('a') // $ExpectType Chainable> cy.wrap({}).prevUntil('#myItem') // $ExpectType Chainable> diff --git a/packages/app/src/settings/project/Experiments.vue b/packages/app/src/settings/project/Experiments.vue index 90b59334ddd2..b86489197e18 100644 --- a/packages/app/src/settings/project/Experiments.vue +++ b/packages/app/src/settings/project/Experiments.vue @@ -54,13 +54,33 @@ const props = defineProps<{ }>() const localExperiments = computed(() => { - return props.gql?.config ? (props.gql.config as CypressResolvedConfig).filter((item) => item.field.startsWith('experimental')).map((configItem) => { + // get experiments out of the config + const experimentalConfigurations = props.gql?.config ? (props.gql.config as CypressResolvedConfig).filter((item) => item.field.startsWith('experimental')) : [] + + // get experimental retry properties on the 'retries' config object. Mutate the experimentalConfigurations array as to not have side effects with props.gql.config + // TODO: remove this once experimentalRetries becomes GA. This is to be treated as a one off as supported nested experiments inside config is rare. + const { value: { experimentalStrategy, experimentalOptions, from } } = props.gql?.config.find((item) => item.field === 'retries') + + experimentalConfigurations.push({ + field: 'retries.experimentalStrategy', + from, + value: experimentalStrategy, + }) + + experimentalConfigurations.push({ + field: 'retries.experimentalOptions', + from, + value: experimentalOptions, + }) + // end TODO removal + + return experimentalConfigurations.map((configItem) => { return { key: configItem.field, name: t(`settingsPage.experiments.${configItem.field}.name`), enabled: !!configItem.value, description: t(`settingsPage.experiments.${configItem.field}.description`), } - }) : [] + }) }) diff --git a/packages/config/__snapshots__/validation.spec.ts.js b/packages/config/__snapshots__/validation.spec.ts.js index dbc4461334c4..80ec71d78a30 100644 --- a/packages/config/__snapshots__/validation.spec.ts.js +++ b/packages/config/__snapshots__/validation.spec.ts.js @@ -28,7 +28,7 @@ exports['browsers list with a string'] = { exports['invalid retry value'] = { 'key': 'mockConfigKey', 'value': '1', - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls', + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } exports['invalid retry object'] = { @@ -36,7 +36,7 @@ exports['invalid retry object'] = { 'value': { 'fakeMode': 1, }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls', + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } exports['not qualified url'] = { @@ -106,7 +106,7 @@ exports['null instead of a number'] = { exports['config/src/validation .isValidClientCertificatesSet returns error message for certs not passed as an array array 1'] = { 'key': 'mockConfigKey', 'value': '1', - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls', + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } exports['config/src/validation .isValidClientCertificatesSet returns error message for certs object without url 1'] = { @@ -332,3 +332,334 @@ exports['extraneous keys'] = { }, 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', } + +exports['config/src/validation .isValidRetriesConfig experimental options fails with invalid strategy 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'foo', + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with invalid strategy w/ other options 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': 1, + 'openMode': 0, + 'experimentalStrategy': 'bar', + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with maxRetries is negative 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': 1, + 'openMode': 0, + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': -2, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with maxRetries is 0 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': 1, + 'openMode': 0, + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 0, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with maxRetries is floating 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': 1, + 'openMode': 0, + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 3.5, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is negative 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': -2, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is 0 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': 0, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail" maxRetries is floating 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': 1, + 'openMode': 0, + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': 3.5, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: maxRetries is negative 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': -2, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: maxRetries is 0 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 0, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold" maxRetries is floating 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': 1, + 'openMode': 0, + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 3.5, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is floating 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': 3.5, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: maxRetries is floating 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 3.5, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold passesRequired is negative 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 1, + 'passesRequired': -4, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold passesRequired is 0 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 1, + 'passesRequired': 0, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold passesRequired is floating 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 1, + 'passesRequired': 3.5, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold provides passesRequired without maxRetries 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'passesRequired': 3, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold provides passesRequired that is greater than maxRetries 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 3, + 'passesRequired': 5, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold provides stopIfAnyPassed option 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 3, + 'stopIfAnyPassed': true, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail provides passesRequired option 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': 3, + 'passesRequired': 2, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail provides stopIfAnyPassed without maxRetries 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'stopIfAnyPassed': false, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail stopIfAnyPassed is a number (not coerced to a boolean 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': 2, + 'stopIfAnyPassed': 1, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail stopIfAnyPassed is a number (0 and 1 work) 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': 2, + 'stopIfAnyPassed': 2, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail stopIfAnyPassed is a number (0 and 1 do not work) 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': 2, + 'stopIfAnyPassed': 1, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with invalid strategy w/ other options (valid) 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': true, + 'openMode': false, + 'experimentalStrategy': 'bar', + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: valid strategy w/ other invalid options with experiment 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': 1, + 'openMode': 0, + 'experimentalStrategy': 'detect-flake-but-always-fail', + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: valid strategy w/ other invalid options with experiment 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'runMode': 1, + 'openMode': 0, + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with experimentalStrategy is "detect-flake-but-always-fail" with only "maxRetries" in "experimentalOptions" 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-but-always-fail', + 'experimentalOptions': { + 'maxRetries': 4, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} + +exports['config/src/validation .isValidRetriesConfig experimental options fails with experimentalStrategy is "detect-flake-and-pass-on-threshold" with only "maxRetries" in "experimentalOptions" 1'] = { + 'key': 'mockConfigKey', + 'value': { + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalOptions': { + 'maxRetries': 4, + }, + }, + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', +} diff --git a/packages/config/src/options.ts b/packages/config/src/options.ts index 2cef1c2a3688..6ad71b904abb 100644 --- a/packages/config/src/options.ts +++ b/packages/config/src/options.ts @@ -364,10 +364,32 @@ const driverConfigOptions: Array = [ validation: validate.isNumber, overrideLevel: 'any', }, { + /** + * if experimentalStrategy is `detect-flake-and-pass-on-threshold` + * an no experimentalOptions are configured, the following configuration + * should be implicitly used: + * experimentalStrategy: 'detect-flake-and-pass-on-threshold', + * experimentalOptions: { + * maxRetries: 2, + * passesRequired: 2 + * } + * + * if experimentalStrategy is `detect-flake-but-always-fail` + * an no experimentalOptions are configured, the following configuration + * should be implicitly used: + * experimentalStrategy: 'detect-flake-but-always-fail', + * experimentalOptions: { + * maxRetries: 2, + * stopIfAnyPassed: false + * } + */ name: 'retries', defaultValue: { runMode: 0, openMode: 0, + // these values MUST be populated in order to display the experiment correctly inside the project settings in open mode + experimentalStrategy: undefined, + experimentalOptions: undefined, }, validation: validate.isValidRetriesConfig, overrideLevel: 'any', diff --git a/packages/config/src/validation.ts b/packages/config/src/validation.ts index 180d59086105..0ef78a65b92d 100644 --- a/packages/config/src/validation.ts +++ b/packages/config/src/validation.ts @@ -120,8 +120,50 @@ export const isValidBrowserList = (_key: string, browsers: any): ErrResult | tru return true } +const isValidExperimentalRetryOptionsConfig = (options: any, strategy: 'detect-flake-but-always-fail' | 'detect-flake-and-pass-on-threshold'): boolean => { + if (options != null) { + // retries must be an integer of 1 or greater + const isValidMaxRetries = _.isInteger(options.maxRetries) && options.maxRetries > 0 + + if (!isValidMaxRetries) { + return false + } + + // if the strategy is 'detect-flake-but-always-fail', stopIfAnyPassed must be provided and must be a boolean + if (strategy === 'detect-flake-but-always-fail') { + if (options.passesRequired !== undefined) { + return false + } + + const isValidStopIfAnyPasses = _.isBoolean(options.stopIfAnyPassed) + + if (!isValidStopIfAnyPasses) { + return false + } + } + + // if the strategy is 'detect-flake-and-pass-on-threshold', passesRequired must be provided and must be an integer greater than 0 + if (strategy === 'detect-flake-and-pass-on-threshold') { + if (options.stopIfAnyPassed !== undefined) { + return false + } + + const isValidPassesRequired = _.isInteger(options.passesRequired) && options.passesRequired > 0 && options.passesRequired <= options.maxRetries + + if (!isValidPassesRequired) { + return false + } + } + } + + return true +} + export const isValidRetriesConfig = (key: string, value: any): ErrResult | true => { const optionalKeys = ['runMode', 'openMode'] + const experimentalOptions = ['experimentalStrategy', 'experimentalOptions'] + const experimentalStrategyOptions = ['detect-flake-but-always-fail', 'detect-flake-and-pass-on-threshold'] + const isValidRetryValue = (val: any) => _.isNull(val) || (Number.isInteger(val) && val >= 0) const optionalKeysAreValid = (val: any, k: string) => optionalKeys.includes(k) && isValidRetryValue(val) @@ -129,11 +171,37 @@ export const isValidRetriesConfig = (key: string, value: any): ErrResult | true return true } - if (_.isObject(value) && _.every(value, optionalKeysAreValid)) { - return true + if (_.isObject(value)) { + const traditionalConfigOptions = _.omit(value, experimentalOptions) + const experimentalConfigOptions = _.pick(value, experimentalOptions) + + const isTraditionalConfigValid = _.every(traditionalConfigOptions, optionalKeysAreValid) + + // if optionalKeys are only present and are valid, return true. + // The defaults for 'experimentalStrategy' and 'experimentalOptions' are undefined, but the keys exist, so we need to check for this + if (isTraditionalConfigValid && !Object.keys(experimentalConfigOptions).filter((key) => experimentalConfigOptions[key] !== undefined).length) { + return true + } + + // check experimental configuration. experimentalStrategy MUST be present if experimental config is provided and set to one of the provided enumerations + if (experimentalConfigOptions.experimentalStrategy) { + // make sure the strategy provided is one of our valid enums + const isValidStrategy = experimentalStrategyOptions.includes(experimentalConfigOptions.experimentalStrategy) + + // if a strategy is provided, and traditional options are also provided, such as runMode and openMode, then these values need to be booleans + const openAndRunModeConfigOptions = _.pick(value, optionalKeys) + const isValidRunAndOpenModeConfigWithStrategy = _.every(openAndRunModeConfigOptions, _.isBoolean) + + // if options aren't present (either undefined or null) or are configured correctly, return true + if (isValidStrategy && isValidRunAndOpenModeConfigWithStrategy && ( + experimentalConfigOptions.experimentalOptions == null || + isValidExperimentalRetryOptionsConfig(experimentalConfigOptions.experimentalOptions, experimentalConfigOptions.experimentalStrategy))) { + return true + } + } } - return errMsg(key, value, 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls') + return errMsg(key, value, 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy') } /** diff --git a/packages/config/test/project/utils.spec.ts b/packages/config/test/project/utils.spec.ts index 7342c6557527..502795dafe6f 100644 --- a/packages/config/test/project/utils.spec.ts +++ b/packages/config/test/project/utils.spec.ts @@ -1113,7 +1113,7 @@ describe('config/src/project/utils', () => { reporterOptions: { value: null, from: 'default' }, requestTimeout: { value: 5000, from: 'default' }, responseTimeout: { value: 30000, from: 'default' }, - retries: { value: { runMode: 0, openMode: 0 }, from: 'default' }, + retries: { value: { runMode: 0, openMode: 0, experimentalStrategy: undefined, experimentalOptions: undefined }, from: 'default' }, screenshotOnRunFailure: { value: true, from: 'default' }, screenshotsFolder: { value: 'cypress/screenshots', from: 'default' }, specPattern: { value: 'cypress/e2e/**/*.cy.{js,jsx,ts,tsx}', from: 'default' }, @@ -1234,7 +1234,7 @@ describe('config/src/project/utils', () => { reporterOptions: { value: null, from: 'default' }, requestTimeout: { value: 5000, from: 'default' }, responseTimeout: { value: 30000, from: 'default' }, - retries: { value: { runMode: 0, openMode: 0 }, from: 'default' }, + retries: { value: { runMode: 0, openMode: 0, experimentalStrategy: undefined, experimentalOptions: undefined }, from: 'default' }, screenshotOnRunFailure: { value: true, from: 'default' }, screenshotsFolder: { value: 'cypress/screenshots', from: 'default' }, slowTestThreshold: { value: 10000, from: 'default' }, diff --git a/packages/config/test/validation.spec.ts b/packages/config/test/validation.spec.ts index df538d799da8..de5d9c450c96 100644 --- a/packages/config/test/validation.spec.ts +++ b/packages/config/test/validation.spec.ts @@ -166,6 +166,289 @@ describe('config/src/validation', () => { expect(result).to.not.be.true snapshot('invalid retry object', result) }) + + it('returns true for valid retry object with experimental keys (default)', () => { + let result = validation.isValidRetriesConfig(mockKey, { + openMode: 0, + runMode: 0, + experimentalStrategy: undefined, + experimentalOptions: undefined, + }) + + expect(result).to.be.true + }) + + describe('experimental options', () => { + describe('passes with', () => { + ['detect-flake-but-always-fail', 'detect-flake-and-pass-on-threshold'].forEach((strategy) => { + it(`experimentalStrategy is "${strategy}" with no "experimentalOptions" & valid runMode and openMode`, () => { + let result = validation.isValidRetriesConfig(mockKey, { + runMode: true, + openMode: false, + experimentalStrategy: strategy, + }) + + expect(result).to.be.true + + result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: strategy, + }) + + expect(result).to.be.true + }) + }) + + it('experimentalStrategy is "detect-flake-but-always-fail" and has option "stopIfAnyPassed"', () => { + let result = validation.isValidRetriesConfig(mockKey, { + runMode: true, + openMode: false, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 1, + stopIfAnyPassed: true, + }, + }) + + expect(result).to.be.true + + result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 4, + stopIfAnyPassed: false, + }, + }) + + expect(result).to.be.true + }) + + it('experimentalStrategy is "detect-flake-and-pass-on-threshold" and has option "passesRequired"', () => { + let result = validation.isValidRetriesConfig(mockKey, { + runMode: true, + openMode: false, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 1, + passesRequired: 1, + }, + }) + + expect(result).to.be.true + + result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 4, + passesRequired: 2, + }, + }) + + expect(result).to.be.true + }) + }) + + describe('fails with', () => { + it('invalid strategy', () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'foo', + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it('invalid strategy w/ other options (valid)', () => { + const result = validation.isValidRetriesConfig(mockKey, { + runMode: true, + openMode: false, + experimentalStrategy: 'bar', + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + ;['detect-flake-but-always-fail', 'detect-flake-and-pass-on-threshold'].forEach((strategy) => { + it(`${strategy}: valid strategy w/ other invalid options with experiment`, () => { + const result = validation.isValidRetriesConfig(mockKey, { + runMode: 1, + openMode: 0, + experimentalStrategy: strategy, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it(`${strategy}: maxRetries is negative`, () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: strategy, + experimentalOptions: { + maxRetries: -2, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it(`${strategy}: maxRetries is 0`, () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: strategy, + experimentalOptions: { + maxRetries: 0, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it(`${strategy}: maxRetries is floating`, () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: strategy, + experimentalOptions: { + maxRetries: 3.5, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it(`experimentalStrategy is "${strategy}" with only "maxRetries" in "experimentalOptions"`, () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: strategy, + experimentalOptions: { + maxRetries: 4, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + }) + + describe('detect-flake-and-pass-on-threshold', () => { + it(`passesRequired is negative`, () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 1, + passesRequired: -4, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it(`passesRequired is 0`, () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 1, + passesRequired: 0, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it(`passesRequired is floating`, () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 1, + passesRequired: 3.5, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it('provides passesRequired without maxRetries', () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + passesRequired: 3, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it('provides passesRequired that is greater than maxRetries', () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 3, + passesRequired: 5, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it('provides stopIfAnyPassed option', () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 3, + stopIfAnyPassed: true, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + }) + + describe('detect-flake-but-always-fail', () => { + it('provides passesRequired option', () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 3, + passesRequired: 2, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it('provides stopIfAnyPassed without maxRetries', () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + stopIfAnyPassed: false, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + + it('stopIfAnyPassed is a number (0 and 1 do not work)', () => { + const result = validation.isValidRetriesConfig(mockKey, { + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 2, + stopIfAnyPassed: 1, + }, + }) + + expect(result).to.not.be.true + snapshot(result) + }) + }) + }) + }) }) describe('.isPlainObject', () => { diff --git a/packages/frontend-shared/src/locales/en-US.json b/packages/frontend-shared/src/locales/en-US.json index da26aa6f1dc9..5432660213dd 100644 --- a/packages/frontend-shared/src/locales/en-US.json +++ b/packages/frontend-shared/src/locales/en-US.json @@ -590,6 +590,16 @@ "name": "Modify obstructive third party code", "description": "Applies `modifyObstructiveCode` to third party `.html` and `.js`, removes subresource integrity, and modifies the user agent in Electron." }, + "retries": { + "experimentalStrategy": { + "name": "Retries Strategy", + "description": "Applies a strategy for test retries according to your \"flake tolerance\"; options are `detect-flake-but-always-fail` or `detect-flake-and-pass-on-threshold`." + }, + "experimentalOptions": { + "name": "Retries Strategy Options", + "description": "Sets retries strategy-specific options like `maxRetries`, `passesRequired`, and `stopIfAnyPassed`." + } + }, "experimentalSingleTabRunMode": { "name": "Single tab run mode", "description": "Runs all component specs in a single tab, trading spec isolation for faster run mode execution." diff --git a/packages/server/test/unit/config_spec.js b/packages/server/test/unit/config_spec.js index 5c3fae8fc6f9..1836e3ca19f7 100644 --- a/packages/server/test/unit/config_spec.js +++ b/packages/server/test/unit/config_spec.js @@ -897,7 +897,7 @@ describe('lib/config', () => { }) context('retries', () => { - const retriesError = 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls' + const retriesError = 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy' // need to keep the const here or it'll get stripped by the build // eslint-disable-next-line no-unused-vars diff --git a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js index 9a1f6a5374c9..d8331f4f95e4 100644 --- a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js +++ b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js @@ -320,7 +320,7 @@ https://on.cypress.io/config runs: CypressError: The config passed to your suite-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -369,7 +369,7 @@ https://on.cypress.io/config "before all" hook for "test config override throws error": CypressError: The config passed to your test-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -383,7 +383,7 @@ Because this error occurred during a \`before all\` hook we are skipping the rem test config override throws error: CypressError: The config passed to your test-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -528,7 +528,7 @@ Instead the value was: \`"null"\` runs: CypressError: The config passed to your suite-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -581,7 +581,7 @@ https://on.cypress.io/config "before all" hook for "test config override throws error": CypressError: The config passed to your test-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -596,7 +596,7 @@ Because this error occurred during a \`before all\` hook we are skipping the rem test config override throws error: CypressError: The config passed to your test-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -676,7 +676,7 @@ exports['testConfigOverrides / correctly fails when invalid config values for it throws error at the correct line number: CypressError: The config passed to your suite-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -992,7 +992,7 @@ https://on.cypress.io/config runs: CypressError: The config passed to your suite-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -1037,7 +1037,7 @@ https://on.cypress.io/config "before all" hook for "test config override throws error": CypressError: The config passed to your test-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -1050,7 +1050,7 @@ Because this error occurred during a \`before all\` hook we are skipping the rem test config override throws error: CypressError: The config passed to your test-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -1194,7 +1194,7 @@ Instead the value was: \`"null"\` runs: CypressError: The config passed to your suite-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -1243,7 +1243,7 @@ https://on.cypress.io/config "before all" hook for "test config override throws error": CypressError: The config passed to your test-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -1257,7 +1257,7 @@ Because this error occurred during a \`before all\` hook we are skipping the rem test config override throws error: CypressError: The config passed to your test-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` @@ -1336,7 +1336,7 @@ exports['testConfigOverrides / correctly fails when invalid config values for it throws error at the correct line number: CypressError: The config passed to your suite-level overrides has the following validation error: -Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls. +Expected \`retries\` to be a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy. Instead the value was: \`"1"\` From 209b7195006c7d285b35380182f857fd24fa731a Mon Sep 17 00:00:00 2001 From: astone123 Date: Mon, 14 Aug 2023 15:19:29 -0600 Subject: [PATCH 04/40] fix cache invalidation [run ci] --- packages/runner/README.md | 10 ++++++++++ packages/runner/package.json | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/runner/README.md b/packages/runner/README.md index 5c0c56cf956a..60e0e4a75a8f 100644 --- a/packages/runner/README.md +++ b/packages/runner/README.md @@ -7,3 +7,13 @@ This is an old package, deprecated in favor of `@packages/app`. It has two remai 3. Contains `dom.js`, which uses proprietary webpack loaders and cannot easily be imported with Vite (dev server in `@packages/app`). Once `dom.js` is free of webpack-specific loader code, we should move it to `@packages/app`. 4. Contains Cypress Studio Recorder code, which was marked as experimental in Cypress 9.x and won't be part of Cypress 10.x initially. It will return at a later date. Until then, the code will be here. It's not currently used in the app. @see https://github.com/cypress-io/cypress/issues/22870 5. Contains Legacy Cypress styles, most of these can likely be removed. + +## Implicit Dependencies + +We have the following implicit dependencies defined in package.json + +- @packages/driver +- @packages/config +- @packages/reporter + +The source code from these packages are bundled into dist/cypress_runner.js when this package is built. Because of this, we need to specify to Nx that any changes in the source files of the above packages need to invalidate the build cache for this package so that it gets rebuilt. diff --git a/packages/runner/package.json b/packages/runner/package.json index 1df233ab6748..dd890408a8c3 100644 --- a/packages/runner/package.json +++ b/packages/runner/package.json @@ -24,5 +24,12 @@ }, "files": [ "dist" - ] + ], + "nx": { + "implicitDependencies": [ + "@packages/driver", + "@packages/reporter", + "@packages/config" + ] + } } From bb5046c91e023930341ad2fcc2372ff18573dec6 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Wed, 6 Sep 2023 14:32:49 -0400 Subject: [PATCH 05/40] fix snapshot added in v13 for module api to include test burn in experimentalflag --- system-tests/__snapshots__/results_spec.ts.js | 1 + 1 file changed, 1 insertion(+) diff --git a/system-tests/__snapshots__/results_spec.ts.js b/system-tests/__snapshots__/results_spec.ts.js index 3021b40aa5b5..950e03458f69 100644 --- a/system-tests/__snapshots__/results_spec.ts.js +++ b/system-tests/__snapshots__/results_spec.ts.js @@ -14,6 +14,7 @@ exports['module api and after:run results'] = ` "arch": "x64", "baseUrl": null, "blockHosts": null, + "experimentalBurnIn": false, "chromeWebSecurity": true, "clientCertificates": [], "defaultCommandTimeout": 4000, From d08a7fa1912310294eec4e597a24e9b718dd4ce6 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Wed, 6 Sep 2023 14:46:18 -0400 Subject: [PATCH 06/40] chore: fix merge conflict --- .circleci/workflows.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index 76c7a7f3c765..56466e6767e0 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -142,11 +142,7 @@ commands: name: Set environment variable to determine whether or not to persist artifacts command: | echo "Setting SHOULD_PERSIST_ARTIFACTS variable" -<<<<<<< HEAD - echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "publish-binary" && "$CIRCLE_BRANCH" != "feature/test-burn-in" ]]; then -======= - echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "publish-binary" && "$CIRCLE_BRANCH" != "update-v8-snapshot-cache-on-develop" && "$CIRCLE_BRANCH" != "ryanm/feat/handle-304s" ]]; then ->>>>>>> b5c379ffb904aed8fe969d271b99a445e9f567b7 + echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "publish-binary" && "$CIRCLE_BRANCH" != "update-v8-snapshot-cache-on-develop" && "$CIRCLE_BRANCH" != "feature/test-burn-in" ]]; 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 From ae3df1a505ed16d29e524a941078ea28b0a94b3c Mon Sep 17 00:00:00 2001 From: mabela416 Date: Tue, 12 Sep 2023 09:20:18 -0400 Subject: [PATCH 07/40] chore: add burnInTestAction capability (#27768) * add burnInTestAction capability * feat: add burn in capability for cloud * chore: fix snapshot for record_spec --- packages/server/lib/cloud/api.ts | 1 + packages/server/test/unit/cloud/api_spec.js | 1 + system-tests/__snapshots__/record_spec.js | 3 ++- system-tests/test/record_spec.js | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/server/lib/cloud/api.ts b/packages/server/lib/cloud/api.ts index 727c8f92dd2e..7da6cf3391fc 100644 --- a/packages/server/lib/cloud/api.ts +++ b/packages/server/lib/cloud/api.ts @@ -37,6 +37,7 @@ const runnerCapabilities = { 'dynamicSpecsInSerialMode': true, 'skipSpecAction': true, 'protocolMountVersion': 2, + 'burnInTestAction': true, } let responseCache = {} diff --git a/packages/server/test/unit/cloud/api_spec.js b/packages/server/test/unit/cloud/api_spec.js index b92156dac52f..691fdba882e0 100644 --- a/packages/server/test/unit/cloud/api_spec.js +++ b/packages/server/test/unit/cloud/api_spec.js @@ -559,6 +559,7 @@ describe('lib/cloud/api', () => { 'protocolMountVersion': 2, 'dynamicSpecsInSerialMode': true, 'skipSpecAction': true, + 'burnInTestAction': true, }, } }) diff --git a/system-tests/__snapshots__/record_spec.js b/system-tests/__snapshots__/record_spec.js index a592cf617c90..f47345f3e799 100644 --- a/system-tests/__snapshots__/record_spec.js +++ b/system-tests/__snapshots__/record_spec.js @@ -2368,7 +2368,8 @@ Request Sent: "runnerCapabilities": { "dynamicSpecsInSerialMode": true, "skipSpecAction": true, - "protocolMountVersion": 2 + "protocolMountVersion": 2, + "burnInTestAction": true } } diff --git a/system-tests/test/record_spec.js b/system-tests/test/record_spec.js index 6bbdf75c937f..7634ca4e87c4 100644 --- a/system-tests/test/record_spec.js +++ b/system-tests/test/record_spec.js @@ -730,6 +730,7 @@ describe('e2e record', () => { 'dynamicSpecsInSerialMode': true, 'protocolMountVersion': 2, 'skipSpecAction': true, + 'burnInTestAction': true, }) }) From a1ad9ca1653a9377b8899591e5185f31c4889ffd Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Wed, 27 Sep 2023 16:09:39 -0400 Subject: [PATCH 08/40] feat: implement experimental retries (#27826) * chore: format the retries/runner snapshot files to make diff easier * feat: implement experimentalRetries strategies 'detect-flake-and-pass-on-threshold' and 'detect-flake-but-always-fail'. This should not be a breaking change, though it does modify mocha and the test object even when the experiment is not configured. This is to exercise the system and make sure things still work as expected even when we go GA. Test updates will follow in following commits. * chore: update snapshots from system tests and cy-in-cy tests that now have the cypress test metadata property _cypressTestStatusInfo. tests have been added in the fail-with-[before|after]each specs to visually see the suite being skipped when developing. * chore: add cy-in-cy tests to verify reporter behavior for pass/fail tests, as well as new mocha snapshots to verify attempts. New tests were needed for this as the 'retries' option in testConfigOverrides currently is and will be invalid for experiment and will function as an override. tests run in the cy-in-cy tests are using globally configured experimentalRetries for the given tested project, which showcases the different behavior between attempts/retries and pass/fail status. * chore: add unit test like driver test to verify the test object in mocha is decorated/handled properly in calculateTestStatus * chore: add sanity system tests to verify console reporter output for experimental retries logic. Currently there is a bug in the reporter where the logged status doesnt wait for the aftereach to complete, which impacts the total exitCode and printed status. * fix: aftereach console output. make sure to fail the test in the appropriate spot in runner.ts and not prematurely, which in turn updates the snapshots for cy-in-cy as the fail event comes later." * chore: address comments from code review * fix: make sure hook failures print outer status + attempts when the error is the hook itself. * chore: improve types within calculateTestStatus inside mocha.ts --- ...ries.experimentalRetries.mochaEvents.cy.ts | 413 + ...perimentalRetries.mochaEvents.snapshots.ts | 54372 ++++++++++++++++ .../runner/retries.mochaEvents.snapshots.ts | 12189 ++-- ...nner.experimentalRetries.mochaEvents.cy.ts | 173 + ...perimentalRetries.mochaEvents.snapshots.ts | 30737 +++++++++ .../runner/runner.mochaEvents.snapshots.ts | 7037 +- .../e2e/runner/support/mochaEventsUtils.ts | 4 + .../cypress/e2e/runner/support/spec-loader.ts | 13 +- packages/app/src/runner/event-manager.ts | 7 +- .../e2e/util/mocha_custom_methods.cy.js | 294 + packages/driver/patches/mocha+7.0.1.dev.patch | 85 + packages/driver/src/cypress.ts | 11 +- packages/driver/src/cypress/mocha.ts | 122 + packages/driver/src/cypress/runner.ts | 130 +- packages/driver/types/internal-types.d.ts | 9 + .../reporter/src/attempts/attempt-model.ts | 5 + packages/reporter/src/lib/events.ts | 4 +- packages/reporter/src/test/test-model.ts | 22 +- packages/server/lib/project-base.ts | 2 +- packages/server/lib/reporter.js | 209 +- .../experimental_retries.spec.ts.js | 2302 + system-tests/__snapshots__/protocol_spec.js | 90 + ...y-from-afterEach.retries.mochaEvents.cy.js | 37 + ...-from-beforeEach.retries.mochaEvents.cy.js | 20 + ...etry-from-before.retries.mochaEvents.cy.js | 17 + .../does-not-serialize-dom-error.cy.js | 4 + .../simple-fail.retries.mochaEvents.cy.js | 10 + ...retry-with-hooks.retries.mochaEvents.cy.js | 15 + ...-retry-with-only.retries.mochaEvents.cy.js | 20 + ...tests-with-retry.retries.mochaEvents.cy.js | 19 + .../fail-with-afterEach.mochaEvents.cy.js | 1 + .../fail-with-beforeEach.mochaEvents.cy.js | 1 + .../cypress.config.js | 15 + .../package.json | 3 + .../cypress.config.js | 15 + .../package.json | 3 + .../cypress.config.js | 15 + .../detect-flake-but-always-fail/package.json | 3 + .../experimental-retries/cypress.config.js | 14 + .../cypress/e2e/always-fails.cy.js | 5 + .../cypress/e2e/always-passes.cy.js | 5 + .../cypress/e2e/deterministic-flaky.cy.js | 15 + .../test/experimental_retries.spec.ts | 325 + 43 files changed, 99434 insertions(+), 9358 deletions(-) create mode 100644 packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts create mode 100644 packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.snapshots.ts create mode 100644 packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts create mode 100644 packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.snapshots.ts create mode 100644 packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js create mode 100644 system-tests/__snapshots__/experimental_retries.spec.ts.js create mode 100644 system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/can-retry-from-afterEach.retries.mochaEvents.cy.js create mode 100644 system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/can-retry-from-beforeEach.retries.mochaEvents.cy.js create mode 100644 system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/cant-retry-from-before.retries.mochaEvents.cy.js create mode 100644 system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/does-not-serialize-dom-error.cy.js create mode 100644 system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/simple-fail.retries.mochaEvents.cy.js create mode 100644 system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/test-retry-with-hooks.retries.mochaEvents.cy.js create mode 100644 system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/test-retry-with-only.retries.mochaEvents.cy.js create mode 100644 system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/three-tests-with-retry.retries.mochaEvents.cy.js create mode 100644 system-tests/projects/detect-flake-and-pass-on-threshold/cypress.config.js create mode 100644 system-tests/projects/detect-flake-and-pass-on-threshold/package.json create mode 100644 system-tests/projects/detect-flake-but-always-fail-stop-any-passed/cypress.config.js create mode 100644 system-tests/projects/detect-flake-but-always-fail-stop-any-passed/package.json create mode 100644 system-tests/projects/detect-flake-but-always-fail/cypress.config.js create mode 100644 system-tests/projects/detect-flake-but-always-fail/package.json create mode 100644 system-tests/projects/experimental-retries/cypress.config.js create mode 100644 system-tests/projects/experimental-retries/cypress/e2e/always-fails.cy.js create mode 100644 system-tests/projects/experimental-retries/cypress/e2e/always-passes.cy.js create mode 100644 system-tests/projects/experimental-retries/cypress/e2e/deterministic-flaky.cy.js create mode 100644 system-tests/test/experimental_retries.spec.ts diff --git a/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts b/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts new file mode 100644 index 000000000000..8acadd3ac8a1 --- /dev/null +++ b/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts @@ -0,0 +1,413 @@ +import { loadSpec, runSpec } from './support/spec-loader' +import { runCypressInCypressMochaEventsTest } from './support/mochaEventsUtils' +import { snapshots } from './retries.experimentalRetries.mochaEvents.snapshots' + +/** + * The mochaEvent tests require a spec to be loaded and executed within an inner Cypress context. + * The spec must load and execute within the duration of the Cypress command timeout. + * The execution time of the inner Cypress is resource/OS dependant and can exceed the default value (4s), + * so we have increased the command timeout to allow the inner spec more time to complete and report + * its mocha event log. + */ + +/** + * In context to experimentalRetries, what is considered a passed/failed test is going to vary depending on the project. + * 'detect-flake-and-pass-on-threshold' will have a passed test as long as the config passesRequired is satisfied on retries. + * 'detect-flake-but-always-fail' projects should have the same passed/failed tests, but different number of attempts depending on stopIfAnyPassed + */ +describe('Experimental retries: mochaEvents & test status tests', { retries: 0, defaultCommandTimeout: 7500 }, () => { + const projects: ['detect-flake-and-pass-on-threshold', 'detect-flake-but-always-fail', 'detect-flake-but-always-fail-stop-any-passed'] = ['detect-flake-and-pass-on-threshold', 'detect-flake-but-always-fail', 'detect-flake-but-always-fail-stop-any-passed'] + + projects.forEach((project) => { + describe(project, () => { + // This will differ per strategy + // for each project: + // 'detect-flake-and-pass-on-threshold': will run a total of 6 times. The first attempt will fail and the next 5 attempts will pass. The test passes. + // 'detect-flake-but-always-fail': will run a total of 10 times. The first attempt will fail and the next 9 attempts will pass. The test fails. + // 'detect-flake-but-always-fail-stop-any-passed': will run a total of 2 times. The first attempt will fail and the second attempt will pass. The test fails. + describe('simple retry', () => { + it('matches mocha snapshot', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": retries mochaEvents simple retry #1`, + done, + ) + + runSpec({ + fileName: 'experimental-retries/simple-fail.retries.mochaEvents.cy.js', + projectName: project, + + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + it('displays correct passed/failed tests', () => { + loadSpec({ + filePath: 'runner/experimental-retries/simple-fail.retries.mochaEvents.cy.js', + projectName: project, + passCount: project === 'detect-flake-and-pass-on-threshold' ? 1 : 0, + failCount: project === 'detect-flake-and-pass-on-threshold' ? 0 : 1, + }) + }) + }) + + // This will differ per strategy + // for each project: + // 'detect-flake-and-pass-on-threshold': will run a total of 6 times. The first attempt will fail and the next 5 attempts will pass. The test passes. + // 'detect-flake-but-always-fail': will run a total of 10 times. The first attempt will fail and the next 9 attempts will pass. The test fails. + // 'detect-flake-but-always-fail-stop-any-passed': will run a total of 2 times. The first attempt will fail and the second attempt will pass. The test fails. + describe('test retry with hooks', () => { + it('matches mocha snapshot', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": retries mochaEvents test retry with hooks #1`, + done, + ) + + runSpec({ + fileName: 'experimental-retries/test-retry-with-hooks.retries.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + it('displays correct passed/failed tests', () => { + loadSpec({ + filePath: 'runner/experimental-retries/test-retry-with-hooks.retries.mochaEvents.cy.js', + projectName: project, + passCount: project === 'detect-flake-and-pass-on-threshold' ? 1 : 0, + failCount: project === 'detect-flake-and-pass-on-threshold' ? 0 : 1, + }) + }) + }) + + // This will differ per strategy + // for each project: + // 'detect-flake-and-pass-on-threshold': will run a total of 6 times. The first attempt will fail and the next 5 attempts will pass. The test passes. + // 'detect-flake-but-always-fail': will run a total of 10 times. The first attempt will fail and the next 9 attempts will pass. The test fails. + // 'detect-flake-but-always-fail-stop-any-passed': will run a total of 2 times. The first attempt will fail and the second attempt will pass. The test fails. + describe('test retry with [only]', () => { + it('matches mocha snapshot', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": retries mochaEvents test retry with [only] #1`, + done, + ) + + runSpec({ + fileName: 'experimental-retries/test-retry-with-only.retries.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + it('displays correct passed/failed tests', () => { + loadSpec({ + filePath: 'runner/experimental-retries/test-retry-with-only.retries.mochaEvents.cy.js', + projectName: project, + passCount: project === 'detect-flake-and-pass-on-threshold' ? 1 : 0, + failCount: project === 'detect-flake-and-pass-on-threshold' ? 0 : 1, + }) + }) + }) + + // This will differ per strategy + // for each project: + // 'detect-flake-and-pass-on-threshold': will run a total of 6 times. The first attempt will fail and the next 5 attempts will pass. The test passes. + // 'detect-flake-but-always-fail': will run a total of 10 times. The first attempt will fail and the next 9 attempts will pass. The test fails. + // 'detect-flake-but-always-fail-stop-any-passed': will run a total of 2 times. The first attempt will fail and the second attempt will pass. The test fails. + describe('can retry from [beforeEach]', () => { + it('matches mocha snapshot', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": retries mochaEvents can retry from [beforeEach] #1`, + done, + ) + + runSpec({ + fileName: 'experimental-retries/can-retry-from-beforeEach.retries.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + it('displays correct passed/failed tests', () => { + loadSpec({ + filePath: 'runner/experimental-retries/can-retry-from-beforeEach.retries.mochaEvents.cy.js', + projectName: project, + passCount: project === 'detect-flake-and-pass-on-threshold' ? 1 : 0, + failCount: project === 'detect-flake-and-pass-on-threshold' ? 0 : 1, + }) + }) + }) + + /** + * This will differ per strategy. The spec under test is a bit more complex + * for each project: + * + * 'detect-flake-and-pass-on-threshold': + * + * Suite 1 (passed) + * Test 1 (passed) + * Attempt 1 (failed) + * Attempt 2 (passed) + * Attempt 3 (passed) + * Attempt 4 (passed) + * Attempt 5 (passed) + * Attempt 6 (passed) (passesRequired met) + * Test 2 (passed) + * Attempt 1 (passed) + * Test 3 (passed) + * Attempt 1 (passed) + * + * Suite 2 (passed) + * Test 1 (passed) + * Attempt 1 (failed) + * Attempt 2 (failed) + * Attempt 3 (passed) + * Attempt 4 (passed) + * Attempt 5 (passed) + * Attempt 6 (passed) + * Attempt 7 (passed) (passesRequired met) + * + * Suite 3 (passed) + * Test 1 (passed) + * Attempt 1 (passed) + * + * FINAL RESULT: + * 5 tests passed / 0 tests failed + * + * 'detect-flake-but-always-fail': + * + * Suite 1 (failed) + * Test 1 (failed) + * Attempt 1 (failed) + * Attempt 2 (passed) + * Attempt 3 (passed) + * Attempt 4 (passed) + * Attempt 5 (passed) + * Attempt 6 (passed) + * Attempt 7 (passed) + * Attempt 8 (passed) + * Attempt 9 (passed) + * Attempt 10 (passed) (maxRetries achieved because stopIfAnyPassed=false, fail the test because flaky) + * Test 2 (passed) + * Attempt 1 (passed) + * Test 3 (passed) + * Attempt 1 (passed) + * + * Suite 2 (failed) + * Test 1 (failed) + * Attempt 1 (failed) + * Attempt 2 (failed) + * Attempt 3 (passed) + * Attempt 4 (passed) + * Attempt 5 (passed) + * Attempt 6 (passed) + * Attempt 7 (passed) + * Attempt 8 (passed) + * Attempt 9 (passed) + * Attempt 10 (passed) (maxRetries achieved because stopIfAnyPassed=false, fail the test because flaky) + * + * Suite 3 (passed) + * Test 1 (passed) + * Attempt 1 (passed) + * + * FINAL RESULT: + * 3 tests passed / 2 tests failed + * + * 'detect-flake-but-always-fail-stop-any-passed': + * + * Suite 1 (failed) + * Test 1 (failed) + * Attempt 1 (failed) + * Attempt 2 (passed) (stopIfAnyPassed=true so stop attempts, fail the test because flaky) + * Test 2 (passed) + * Attempt 1 (passed) + * Test 3 (passed) + * Attempt 1 (passed) + * + * Suite 2 (failed) + * Test 1 (failed) + * Attempt 1 (failed) + * Attempt 2 (failed) + * Attempt 3 (passed) (stopIfAnyPassed=true so stop attempts, fail the test because flaky) + * + * Suite 3 (passed) + * Test 1 (passed) + * Attempt 1 (passed) + * + * FINAL RESULT: + * 3 tests passed / 2 tests failed + */ + describe('can retry from [afterEach]', () => { + it('matches mocha snapshot', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": retries mochaEvents can retry from [afterEach] #1`, + done, + ) + + runSpec({ + fileName: 'experimental-retries/can-retry-from-afterEach.retries.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + it('displays correct passed/failed tests', () => { + loadSpec({ + filePath: 'runner/experimental-retries/can-retry-from-afterEach.retries.mochaEvents.cy.js', + projectName: project, + passCount: project === 'detect-flake-and-pass-on-threshold' ? 5 : 3, + failCount: project === 'detect-flake-and-pass-on-threshold' ? 0 : 2, + }) + }) + }) + + // this is the same for each test strategy. If the before hook fails the who suite is skipped and tests aren't run + describe('cant retry from [before]', () => { + it('matches mocha snapshot', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": retries mochaEvents cant retry from [before] #1`, + done, + ) + + runSpec({ + fileName: 'experimental-retries/cant-retry-from-before.retries.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + it('displays correct passed/failed tests', () => { + loadSpec({ + filePath: 'runner/experimental-retries/cant-retry-from-before.retries.mochaEvents.cy.js', + projectName: project, + passCount: 0, + failCount: 1, + }) + }) + }) + + /** + * This will differ per strategy. The spec under test is a bit more complex + * for each project: + * + * 'detect-flake-and-pass-on-threshold': + * + * Suite 1 (passed) + * Test 1 (passed) + * Attempt 1 (passed) + * Test 2 (passed) + * Attempt 1 (failed) + * Attempt 2 (failed) + * Attempt 3 (passed) + * Attempt 4 (passed) + * Attempt 5 (passed) + * Attempt 6 (passed) + * Attempt 7 (passed) (passesRequired met) + * Test 3 (passed) + * Attempt 1 (passed) + * + * FINAL RESULT: + * 3 tests passed / 0 tests failed + * + * 'detect-flake-but-always-fail': + * + * Suite 1 (failed) + * Test 1 (passed) + * Attempt 1 (passed) + * Test 2 (failed) + * Attempt 1 (failed) + * Attempt 2 (failed) + * Attempt 3 (passed) + * Attempt 4 (passed) + * Attempt 5 (passed) + * Attempt 6 (passed) + * Attempt 7 (passed) + * Attempt 8 (passed) + * Attempt 9 (passed) + * Attempt 10 (passed) (maxRetries achieved because stopIfAnyPassed=false, fail the test because flaky) + * Test 3 (passed) + * Attempt 1 (passed) + * + * FINAL RESULT: + * 2 tests passed / 1 tests failed + * + * 'detect-flake-but-always-fail-stop-any-passed': + * + * Suite 1 (failed) + * Test 1 (passed) + * Attempt 1 (passed) + * Test 2 (failed) + * Attempt 1 (failed) + * Attempt 2 (failed) + * Attempt 3 (passed) (stopIfAnyPassed=true so stop attempts, fail the test because flaky) + * Test 3 (passed) + * Attempt 1 (passed) + * + * FINAL RESULT: + * 2 tests passed / 1 tests failed + */ + describe('three tests with retry', () => { + it('matches mocha snapshot', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": retries mochaEvents three tests with retry #1`, + done, + ) + + runSpec({ + fileName: 'experimental-retries/three-tests-with-retry.retries.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + it('displays correct passed/failed tests', () => { + loadSpec({ + filePath: 'runner/experimental-retries/three-tests-with-retry.retries.mochaEvents.cy.js', + projectName: project, + passCount: project === 'detect-flake-and-pass-on-threshold' ? 3 : 2, + failCount: project === 'detect-flake-and-pass-on-threshold' ? 0 : 1, + }) + }) + }) + + // This will differ per strategy + // for each project: + // 'detect-flake-and-pass-on-threshold': will run a total of 6 times. All attempts fail. The test fails + // 'detect-flake-but-always-fail': will run a total of 10 times. All attempts fail. The test fails. + // 'detect-flake-but-always-fail-stop-any-passed': will run a total of 10 times. All attempts fail. The test fails. + describe('cleanses errors before emitting', () => { + it('does not try to serialize error with err.actual as DOM node', function (done) { + // because there are more attempts for 'detect-flake-but-always-fail', the timeout needs to be increased + this.timeout(15000) + + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": retries mochaEvents cleanses errors before emitting does not try to serialize error with err.actual as DOM node #1`, + done, + ) + + runSpec({ + fileName: 'experimental-retries/does-not-serialize-dom-error.cy.js', + projectName: project, + }).then((win) => { + // should not have err.actual, expected properties since the subject is a DOM element + assertMatchingSnapshot(win) + }) + }) + }) + }) + }) +}) diff --git a/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.snapshots.ts b/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.snapshots.ts new file mode 100644 index 000000000000..c4dcf888d418 --- /dev/null +++ b/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.snapshots.ts @@ -0,0 +1,54372 @@ +export const snapshots = { + '"detect-flake-and-pass-on-threshold": retries mochaEvents simple retry #1': [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + 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: '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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _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 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 2, + 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _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, + }, + ], + [ + '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 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 3, + 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _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 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + 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, + 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:before:run', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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: 5, + retries: 5, + _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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": retries mochaEvents simple retry #1': [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + 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: '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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _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 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 2, + 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _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, + }, + ], + [ + '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 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 3, + 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _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 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + 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, + 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:before:run', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 5, + 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _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: 6, + 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: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 6, + 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _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: 7, + 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: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 7, + 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _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: 8, + 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: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + '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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 8, + 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', + test: { fnDuration: 'match.number', afterFnDuration: 'match.number' }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _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: 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', + { + _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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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', + 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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": retries mochaEvents simple retry #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + 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: '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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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: 1, + retries: 1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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: 1, + retries: 1, + _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: 2, + 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: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-and-pass-on-threshold": retries mochaEvents test retry with hooks #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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: '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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 'failed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 1, + 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: 1, + 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: 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: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: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: 2, + 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: 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, + }, + ], + [ + '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', + { + 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, + }, + 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: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: 3, + 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: 3, + 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: 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', + 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: 4, + 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: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: 4, + 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: 4, + 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: 5, + 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: 5, + 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', + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": retries mochaEvents test retry with hooks #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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: '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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 'failed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 1, + 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: 1, + 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: 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: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: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: 2, + 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: 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, + }, + ], + [ + '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', + { + 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, + }, + 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: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: 3, + 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: 3, + 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: 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', + 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: 4, + 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: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: 4, + 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: 4, + 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: 5, + 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: 5, + 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: 5, + 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: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: 5, + 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: 5, + 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: 6, + 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: 6, + 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: 6, + 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: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: 6, + 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: 6, + 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: 7, + 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: 7, + 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: 7, + 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: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: 7, + 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: 7, + 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: 8, + 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: 8, + 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: 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, + }, + ], + [ + '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: 8, + 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: 8, + 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: 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 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', + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h3', + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h3', + 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', + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail-stop-any-passed": retries mochaEvents test retry with hooks #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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: '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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 'failed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 1, + 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: 1, + 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', + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _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: 2, + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-and-pass-on-threshold": retries mochaEvents test retry with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + 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 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, + }, + 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:after:run', + { + 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', + 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 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', + 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 2', + 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 2', + 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 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, + }, + 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:after:run', + { + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + 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', + { + 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, + }, + 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:after:run', + { + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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, + 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 2', + 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 2', + 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', + 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 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, + }, + 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:after:run', + { + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 4, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + 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', + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": retries mochaEvents test retry with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + 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 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, + }, + 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:after:run', + { + 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', + 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 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', + 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 2', + 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 2', + 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 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, + }, + 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:after:run', + { + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + 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', + { + 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, + }, + 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:after:run', + { + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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, + 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 2', + 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 2', + 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', + 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 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, + }, + 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:after:run', + { + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 4, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + 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 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, + }, + 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:after:run', + { + 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', + 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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 5, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + 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 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, + }, + 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:after:run', + { + 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', + 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: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 6, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + 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 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, + }, + 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:after:run', + { + 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', + 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: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 7, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + 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 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, + }, + 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:after:run', + { + 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', + 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: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 8, + 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 2', + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 9, + 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', + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + 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 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + 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', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": retries mochaEvents test retry with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + 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', + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _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: 2, + outerStatus: 'failed', + }, + 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'failed', + }, + 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-and-pass-on-threshold": retries mochaEvents can retry from [beforeEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h6', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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, + }, + ], + [ + '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 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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: 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 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before 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', + { + 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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + }, + { + 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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + }, + { + 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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": retries mochaEvents can retry from [beforeEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h6', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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, + }, + ], + [ + '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 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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: 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 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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: 6, + 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: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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: 7, + 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: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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: 8, + 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: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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', + }, + { + 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, + }, + 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: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', + }, + { + 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, + }, + ], + [ + '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', + }, + { + 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, + }, + ], + [ + '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: 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 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before 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', + { + 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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h5', + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h5', + 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', + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail-stop-any-passed": retries mochaEvents can retry from [beforeEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h6', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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', + { + 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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _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: 2, + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + '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', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-and-pass-on-threshold": retries mochaEvents can retry from [afterEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h6', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + 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: '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', + }, + { + hookId: 'h1', + 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: 'h3', + 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 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + 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: '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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, + }, + ], + [ + '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 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 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 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + 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, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before 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', + { + 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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before 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: 'r4', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r4', + 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: 'r4', + 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', + { + id: 'r4', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before 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: 'r5', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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', + 'suite', + { + id: 'r6', + title: 'suite 2', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + 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: 'r7', + order: 4, + 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 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + 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 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + 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: 'r7', + order: 4, + 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 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r6', + title: 'suite 2', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r8', + title: 'suite 3', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r9', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r9', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r8', + title: 'suite 3', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": retries mochaEvents can retry from [afterEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h6', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + 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: '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', + }, + { + hookId: 'h1', + 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: 'h3', + 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 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + 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: '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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, + }, + ], + [ + '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 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 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 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + 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, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 6, + 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: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 7, + 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: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 8, + 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: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + 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', + { + 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + '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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + 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: '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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 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 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before 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', + { + 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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + 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', + 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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before 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: 'r4', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r4', + 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: 'r4', + 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', + { + id: 'r4', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before 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: 'r5', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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', + 'suite', + { + id: 'r6', + title: 'suite 2', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + 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: 'r7', + order: 4, + 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 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + 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 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + 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: 'r7', + order: 4, + 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 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + 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: 'r7', + order: 4, + 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 4]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + 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', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r6', + title: 'suite 2', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r8', + title: 'suite 3', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r9', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r9', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r8', + title: 'suite 3', + 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: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": retries mochaEvents can retry from [afterEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h6', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before 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: '"before each" hook', + hookName: 'before 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', + { + 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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + 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', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"before each" hook', + hookName: 'before 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: 'r4', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r4', + 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: 'r4', + 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', + { + id: 'r4', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"before each" hook', + hookName: 'before 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: 'r5', + title: '"before each" hook', + hookName: 'before 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', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + 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', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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', + 'suite', + { + id: 'r6', + title: 'suite 2', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r7', + order: 4, + 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: 'r7', + order: 4, + 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 4]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r7', + order: 4, + 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', + }, + 'after each': [ + { + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r6', + title: 'suite 2', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r8', + title: 'suite 3', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r9', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r9', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r8', + title: 'suite 3', + 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: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-and-pass-on-threshold": retries mochaEvents cant retry from [before] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-and-pass-on-threshold', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before all" hook for "test 1"', + hookName: 'before all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _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 end', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": retries mochaEvents cant retry from [before] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before all" hook for "test 1"', + hookName: 'before all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _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 end', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail-stop-any-passed": retries mochaEvents cant retry from [before] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before all" hook for "test 1"', + hookName: 'before all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _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 end', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-and-pass-on-threshold": retries mochaEvents three tests with retry #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 'r4', + order: 2, + 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', + 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: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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', + 'hook', + { + id: 'r4', + 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: 'r4', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 7, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: true, + currentRetry: 6, + retries: 6, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + 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', + 'hook', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": retries mochaEvents three tests with retry #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 'r4', + order: 2, + 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', + 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: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 9, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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', + 'hook', + { + id: 'r4', + 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: 'r4', + 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', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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', + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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', + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + 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', + 'hook', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": retries mochaEvents three tests with retry #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r4', + order: 2, + 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', + 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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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: 'r4', + order: 2, + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + 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: 'r4', + order: 2, + 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, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r4', + order: 2, + 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', + 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: 'r4', + order: 2, + 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', + 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: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + 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: 'r4', + 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', + 'hook', + { + id: 'r4', + 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: 'r4', + 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', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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', + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + 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', + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + 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', + 'hook', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-and-pass-on-threshold": retries mochaEvents cleanses errors before emitting does not try to serialize error with err.actual as DOM node #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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, + 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:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 4, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": retries mochaEvents cleanses errors before emitting does not try to serialize error with err.actual as DOM node #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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, + 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:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 4, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + 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', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": retries mochaEvents cleanses errors before emitting does not try to serialize error with err.actual as DOM node #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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, + 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:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 4, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + '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: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + 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', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], +} as const diff --git a/packages/app/cypress/e2e/runner/retries.mochaEvents.snapshots.ts b/packages/app/cypress/e2e/runner/retries.mochaEvents.snapshots.ts index 64b798e7e82f..ea28149289d3 100644 --- a/packages/app/cypress/e2e/runner/retries.mochaEvents.snapshots.ts +++ b/packages/app/cypress/e2e/runner/retries.mochaEvents.snapshots.ts @@ -4,381 +4,401 @@ export const snapshots = { 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + 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': 'failed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 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, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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:after:run', { - '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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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': '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', + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + 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': 1, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 1, + _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': 1, - 'retries': 1, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 2]', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 1, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', }, ], [ 'mocha', 'pass', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], @@ -388,781 +408,801 @@ export const snapshots = { 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ '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, + 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': 'failed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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', 'hook', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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, + 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:after:run', { - '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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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': 'failed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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, + 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': 1, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 1, + _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': 1, - 'retries': 1, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 6]', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 1, + _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, + 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', '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, + 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, + 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', { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], @@ -1172,781 +1212,801 @@ export const snapshots = { 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:before:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ '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, + 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 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', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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', 'hook', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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, + 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:after:run', { - '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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test: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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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, + 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 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 6]', + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 1, + _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, + 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', '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, + 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, + 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', { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], @@ -1956,995 +2016,1015 @@ export const snapshots = { 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ '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, + 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', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'retry', { - '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', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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', 'hook', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h6', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h6', + pending: false, + body: '[body]', + type: 'hook', + 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, + 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:after:run', { - '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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test: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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 1, + _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, + 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': 1, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 1, + _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': 1, - 'retries': 1, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 8]', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 1, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', }, ], [ '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, + 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', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before 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', { - '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, + 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, + 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', { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h5', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h5', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 1, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], @@ -2954,3350 +3034,3470 @@ export const snapshots = { 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + 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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before 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', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h6', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h6', + pending: false, + body: '[body]', + type: 'hook', + 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, + 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', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'retry', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _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', 'hook end', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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': 1, - 'retries': 2, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 2, + _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': 1, - 'retries': 2, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 8]', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 2, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 8]', }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before 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': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before 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', { - '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, + 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, + 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', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 1, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r4', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r4', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r4', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + title: '"before each" hook', + hookName: 'before 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': 'r4', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + title: '"before each" hook', + hookName: 'before 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', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - '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, + id: 'r4', + 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', { - 'id': 'r4', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r4', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r5', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + 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': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r5', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r5', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"before each" hook', + hookName: 'before 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': 'r5', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"before each" hook', + hookName: 'before 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', { - 'id': 'r5', - '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, + id: 'r5', + 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': 'r5', - '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, + id: 'r5', + 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', { - 'id': 'r5', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r5', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r5', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h5', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r5', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h5', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h5', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h6', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h6', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h5', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h5', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r6', - 'title': 'suite 2', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r6', + title: 'suite 2', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:before:run', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h7', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'retry', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h7', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _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', 'hook end', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h7', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h7', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h7', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h7', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 4]', + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 2, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', }, ], [ 'mocha', 'hook', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h7', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'retry', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h7', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _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', 'hook end', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h7', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h7', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h7', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h7', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + id: 'r7', + order: 4, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h7', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 4]', + id: 'r7', + order: 4, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 2, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 4]', }, ], [ 'mocha', 'hook', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h7', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h7', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h7', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r7', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r7', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r7', - 'order': 4, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r7', + order: 4, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h7', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h7', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r6', - 'title': 'suite 2', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r6', + title: 'suite 2', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r8', - 'title': 'suite 3', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r8', + title: 'suite 3', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r9', - 'order': 5, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:before:run', { - 'id': 'r9', - 'order': 5, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r9', - 'order': 5, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r9', + order: 5, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r9', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r9', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r9', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': 'relative/path/to/spec.js', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r9', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: 'relative/path/to/spec.js', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r9', - 'order': 5, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r9', - 'order': 5, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r8', - 'title': 'suite 3', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r8', + title: 'suite 3', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r9', - 'order': 5, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r9', - 'order': 5, - 'title': 'test 1', - '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', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r9', + order: 5, + title: 'test 1', + 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', }, 'after each': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], @@ -6307,336 +6507,341 @@ export const snapshots = { 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'fail', { - 'id': 'r3', - 'title': '"before all" hook for "test 1"', - 'hookName': 'before all', - 'hookId': 'h1', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', + _cypressTestStatusInfo: { + attempts: 1, + outerStatus: 'failed', + shouldAttemptsContinue: false, }, - 'state': 'failed', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'originalTitle': '"before all" hook', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook for "test 1"', + hookName: 'before all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _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', 'hook', { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'before all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'before all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'before all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 1, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 1, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], @@ -6646,2359 +6851,2451 @@ export const snapshots = { 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ '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, + 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', 'hook', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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, + 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', 'pass', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - 'order': 2, - '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', + id: 'r4', + order: 2, + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _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', 'hook', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - '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, + id: 'r4', + 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': 'r4', - 'order': 2, - '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', + id: 'r4', + order: 2, + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r4', - 'order': 2, - '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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + id: 'r4', + order: 2, + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r4', - 'order': 2, - '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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + id: 'r4', + order: 2, + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 6]', + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 2, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', }, ], [ 'mocha', 'hook end', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - 'order': 2, - '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', + id: 'r4', + order: 2, + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _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', 'hook', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - '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, + id: 'r4', + 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': 'r4', - 'order': 2, - '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', + id: 'r4', + order: 2, + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r4', - 'order': 2, - '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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + id: 'r4', + order: 2, + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r4', - 'order': 2, - '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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + id: 'r4', + order: 2, + 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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 6]', + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 2, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 6]', }, ], [ 'mocha', 'hook end', { - 'id': 'r4', - '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, + id: 'r4', + 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', 'hook', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - '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, + id: 'r4', + 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', 'pass', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, + file: null, + final: true, + currentRetry: 2, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r5', - '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, + id: 'r5', + 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': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r5', - '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, + id: 'r5', + 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', 'hook', { - 'id': 'r5', - '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, + id: 'r5', + 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': 'r5', - '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, + id: 'r5', + 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', { - 'id': 'r5', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r5', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 2, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], - 'src/cypress/runner retries mochaEvents cleanses errors before emitting does not try to serialize error with err.actual as DOM node #1': [ - [ - 'mocha', - 'start', - { - 'start': 'match.date', - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test', - { - 'id': 'r2', - 'order': 1, - 'title': 'visits', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run', - { - 'id': 'r2', - 'order': 1, - 'title': 'visits', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run:async', - { - 'id': 'r2', - 'order': 1, - 'title': 'visits', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'retry', - { - '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', + 'src/cypress/runner retries mochaEvents cleanses errors before emitting does not try to serialize error with err.actual as DOM node #1': + [ + [ + 'mocha', + 'start', + { + start: 'match.date', + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r2', + order: 1, + title: 'visits', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, - }, - { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - ], - [ - 'mocha', - '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', + 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, - }, - ], - [ - 'mocha', - 'test: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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r2', + order: 1, + title: 'visits', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': false, - 'currentRetry': 0, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run', - { - 'id': 'r2', - 'order': 1, - 'title': 'visits', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run:async', - { - 'id': 'r2', - 'order': 1, - 'title': 'visits', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 2]', - }, - ], - [ - 'mocha', - 'retry', - { - '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', + 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': 1, - 'retries': 2, - '_slow': 10000, - }, - { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - ], - [ - 'mocha', - '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, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - }, - 'file': null, - 'final': false, - 'currentRetry': 1, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test: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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 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': 1, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run', - { - 'id': 'r2', - 'order': 1, - 'title': 'visits', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run:async', - { - 'id': 'r2', - 'order': 1, - 'title': 'visits', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, - 'invocationDetails': '{Object 9}', - 'hooks': '[Array 2]', - }, - ], - [ - 'mocha', - 'fail', - { - '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, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 2, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r2', + order: 1, + title: 'visits', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - }, - 'file': null, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, - }, - { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - ], - [ - 'mocha', - 'test end', - { - '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', + 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': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - '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: 1, + retries: 2, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r2', + order: 1, + title: 'visits', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - }, - 'file': null, - 'final': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test: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', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 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': true, - 'currentRetry': 2, - 'retries': 2, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite end', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'end', - { - 'end': 'match.date', - }, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r2', + order: 1, + title: 'visits', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 2, + retries: 2, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 2]', + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 3, + outerStatus: 'failed', + }, + 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: true, + currentRetry: 2, + retries: 2, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'end', + { + end: 'match.date', + }, + ], ], - ], } as const diff --git a/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts b/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts new file mode 100644 index 000000000000..ed9b159cccb8 --- /dev/null +++ b/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts @@ -0,0 +1,173 @@ +import { runSpec } from './support/spec-loader' +import { runCypressInCypressMochaEventsTest } from './support/mochaEventsUtils' +import { snapshots } from './runner.experimentalRetries.mochaEvents.snapshots' + +/** + * The mochaEvent tests require a spec to be loaded and executed within an inner Cypress context. + * The spec must load and execute within the duration of the Cypress command timeout. + * The execution time of the inner Cypress is resource/OS dependant and can exceed the default value (4s), + * so we have increased the command timeout to allow the inner spec more time to complete and report + * its mocha event log. + */ + +/** + * In context to experimentalRetries, the end state of the tests should be identical regardless of strategy for these tests. + * However, the total amount of attempts on a test will differ based on the strategy used and is documented below + */ +describe('experimental retries: runner tests', { defaultCommandTimeout: 7500 }, () => { + const projects: ['detect-flake-and-pass-on-threshold', 'detect-flake-but-always-fail', 'detect-flake-but-always-fail-stop-any-passed'] = ['detect-flake-and-pass-on-threshold', 'detect-flake-but-always-fail', 'detect-flake-but-always-fail-stop-any-passed'] + + projects.forEach((project) => { + describe(project, () => { + describe('tests finish with correct state', () => { + describe('hook failures', () => { + // regardless of strategy, this should fail the suite immediately and not run any additional attempts, so the snapshots should be near identical + it(`fail in [before]`, (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": tests finish with correct state hook failures fail in [before] #1`, + done, + ) + + runSpec({ + fileName: 'fail-with-before.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + // This will differ per strategy + // the snapshots for 'detect-flake-and-always-fail' configurations should almost be identical, regardless of experimentalOptions configuration. + // for each project: + // 'detect-flake-and-pass-on-threshold': will run a total of 6 times and fail 6 times, config is satisfied, the test fails, and the suite is skipped + // 'detect-flake-but-always-fail': will run a total of 10 times and fail 10 times, config is satisfied, the test fails, and the suite is skipped + // 'detect-flake-but-always-fail-stop-any-passed': will run a total of 10 times and fail 10 times config is satisfied, the test fails, and the suite is skipped + it(`fail in [beforeEach]`, (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": tests finish with correct state hook failures fail in [beforeEach] #1`, + done, + ) + + runSpec({ + fileName: 'fail-with-beforeEach.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + // regardless of strategy, this should fail the suite immediately and not run any additional attempts, so the snapshots should be near identical + it(`fail in [after]`, (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": tests finish with correct state hook failures fail in [after] #1`, + done, + ) + + runSpec({ + fileName: 'fail-with-after.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + // This will differ per strategy + // the snapshots for 'detect-flake-and-always-fail' configurations should almost be identical, regardless of experimentalOptions configuration. + // for each project: + // 'detect-flake-and-pass-on-threshold': will run a total of 6 times and fail 6 times, config is satisfied, the test fails, and the suite is skipped + // 'detect-flake-but-always-fail': will run a total of 10 times and fail 10 times, config is satisfied, the test fails, and the suite is skipped + // 'detect-flake-but-always-fail-stop-any-passed': will run a total of 10 times and fail 10 times config is satisfied, the test fails, and the suite is skipped + it(`fail in [afterEach]`, (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": tests finish with correct state hook failures fail in [afterEach] #1`, + done, + ) + + runSpec({ + fileName: 'fail-with-afterEach.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + }) + }) + + describe('mocha grep', () => { + // This will differ per strategy + // the snapshots for 'detect-flake-and-always-fail' configurations should almost be identical, regardless of experimentalOptions configuration. + // for each project: + // 'detect-flake-and-pass-on-threshold': will run a total of 6 times and fail 6 times, config is satisfied, the test fails, but the suite is NOT skipped + // 'detect-flake-but-always-fail': will run a total of 10 times and fail 10 times, config is satisfied, the test fails, but the suite is NOT skipped + // 'detect-flake-but-always-fail-stop-any-passed': will run a total of 10 times and fail 10 times config is satisfied, the test fails,but the suite is NOT skipped + it('fail with [only]', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": tests finish with correct state mocha grep fail with [only] #1`, + done, + ) + + runSpec({ + fileName: 'fail-with-only.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + // This will be the same per strategy, as the test passes and retries don't get invoked + it('pass with [only]', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": tests finish with correct state mocha grep pass with [only] #1`, + done, + ) + + runSpec({ + fileName: 'pass-with-only.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + }) + }) + + // these should be the same per strategy, as each test passes and retries is not invoked + describe('mocha events', () => { + it('simple single test', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": mocha events simple single test #1`, + done, + ) + + runSpec({ + fileName: 'simple-single-test.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + + it('simple three tests', (done) => { + const { assertMatchingSnapshot } = runCypressInCypressMochaEventsTest( + snapshots, + `"${project}": mocha events simple three tests #1`, + done, + ) + + runSpec({ + fileName: 'three-tests-with-hooks.mochaEvents.cy.js', + projectName: project, + }).then((win) => { + assertMatchingSnapshot(win) + }) + }) + }) + }) +}) diff --git a/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.snapshots.ts b/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.snapshots.ts new file mode 100644 index 000000000000..c30468d930f3 --- /dev/null +++ b/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.snapshots.ts @@ -0,0 +1,30737 @@ +export const snapshots = { + '"detect-flake-and-pass-on-threshold": tests finish with correct state hook failures fail in [before] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-and-pass-on-threshold', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before all" hook for "test 1"', + hookName: 'before all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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 end', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": tests finish with correct state hook failures fail in [before] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before all" hook for "test 1"', + hookName: 'before all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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 end', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": tests finish with correct state hook failures fail in [before] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before all" hook for "test 1"', + hookName: 'before all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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 end', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-and-pass-on-threshold": tests finish with correct state hook failures fail in [beforeEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + 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: 'h1', + 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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: '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: '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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, + }, + ], + [ + '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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: '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, + title: 'test 1', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 6, + strategy: 'detect-flake-and-pass-on-threshold', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before each" hook for "test 1"', + hookName: 'before each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before each" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 9, + _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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + 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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": tests finish with correct state hook failures fail in [beforeEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + 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: 'h1', + 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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: '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: '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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, + }, + ], + [ + '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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: '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, + title: 'test 1', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 6, + 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: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 7, + 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: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 8, + 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: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 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 3]', + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 10, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before each" hook for "test 1"', + hookName: 'before each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before each" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + 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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": tests finish with correct state hook failures fail in [beforeEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + 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: 'h1', + 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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: '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: '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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, + }, + ], + [ + '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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 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 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: '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, + title: 'test 1', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 6, + 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: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 7, + 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: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 8, + 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: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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', + hookName: 'before each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + 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: 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 3]', + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 10, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"before each" hook for "test 1"', + hookName: 'before each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before each" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + 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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-and-pass-on-threshold": tests finish with correct state hook failures fail in [after] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-and-pass-on-threshold', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r4', + title: '"after all" hook for "test 2"', + hookName: 'after all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"after all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": tests finish with correct state hook failures fail in [after] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r4', + title: '"after all" hook for "test 2"', + hookName: 'after all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"after all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": tests finish with correct state hook failures fail in [after] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r4', + title: '"after all" hook for "test 2"', + hookName: 'after all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"after all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-and-pass-on-threshold": tests finish with correct state hook failures fail in [afterEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _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 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _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, + }, + ], + [ + '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 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _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 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 6, + strategy: 'detect-flake-and-pass-on-threshold', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"after each" hook for "test 1"', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"after each" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + 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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail": tests finish with correct state hook failures fail in [afterEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _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 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _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, + }, + ], + [ + '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 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _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 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _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: 6, + 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: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _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: 7, + 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: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _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: 8, + 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: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + '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', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + null, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _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: 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 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 10, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"after each" hook for "test 1"', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"after each" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-but-always-fail-stop-any-passed": tests finish with correct state hook failures fail in [afterEach] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'retry', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: false, + currentRetry: 0, + retries: 9, + _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: 1, + 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: 1, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 1, + retries: 9, + _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 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 2, + retries: 9, + _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, + }, + ], + [ + '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 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 3, + retries: 9, + _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 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 4, + retries: 9, + _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: 5, + 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: 5, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 5, + retries: 9, + _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: 6, + 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: 6, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 6, + retries: 9, + _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: 7, + 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: 7, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 7, + retries: 9, + _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: 8, + 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: 8, + retries: 9, + _slow: 10000, + invocationDetails: '{Object 9}', + hooks: '[Array 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + 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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: false, + currentRetry: 8, + retries: 9, + _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: 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 3]', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 10, + strategy: 'detect-flake-but-always-fail', + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"after each" hook for "test 1"', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"after each" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _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', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + 'after each': [ + { + hookId: 'h1', + 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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-and-pass-on-threshold": tests finish with correct state mocha grep fail with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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 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', + 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 2', + 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 2', + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + 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', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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, + 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 2', + 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 2', + 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', + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 4, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + 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', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'failed', + }, + 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 6, + outerStatus: 'failed', + }, + 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 5, + retries: 5, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail": tests finish with correct state mocha grep fail with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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 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', + 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 2', + 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 2', + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + 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', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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, + 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 2', + 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 2', + 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', + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 4, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 5, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 6, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 7, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 8, + 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 2', + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 9, + 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', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + 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 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + 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', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail-stop-any-passed": tests finish with correct state mocha grep fail with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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:after:run', + { + 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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + 'mocha', + 'test: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', + wallClockDuration: 'match.number', + 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, + }, + ], + [ + '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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 1, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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 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', + 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 2', + 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 2', + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 2, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 3, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + 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', + { + 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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, + 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 2', + 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 2', + 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', + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 4, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 4, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 5, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 5, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 5, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 6, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 6, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 6, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 7, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 7, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 7, + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 8, + 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 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, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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:after:run', + { + 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', + 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: 8, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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', + 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: 8, + 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 2', + 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 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + currentRetry: 9, + 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', + 'fail', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + 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 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + 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', + shouldAttemptsContinue: false, + attempts: 10, + outerStatus: 'failed', + }, + 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', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + final: true, + currentRetry: 9, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-and-pass-on-threshold": tests finish with correct state mocha grep pass with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail": tests finish with correct state mocha grep pass with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail-stop-any-passed": tests finish with correct state mocha grep pass with [only] #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-and-pass-on-threshold": mocha events simple single test #1': [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail": mocha events simple single test #1': [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail-stop-any-passed": mocha events simple single test #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + '"detect-flake-and-pass-on-threshold": mocha events simple three tests #1': [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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', + 'hook', + { + id: 'r4', + 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: 'r4', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + 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', + 'hook', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail": mocha events simple three tests #1': [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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', + 'hook', + { + id: 'r4', + 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: 'r4', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + 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', + 'hook', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], + + '"detect-flake-but-always-fail-stop-any-passed": mocha events simple three tests #1': + [ + ['mocha', 'start', { start: 'match.date' }], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + 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: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r4', + 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', + 'hook', + { + id: 'r4', + 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: 'r4', + 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', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r5', + 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: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + 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', + 'hook', + { + id: 'r5', + 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: 'r5', + 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', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + 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: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 9, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + ['mocha', 'end', { end: 'match.date' }], + ], +} diff --git a/packages/app/cypress/e2e/runner/runner.mochaEvents.snapshots.ts b/packages/app/cypress/e2e/runner/runner.mochaEvents.snapshots.ts index 6d2e1729781d..f0b877ee36c4 100644 --- a/packages/app/cypress/e2e/runner/runner.mochaEvents.snapshots.ts +++ b/packages/app/cypress/e2e/runner/runner.mochaEvents.snapshots.ts @@ -1,2741 +1,2970 @@ export const snapshots = { - 'src/cypress/runner tests finish with correct state hook failures fail in [before] #1': [ + 'src/cypress/runner tests finish with correct state hook failures fail in [before] #1': [ - 'mocha', - 'start', - { - 'start': 'match.date', - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - '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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'fail', - { - 'id': 'r3', - 'title': '"before all" hook for "test 1"', - 'hookName': 'before all', - 'hookId': 'h1', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'originalTitle': '"before all" hook', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - ], - [ - '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 end', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'before all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'before all': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:after:run', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'before all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'before all': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:after:run:async', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'before all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'before all': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite end', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'end', - { - 'end': 'match.date', - }, - ], - ], - - 'src/cypress/runner tests finish with correct state hook failures fail in [beforeEach] #1': [ - [ - 'mocha', - 'start', - { - 'start': 'match.date', - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - '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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'fail', - { - 'id': 'r3', - 'title': '"before each" hook for "test 1"', - 'hookName': 'before each', - 'hookId': 'h1', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'originalTitle': '"before each" hook', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - ], - [ - 'mocha', - 'test end', - { - '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': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'before each': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_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', - { - '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': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'before each': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test: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': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'before each': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite end', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'end', - { - 'end': 'match.date', - }, - ], - ], - - 'src/cypress/runner tests finish with correct state hook failures fail in [afterEach] #1': [ - [ - 'mocha', - 'start', - { - 'start': 'match.date', - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - '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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'fail', - { - 'id': 'r3', - 'title': '"after each" hook for "test 1"', - 'hookName': 'after each', - 'hookId': 'h1', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'originalTitle': '"after each" hook', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - ], - [ - 'mocha', - 'test end', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - 'after each': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_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', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - 'after each': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:after:run:async', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'hookName': 'after each', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - 'after each': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite end', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'end', - { - 'end': 'match.date', - }, - ], - ], - - 'src/cypress/runner tests finish with correct state hook failures fail in [after] #1': [ - [ - 'mocha', - 'start', - { - 'start': 'match.date', - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - '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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'pass', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test end', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:after:run:async', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:after:run', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:after:run:async', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test', - { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run', - { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run:async', - { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r4', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'fail', - { - 'id': 'r4', - 'title': '"after all" hook for "test 2"', - 'hookName': 'after all', - 'hookId': 'h1', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'originalTitle': '"after all" hook', - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - ], - [ - 'mocha', - 'test end', - { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'hookName': 'after all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - 'after all': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_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', - { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'hookName': 'after all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - 'after all': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:after:run:async', - { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'hookName': 'after all', - 'err': { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - 'state': 'failed', - 'pending': false, - 'failedFromHookId': 'h1', - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - 'after all': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite end', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'end', - { - 'end': 'match.date', - }, - ], - ], - - 'src/cypress/runner tests finish with correct state mocha grep fail with [only] #1': [ - [ - 'mocha', - 'start', - { - 'start': 'match.date', - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run:async', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook end', - { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - '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', - }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - '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', - 'fail', - { - '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', + [ + 'mocha', + 'start', + { + start: 'match.date', + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + outerStatus: 'failed', + shouldAttemptsContinue: false, }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], + id: 'r3', + title: '"before all" hook for "test 1"', + hookName: 'before all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - { - 'message': '[error message]', - 'name': 'AssertionError', - 'stack': 'match.string', - 'parsedStack': 'match.array', - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - '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', - 'hook', - { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook end', - { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test end', - { - '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', + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + '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 end', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_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', - { - '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', - 'wallClockDuration': 'match.number', - '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', + ], + [ + 'mocha', + 'test:after:run', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test: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', - 'wallClockDuration': 'match.number', - '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', + ], + [ + 'mocha', + 'test:after:run:async', + { + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'before all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite end', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'end', - { - 'end': 'match.date', - }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'end', + { + end: 'match.date', + }, + ], ], - ], - 'src/cypress/runner tests finish with correct state mocha grep pass with [only] #1': [ - [ - 'mocha', - 'start', - { - 'start': 'match.date', - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite', - { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test:before:run:async', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], + 'src/cypress/runner tests finish with correct state hook failures fail in [beforeEach] #1': [ - 'mocha', - 'hook end', - { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'test', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - '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', + [ + 'mocha', + 'start', + { + start: 'match.date', + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + outerStatus: 'failed', + shouldAttemptsContinue: false, }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', - }, - ], + id: 'r3', + title: '"before each" hook for "test 1"', + hookName: 'before each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"before each" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook', - { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - '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', - 'hook', - { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - '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', - 'hook', - { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'hook end', - { - 'id': 'r3', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, - }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + 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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test: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: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + 'before each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'end', + { + end: 'match.date', + }, + ], ], + + 'src/cypress/runner tests finish with correct state hook failures fail in [afterEach] #1': [ - 'mocha', - 'pass', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'state': 'passed', - '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', + [ + 'mocha', + 'start', + { + start: 'match.date', + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r3', + title: '"after each" hook for "test 1"', + hookName: 'after each', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"after each" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, - ], - 'before each': [ - { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, - ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r3', + order: 1, + title: 'test 1', + hookName: 'after each', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, - ], + 'after each': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_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', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'end', + { + end: 'match.date', + }, + ], ], + + 'src/cypress/runner tests finish with correct state hook failures fail in [after] #1': [ - 'mocha', - 'test end', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'state': 'passed', - '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', + [ + 'mocha', + 'start', + { + start: 'match.date', + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _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, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', }, - ], - 'before each': [ - { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', }, - ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:after:run:async', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_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', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'before all': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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', }, - ], - 'before each': [ - { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r4', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'fail', + { + _cypressTestStatusInfo: { + attempts: 1, + outerStatus: 'failed', + shouldAttemptsContinue: false, + }, + id: 'r4', + title: '"after all" hook for "test 2"', + hookName: 'after all', + hookId: 'h1', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + originalTitle: '"after all" hook', + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, - ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _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: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, - ], - 'after all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + id: 'r4', + order: 2, + title: 'test 2', + hookName: 'after all', + err: { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + state: 'failed', + pending: false, + failedFromHookId: 'h1', + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, - ], + 'after all': [ + { + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'end', + { + end: 'match.date', + }, + ], ], + + 'src/cypress/runner tests finish with correct state mocha grep fail with [only] #1': [ - 'mocha', - 'test:after:run:async', - { - 'id': 'r3', - 'order': 1, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', - 'before all': [ - { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + [ + 'mocha', + 'start', + { + start: 'match.date', + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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', }, - ], - 'before each': [ - { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 'after each': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'fail', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + 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', }, - ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 'after each': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], }, - 'after each': [ - { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + { + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + 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 all': [ - { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + 'after each': [ + { + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _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: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + 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', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, - }, - ], - [ - 'mocha', - 'suite end', - { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, - }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'failed', + }, + 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', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'end', + { + end: 'match.date', + }, + ], ], + + 'src/cypress/runner tests finish with correct state mocha grep pass with [only] #1': [ - 'mocha', - 'end', - { - 'end': 'match.date', - }, + [ + 'mocha', + 'start', + { + start: 'match.date', + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite', + { + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:before:run:async', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test', + { + id: 'r3', + order: 1, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook', + { + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + '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', + 'hook', + { + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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', + 'hook', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'hook end', + { + id: 'r3', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'pass', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test end', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _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: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'test:after:run:async', + { + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 2', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + 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', + }, + ], + 'after all': [ + { + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', + }, + ], + }, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, + }, + ], + [ + 'mocha', + 'suite end', + { + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, + }, + ], + [ + 'mocha', + 'end', + { + end: 'match.date', + }, + ], ], - ], 'src/cypress/runner mocha events simple single test #1': [ [ 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + 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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - '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, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + 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, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], @@ -2745,1217 +2974,1287 @@ export const snapshots = { 'mocha', 'start', { - 'start': 'match.date', + start: 'match.date', }, ], [ 'mocha', 'suite', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'suite', { - 'id': 'r2', - 'title': 'suite 1', - 'root': false, - 'pending': false, - 'type': 'suite', - 'file': null, - 'invocationDetails': '{Object 9}', - 'retries': -1, - '_slow': 10000, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + 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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _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, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r3', - 'title': '"before all" hook', - 'hookName': 'before all', - 'hookId': 'h1', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before all" hook', + hookName: 'before all', + hookId: 'h1', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + id: 'r3', + order: 1, + title: 'test 1', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r3', - 'title': '"before each" hook', - 'hookName': 'before each', - 'hookId': 'h2', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"before each" hook', + hookName: 'before each', + hookId: 'h2', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ '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, + 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', 'hook', { - 'id': 'r3', - 'title': '"after each" hook', - 'hookName': 'after each', - 'hookId': 'h4', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r3', + title: '"after each" hook', + hookName: 'after each', + hookId: 'h4', + pending: false, + body: '[body]', + type: 'hook', + 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, + 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', 'pass', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + 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', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r3', - 'order': 1, - 'title': 'test 1', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r3', + order: 1, + title: 'test 1', + state: 'passed', + pending: false, + body: '[body]', + type: 'test', + duration: 'match.number', + wallClockStartedAt: 'match.date', + wallClockDuration: 'match.number', + timings: { + lifecycle: 'match.number', 'before all': [ { - 'hookId': 'h1', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h1', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'before each': [ { - 'hookId': 'h2', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + id: 'r4', + order: 2, + title: 'test 2', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r4', - '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, + id: 'r4', + 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', 'hook', { - 'id': 'r4', - '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, + id: 'r4', + 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': 'r4', - '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, + id: 'r4', + 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', 'pass', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:before:after:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r4', - 'order': 2, - 'title': 'test 2', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r4', + order: 2, + title: 'test 2', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook', { - 'id': 'r5', - '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, + id: 'r5', + 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': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:before:run:async', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'wallClockStartedAt': 'match.date', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + id: 'r5', + order: 3, + title: 'test 3', + pending: false, + body: '[body]', + type: 'test', + wallClockStartedAt: 'match.date', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r5', - '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, + id: 'r5', + 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', 'hook', { - 'id': 'r5', - '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, + id: 'r5', + 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': 'r5', - '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, + id: 'r5', + 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', { - 'id': 'r5', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'hook end', { - 'id': 'r5', - 'title': '"after all" hook', - 'hookName': 'after all', - 'hookId': 'h3', - 'pending': false, - 'body': '[body]', - 'type': 'hook', - 'duration': 'match.number', - 'file': null, - 'invocationDetails': '{Object 9}', - 'currentRetry': 0, - 'retries': -1, - '_slow': 10000, + id: 'r5', + title: '"after all" hook', + hookName: 'after all', + hookId: 'h3', + pending: false, + body: '[body]', + type: 'hook', + duration: 'match.number', + file: null, + invocationDetails: '{Object 9}', + currentRetry: 0, + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'pass', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test end', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _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, + id: 'r2', + title: 'suite 1', + root: false, + pending: false, + type: 'suite', + file: null, + invocationDetails: '{Object 9}', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'test:after:run', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'test:after:run:async', { - 'id': 'r5', - 'order': 3, - 'title': 'test 3', - 'state': 'passed', - 'pending': false, - 'body': '[body]', - 'type': 'test', - 'duration': 'match.number', - 'wallClockStartedAt': 'match.date', - 'wallClockDuration': 'match.number', - 'timings': { - 'lifecycle': 'match.number', + _cypressTestStatusInfo: { + shouldAttemptsContinue: false, + attempts: 1, + outerStatus: 'passed', + }, + id: 'r5', + order: 3, + title: 'test 3', + 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', + hookId: 'h2', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], - 'test': { - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + test: { + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, 'after each': [ { - 'hookId': 'h4', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h4', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], 'after all': [ { - 'hookId': 'h3', - 'fnDuration': 'match.number', - 'afterFnDuration': 'match.number', + hookId: 'h3', + fnDuration: 'match.number', + afterFnDuration: 'match.number', }, ], }, - 'file': null, - 'invocationDetails': '{Object 9}', - 'final': true, - 'currentRetry': 0, - 'retries': 0, - '_slow': 10000, + file: null, + invocationDetails: '{Object 9}', + final: true, + currentRetry: 0, + retries: 0, + _slow: 10000, }, ], [ 'mocha', 'suite end', { - 'id': 'r1', - 'title': '', - 'root': true, - 'pending': false, - 'type': 'suite', - 'file': 'relative/path/to/spec.js', - 'retries': -1, - '_slow': 10000, + id: 'r1', + title: '', + root: true, + pending: false, + type: 'suite', + file: 'relative/path/to/spec.js', + retries: -1, + _slow: 10000, }, ], [ 'mocha', 'end', { - 'end': 'match.date', + end: 'match.date', }, ], ], diff --git a/packages/app/cypress/e2e/runner/support/mochaEventsUtils.ts b/packages/app/cypress/e2e/runner/support/mochaEventsUtils.ts index c6bd1591c458..9305cc9167d3 100644 --- a/packages/app/cypress/e2e/runner/support/mochaEventsUtils.ts +++ b/packages/app/cypress/e2e/runner/support/mochaEventsUtils.ts @@ -108,6 +108,10 @@ const eventCleanseMap = { const keysToEliminate = ['codeFrame', '_testConfig'] as const function removeUnusedKeysForTestSnapshot (obj: T): T { + // with experimental retries, mocha can fire a 'retry' event with an undefined error + // this is expected + if (obj === undefined) return obj + for (const key of keysToEliminate) { delete obj[key] } diff --git a/packages/app/cypress/e2e/runner/support/spec-loader.ts b/packages/app/cypress/e2e/runner/support/spec-loader.ts index f8411f9b0fac..651a6a611153 100644 --- a/packages/app/cypress/e2e/runner/support/spec-loader.ts +++ b/packages/app/cypress/e2e/runner/support/spec-loader.ts @@ -1,3 +1,5 @@ +import type { ProjectFixtureDir } from '@tooling/system-tests/lib/fixtureDirs' + export const shouldHaveTestResults = ({ passCount, failCount, pendingCount }) => { passCount = passCount || '--' failCount = failCount || '--' @@ -13,6 +15,8 @@ export const shouldHaveTestResults = ({ passCount, failCount, pendingCount }) => }) } +type ExperimentalRetriesProjects = 'detect-flake-and-pass-on-threshold' | 'detect-flake-but-always-fail' | 'detect-flake-but-always-fail-stop-any-passed' + export type LoadSpecOptions = { filePath: string setup?: () => void @@ -20,7 +24,7 @@ export type LoadSpecOptions = { failCount?: number | string pendingCount?: number | string hasPreferredIde?: boolean - projectName?: 'runner-e2e-specs' | 'runner-ct-specs' | 'session-and-origin-e2e-specs' + projectName?: 'runner-e2e-specs' | 'runner-ct-specs' | 'session-and-origin-e2e-specs' | ExperimentalRetriesProjects mode?: 'e2e' | 'component' configFile?: string scaffold?: boolean @@ -82,9 +86,10 @@ export function loadSpec (options: LoadSpecOptions) { shouldHaveTestResults({ passCount, failCount, pendingCount }) } -export function runSpec ({ fileName }: { fileName: string }) { - cy.scaffoldProject('runner-e2e-specs') - cy.openProject('runner-e2e-specs') +export function runSpec ({ fileName, projectName }: { fileName: string, projectName?: ProjectFixtureDir }) { + projectName = projectName || 'runner-e2e-specs' + cy.scaffoldProject(projectName) + cy.openProject(projectName) cy.startAppServer() cy.visitApp(`specs/runner?file=cypress/e2e/runner/${fileName}`) diff --git a/packages/app/src/runner/event-manager.ts b/packages/app/src/runner/event-manager.ts index 0c8021f9605d..eb02090ad72f 100644 --- a/packages/app/src/runner/event-manager.ts +++ b/packages/app/src/runner/event-manager.ts @@ -32,6 +32,7 @@ let crossOriginOnMessageRef = ({ data, source }: MessageEvent<{ return undefined } let crossOriginLogs: {[key: string]: Cypress.Log} = {} +let hasMochaRunEnded: boolean = false interface AddGlobalListenerOptions { element: AutomationElementId @@ -564,12 +565,14 @@ export class EventManager { }) Cypress.on('run:start', async () => { + hasMochaRunEnded = false if (Cypress.config('experimentalMemoryManagement') && Cypress.isBrowser({ family: 'chromium' })) { await Cypress.backend('start:memory:profiling', Cypress.config('spec')) } }) Cypress.on('run:end', async () => { + hasMochaRunEnded = true if (Cypress.config('experimentalMemoryManagement') && Cypress.isBrowser({ family: 'chromium' })) { await Cypress.backend('end:memory:profiling') } @@ -720,8 +723,8 @@ export class EventManager { Cypress.primaryOriginCommunicator.on('after:screenshot', handleAfterScreenshot) Cypress.primaryOriginCommunicator.on('log:added', (attrs) => { - // If the test is over and the user enters interactive snapshot mode, do not add cross origin logs to the test runner. - if (Cypress.state('test')?.final) return + // If the mocha run is over and the user enters interactive snapshot mode, do not add cross origin logs to the test runner. + if (hasMochaRunEnded) return // Create a new local log representation of the cross origin log. // It will be attached to the current command. diff --git a/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js b/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js new file mode 100644 index 000000000000..29f9d94e2f98 --- /dev/null +++ b/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js @@ -0,0 +1,294 @@ +import { calculateTestStatus } from '../../../src/cypress/mocha.ts' + +describe('mocha custom methods', () => { + describe('calculateTestStatus', () => { + let totalRetries = 2 + const createMockTest = (state = 'passed', prevAttempts = []) => { + const mockTestContext = { + currentRetry () { + return prevAttempts.length + }, + retries () { + return totalRetries + }, + state, + prevAttempts, + } + + return Cypress._.cloneDeep(mockTestContext) + } + + describe('strategy w/ experimentalBurnIn=false', () => { + it('should never attempt to retry a test that passes on the first try, regardless of strategy', function () { + const undefinedStrategyTest = createMockTest() + const noExperimentalRetries = calculateTestStatus(undefinedStrategyTest) + + expect(noExperimentalRetries.outerStatus).to.equal('passed') + expect(noExperimentalRetries.attempts).to.equal(1) + expect(noExperimentalRetries.shouldAttemptsContinue).to.be.false + expect(noExperimentalRetries.strategy).to.be.undefined + expect(undefinedStrategyTest.final).to.be.true + + const detectFlakeAndPassOnThresholdStrategyTest = createMockTest() + const detectFlakeAndPassOnThreshold = calculateTestStatus(detectFlakeAndPassOnThresholdStrategyTest, 'detect-flake-and-pass-on-threshold', { + maxRetries: 8, + passesRequired: 5, + }) + + expect(detectFlakeAndPassOnThreshold.outerStatus).to.equal('passed') + expect(detectFlakeAndPassOnThreshold.attempts).to.equal(1) + expect(detectFlakeAndPassOnThreshold.shouldAttemptsContinue).to.be.false + expect(detectFlakeAndPassOnThreshold.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(detectFlakeAndPassOnThresholdStrategyTest.final).to.be.true + + const detectFlakeButAlwaysFailStrategyTest = createMockTest() + const detectFlakeButAlwaysFail = calculateTestStatus(detectFlakeButAlwaysFailStrategyTest, 'detect-flake-but-always-fail', { + maxRetries: 8, + stopIfAnyPassed: false, + }) + + expect(detectFlakeButAlwaysFail.outerStatus).to.equal('passed') + expect(detectFlakeButAlwaysFail.attempts).to.equal(1) + expect(detectFlakeButAlwaysFail.shouldAttemptsContinue).to.be.false + expect(detectFlakeButAlwaysFail.strategy).to.equal('detect-flake-but-always-fail') + expect(detectFlakeButAlwaysFailStrategyTest.final).to.be.true + }) + + describe('undefined (GA implementation/original)', () => { + it('passed: keeps signaling to retry until test passes', function () { + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1) + + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.be.undefined + + const mockTest2 = createMockTest('passed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2) + + expect(attempt2.outerStatus).to.equal('passed') + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.false + expect(attempt2.strategy).to.be.undefined + }) + + // this logic is NOT inclusive of after/afterEach hooks, which can still set the test state after the test has calculated the meta data properties. + // this happens inside ./driver/src/cypress/runner.ts + it('failed: keeps signaling to retry until retry limit is reached', function () { + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1) + + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.be.undefined + + const mockTest2 = createMockTest('failed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2) + + expect(attempt2.outerStatus).to.be.undefined + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.true + expect(attempt2.strategy).to.be.undefined + + const mockTest3 = createMockTest('failed', [mockTest1, mockTest2]) + const attempt3 = calculateTestStatus(mockTest3) + + expect(attempt3.outerStatus).to.equal('failed') + expect(attempt3.attempts).to.equal(3) + expect(attempt3.shouldAttemptsContinue).to.be.false + expect(attempt3.strategy).to.be.undefined + }) + }) + + describe('detect-flake-and-pass-on-threshold', () => { + it('passed: no longer signals to retry test after passesRequired threshold is reached', function () { + totalRetries = 5 + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest1.final).to.be.false + + const mockTest2 = createMockTest('failed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt2.outerStatus).to.be.undefined + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.true + expect(attempt2.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest2.final).to.be.false + + const mockTest3 = createMockTest('passed', [mockTest1, mockTest2]) + const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt3.outerStatus).to.be.undefined + expect(attempt3.attempts).to.equal(3) + expect(attempt3.shouldAttemptsContinue).to.be.true + expect(attempt3.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest3.final).to.be.false + + const mockTest4 = createMockTest('passed', [mockTest1, mockTest2, mockTest3]) + const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt4.outerStatus).to.equal('passed') + expect(attempt4.attempts).to.equal(4) + expect(attempt4.shouldAttemptsContinue).to.be.false + expect(attempt4.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest4.final).to.be.true + }) + + it('failed: no longer signals to retry test if the passesRequired is impossible to meet', function () { + totalRetries = 4 + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest1.final).to.be.false + + const mockTest2 = createMockTest('failed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt2.outerStatus).to.be.undefined + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.true + expect(attempt2.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest2.final).to.be.false + + const mockTest3 = createMockTest('failed', [mockTest1, mockTest2]) + const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt3.outerStatus).to.be.undefined + expect(attempt3.attempts).to.equal(3) + expect(attempt3.shouldAttemptsContinue).to.be.true + expect(attempt3.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest3.final).to.be.false + + const mockTest4 = createMockTest('failed', [mockTest1, mockTest2, mockTest3]) + const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt4.outerStatus).to.equal('failed') + expect(attempt4.attempts).to.equal(4) + expect(attempt4.shouldAttemptsContinue).to.be.false + expect(attempt4.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest4.final).to.be.true + }) + }) + + describe('detect-flake-but-always-fail', () => { + it('failed: no longer signals to retry after retries are exhausted', function () { + totalRetries = 3 + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: false, + }) + + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest1.final).to.be.false + + const mockTest2 = createMockTest('failed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: false, + }) + + expect(attempt2.outerStatus).to.be.undefined + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.true + expect(attempt2.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest2.final).to.be.false + + const mockTest3 = createMockTest('passed', [mockTest1, mockTest2]) + const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: false, + }) + + expect(attempt3.outerStatus).to.be.undefined + expect(attempt3.attempts).to.equal(3) + expect(attempt3.shouldAttemptsContinue).to.be.true + expect(attempt3.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest3.final).to.be.false + + const mockTest4 = createMockTest('passed', [mockTest1, mockTest2, mockTest3]) + const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: false, + }) + + expect(attempt4.outerStatus).to.equal('failed') + expect(attempt4.attempts).to.equal(4) + expect(attempt4.shouldAttemptsContinue).to.be.false + expect(attempt4.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest4.final).to.be.true + // make sure forceState is called on 'detect-flake-but-always-fail' in the case the last test attempt passed, but the outer status should indicate a failure + expect(mockTest4.forceState).to.equal('passed') + }) + + it('failed: short circuits after a retry has a passed test', function () { + totalRetries = 3 + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: true, + }) + + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest1.final).to.be.false + + const mockTest2 = createMockTest('passed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: true, + }) + + expect(attempt2.outerStatus).to.equal('failed') + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.false + expect(attempt2.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest2.final).to.true + // make sure forceState is called on 'detect-flake-but-always-fail' in the case the last test attempt passed, but the outer status should indicate a failure + expect(mockTest2.forceState).to.equal('passed') + }) + }) + }) + }) +}) diff --git a/packages/driver/patches/mocha+7.0.1.dev.patch b/packages/driver/patches/mocha+7.0.1.dev.patch index 230159571607..5e7cf190c65a 100644 --- a/packages/driver/patches/mocha+7.0.1.dev.patch +++ b/packages/driver/patches/mocha+7.0.1.dev.patch @@ -11,3 +11,88 @@ index 0b43004..588e195 100644 runner.checkLeaks = options.checkLeaks === true; runner.fullStackTrace = options.fullTrace; runner.asyncOnly = options.asyncOnly; +diff --git a/node_modules/mocha/lib/runner.js b/node_modules/mocha/lib/runner.js +index ceb1a24..113ac40 100644 +--- a/node_modules/mocha/lib/runner.js ++++ b/node_modules/mocha/lib/runner.js +@@ -677,9 +677,45 @@ Runner.prototype.runTests = function(suite, fn) { + } + self.emit(constants.EVENT_TEST_END, test); + return self.hookUp(HOOK_TYPE_AFTER_EACH, next); +- } else if (err) { ++ } ++ else if (err || test.hasAttemptPassed) { ++ if(test.hasAttemptPassed){ ++ // Currently, to get passing attempts to rerun in mocha, ++ // we signal to mocha that we MIGHT need to retry a passed test attempt. ++ // If the test is run and there are no errors present, we assume a ++ // passed test attempt(set in ./driver/src/cypress/runner.ts) ++ test.state = STATE_PASSED ++ } else { ++ // Otherwise, we can assume the test attempt failed as 'err' would have to be present here. ++ test.state = STATE_FAILED ++ } ++ ++ // Evaluate if the test should continue based on 'calculateTestStatus'. ++ // This is a custom method added by Cypress in ./driver/src/cypress/mocha.ts ++ var testStatusInfo = test.calculateTestStatus() ++ ++ if(!testStatusInfo.shouldAttemptsContinue){ ++ // If the test has met the exit condition, we need to grab the metadata from ++ // 'calculateTestStatus' in order to display and interpret the test outerStatus correctly. ++ test._cypressTestStatusInfo = testStatusInfo ++ ++ if(testStatusInfo.attempts > 1) { ++ // If the test has been run AT LEAST twice (i.e. we are retrying), and the exit condition is met, ++ // modify mocha '_retries' to be the max retries made in order to possibly short circuit a suite ++ // if a hook has failed on every attempt (which we may not know at this stage of the test run). ++ ++ // We will need the original retries to 'reset' the possible retries ++ // if the test attempt passes and fits the exit condition, BUT an 'afterEach' hook fails. ++ // In this case, we need to know how many retries we can reapply to satisfy the config. ++ test._maxRetries = test._retries ++ test._retries = test._currentRetry ++ } ++ } ++ + var retry = test.currentRetry(); +- if (retry < test.retries()) { ++ ++ // requeue the test if we have retries and haven't satisfied our retry configuration. ++ if (retry < test.retries() && testStatusInfo.shouldAttemptsContinue) { + var clonedTest = test.clone(); + clonedTest.currentRetry(retry + 1); + tests.unshift(clonedTest); +@@ -689,8 +725,25 @@ Runner.prototype.runTests = function(suite, fn) { + // Early return + hook trigger so that it doesn't + // increment the count wrong + return self.hookUp(HOOK_TYPE_AFTER_EACH, next); +- } else { +- self.fail(test, err); ++ } else if(testStatusInfo.outerStatus === STATE_FAILED) { ++ // However, if we have fit the exit condition and the outerStatus of the test is marked as 'failed'. ++ ++ // We need to check the state of the last test attempt. ++ // In this case, if the strategy is "detect-flake-but-always-fail", ++ // has an outerStatus of 'failed', but the last test attempt passed, we still want to call the 'fail' hooks on the test, but keep ++ // the test attempt marked as passed. ++ ++ // However, since the test might have afterEach/after hooks that mutate the state of the test ++ // (from passed to failed), the hooks might actually affect how many retries are actually run in order to satisfy the config. ++ // In this case, we want to delay failing as long as possible to make sure the test is settled, all attempts are run, and hooks ++ // can no longer retry. For this edge case specifically, the failing of the test in the runner lives in ./driver/src/cypress/runner.ts ++ if(test.state === STATE_FAILED){ ++ self.fail(test, err) ++ } ++ } else if (testStatusInfo?.outerStatus === STATE_PASSED){ ++ // There is no case where a test can 'pass' and the last test attempt be a failure, ++ // meaning we can assume a 'passed' outerStatus has a final passed test attempt. ++ self.emit(constants.EVENT_TEST_PASS, test); + } + self.emit(constants.EVENT_TEST_END, test); + return self.hookUp(HOOK_TYPE_AFTER_EACH, next); +@@ -1029,3 +1082,4 @@ Runner.constants = constants; + * @external EventEmitter + * @see {@link https://nodejs.org/api/events.html#events_class_eventemitter} + */ ++ diff --git a/packages/driver/src/cypress.ts b/packages/driver/src/cypress.ts index fdb04318ff79..ddc6c128a52c 100644 --- a/packages/driver/src/cypress.ts +++ b/packages/driver/src/cypress.ts @@ -278,7 +278,16 @@ class $Cypress { } if (_.isObject(testRetries)) { - return testRetries[this.config('isInteractive') ? 'openMode' : 'runMode'] + const retriesAsNumberOrBoolean = testRetries[this.config('isInteractive') ? 'openMode' : 'runMode'] + + // If experimentalRetries are configured, a experimentalStrategy is present, and the retries configured is a boolean + // then we need to set the mocha '_retries' to 'maxRetries' present in the 'experimentalOptions' configuration. + if (testRetries['experimentalStrategy'] && _.isBoolean(retriesAsNumberOrBoolean) && retriesAsNumberOrBoolean) { + return testRetries['experimentalOptions'].maxRetries + } + + // Otherwise, this is a number and falls back to default + return retriesAsNumberOrBoolean } return null diff --git a/packages/driver/src/cypress/mocha.ts b/packages/driver/src/cypress/mocha.ts index e525d607da43..e586dc514391 100644 --- a/packages/driver/src/cypress/mocha.ts +++ b/packages/driver/src/cypress/mocha.ts @@ -37,6 +37,108 @@ delete (window as any).Mocha export const SKIPPED_DUE_TO_BROWSER_MESSAGE = ' (skipped due to browser)' +interface CypressTest extends Mocha.Test { + prevAttempts: CypressTest[] + final?: boolean + forceState?: 'passed' +} + +type Strategy = 'detect-flake-and-pass-on-threshold' | 'detect-flake-but-always-fail' | undefined + +type Options = T extends 'detect-flake-and-pass-on-threshold' ? + { + maxRetries: number + passesRequired: number + } : + T extends 'detect-flake-but-always-fail' ? { + maxRetries: number + stopIfAnyPassed: boolean + } : + undefined + +// NOTE: 'calculateTestStatus' is marked as an individual function to make functionality easier to test. +export function calculateTestStatus (test: CypressTest, strategy: Strategy, options: Options) { + // @ts-expect-error + const totalAttemptsAlreadyExecuted = test.currentRetry() + 1 + let shouldAttemptsContinue: boolean = true + let outerTestStatus: 'passed' | 'failed' | undefined = undefined + + const passedTests = _.filter(test.prevAttempts, (o) => o.state === 'passed') + const failedTests = _.filter(test.prevAttempts, (o) => o.state === 'failed') + + // Additionally, if the current test attempt passed/failed, add it to the attempt list + if (test.state === 'passed') { + passedTests.push(test) + } else if (test.state === 'failed') { + failedTests.push(test) + } + + // If there is AT LEAST one failed test attempt, we know we need to apply retry logic. + // Otherwise, the test might be burning in (not implemented yet) OR the test passed on the first attempt, + // meaning retry logic does NOT need to be applied. + if (failedTests.length > 0) { + const maxAttempts = test.retries() + 1 + const remainingAttempts = maxAttempts - totalAttemptsAlreadyExecuted + const passingAttempts = passedTests.length + + // Below variables are used for when strategy is "detect-flake-and-pass-on-threshold" or no strategy is defined + let passesRequired = strategy !== 'detect-flake-but-always-fail' ? + ((options as Options<'detect-flake-and-pass-on-threshold'> | undefined)?.passesRequired || 1) : + null + + const neededPassingAttemptsLeft = strategy !== 'detect-flake-but-always-fail' ? + (passesRequired as number) - passingAttempts : + null + + // Below variables are used for when strategy is only "detect-flake-but-always-fail" + let stopIfAnyPassed = strategy === 'detect-flake-but-always-fail' ? + ((options as Options<'detect-flake-but-always-fail'>).stopIfAnyPassed || false) : + null + + // Do we have the required amount of passes? If yes, we no longer need to keep running the test. + if (strategy !== 'detect-flake-but-always-fail' && passingAttempts >= (passesRequired as number)) { + outerTestStatus = 'passed' + test.final = true + shouldAttemptsContinue = false + } else if (totalAttemptsAlreadyExecuted < maxAttempts && + ( + // For strategy "detect-flake-and-pass-on-threshold" or no strategy (current GA retries): + // If we haven't met our max attempt limit AND we have enough remaining attempts that can satisfy the passing requirement. + // retry the test. + (strategy !== 'detect-flake-but-always-fail' && remainingAttempts >= (neededPassingAttemptsLeft as number)) || + // For strategy "detect-flake-but-always-fail": + // If we haven't met our max attempt limit AND + // stopIfAnyPassed is false OR + // stopIfAnyPassed is true and no tests have passed yet. + // retry the test. + (strategy === 'detect-flake-but-always-fail' && (!stopIfAnyPassed || stopIfAnyPassed && passingAttempts === 0)) + )) { + test.final = false + shouldAttemptsContinue = true + } else { + // Otherwise, we should stop retrying the test. + outerTestStatus = 'failed' + test.final = true + // If an outerStatus is 'failed', but the last test attempt was 'passed', we need to force the status so mocha doesn't flag the test attempt as failed. + // This is a common use case with 'detect-flake-but-always-fail', where we want to display the last attempt as 'passed' but fail the test. + test.forceState = test.state === 'passed' ? test.state : undefined + shouldAttemptsContinue = false + } + } else { + // retry logic did not need to be applied and the test passed. + outerTestStatus = 'passed' + shouldAttemptsContinue = false + test.final = true + } + + return { + strategy, + shouldAttemptsContinue, + attempts: totalAttemptsAlreadyExecuted, + outerStatus: outerTestStatus, + } +} + type MochaArgs = [string, Function | undefined] function createRunnable (ctx, fnType: 'Test' | 'Suite', mochaArgs: MochaArgs, runnableFn: Function, testCallback: Function | string = '', _testConfig?: Record) { const runnable = runnableFn.apply(ctx, mochaArgs) @@ -221,6 +323,10 @@ const restoreTestClone = () => { Test.prototype.clone = testClone } +const removeCalculateTestStatus = () => { + delete Test.prototype.calculateTestStatus +} + const restoreRunnerRunTests = () => { Runner.prototype.runTests = runnerRunTests } @@ -326,11 +432,25 @@ function patchTestClone () { ret._testConfig = this._testConfig ret.id = this.id ret.order = this.order + ret._currentRetry = this._currentRetry return ret } } +function createCalculateTestStatus (Cypress: Cypress.Cypress) { + // Adds a method to the test object called 'calculateTestStatus' + // which is used inside our mocha patch (./driver/patches/mocha+7.0.1.dev.patch) + // in order to calculate test retries. This prototype functions as a light abstraction around + // 'calculateTestStatus', which makes the function easier to unit-test + Test.prototype.calculateTestStatus = function () { + let retriesConfig = Cypress.config('retries') + + // @ts-expect-error + return calculateTestStatus(this, retriesConfig?.experimentalStrategy, retriesConfig?.experimentalOptions) + } +} + function patchRunnerRunTests () { Runner.prototype.runTests = function () { const suite = arguments[0] @@ -495,6 +615,7 @@ const restore = () => { restoreHookRetries() restoreRunnerRunTests() restoreTestClone() + removeCalculateTestStatus() restoreSuiteAddTest() restoreSuiteAddSuite() restoreSuiteHooks() @@ -509,6 +630,7 @@ const override = (specWindow, Cypress, config) => { patchHookRetries() patchRunnerRunTests() patchTestClone() + createCalculateTestStatus(Cypress) patchSuiteAddTest(specWindow, config) patchSuiteAddSuite(specWindow, config) patchSuiteHooks(specWindow, config) diff --git a/packages/driver/src/cypress/runner.ts b/packages/driver/src/cypress/runner.ts index 1b70f8bf3175..19a4d6582054 100644 --- a/packages/driver/src/cypress/runner.ts +++ b/packages/driver/src/cypress/runner.ts @@ -25,7 +25,7 @@ const RUNNABLE_AFTER_RUN_ASYNC_EVENT = 'runner:runnable:after:run:async' const RUNNABLE_LOGS = ['routes', 'agents', 'commands', 'hooks'] as const const RUNNABLE_PROPS = [ - '_testConfig', 'id', 'order', 'title', '_titlePath', 'root', 'hookName', 'hookId', 'err', 'state', 'pending', 'failedFromHookId', 'body', 'speed', 'type', 'duration', 'wallClockStartedAt', 'wallClockDuration', 'timings', 'file', 'originalTitle', 'invocationDetails', 'final', 'currentRetry', 'retries', '_slow', + '_cypressTestStatusInfo', '_testConfig', 'id', 'order', 'title', '_titlePath', 'root', 'hookName', 'hookId', 'err', 'state', 'pending', 'failedFromHookId', 'body', 'speed', 'type', 'duration', 'wallClockStartedAt', 'wallClockDuration', 'timings', 'file', 'originalTitle', 'invocationDetails', 'final', 'currentRetry', 'retries', '_slow', ] as const const debug = debugFn('cypress:driver:runner') @@ -481,7 +481,26 @@ const overrideRunnerHook = (Cypress, _runner, getTestById, getTest, setTest, get if (test.final !== false) { test.final = true if (test.state === 'passed') { - Cypress.action('runner:pass', wrap(test)) + if (test?._cypressTestStatusInfo?.outerStatus === 'failed') { + // We call _runner.fail here instead of in mocha because we need to make sure none of the hooks mutate the current test state, which might trigger + // another attempt. This affects our server reporter by reporting the test final status multiple times and incorrect attempt statuses. + // We can be sure here that the test is settled and we can fail it appropriately if the condition is met. + + // In this case, since the last attempt of the test does not contain an error, we need to look one up from a previous attempt + // and fail the last attempt with this error to appropriate the correct runner lifecycle hooks. However, we still want the + // last attempt to be marked as 'passed'. This is where 'forceState' comes into play (see 'calculateTestStatus' in ./driver/src/cypress/mocha.ts) + + // If there are other hooks (such as multiple afterEach hooks) that MIGHT impact the end conditions of the test, we only want to fail this ONCE! + const lastTestWithErr = (test.prevAttempts || []).find((t) => t.state === 'failed') + // TODO: figure out serialization with this looked up error as it isn't printed to the console reporter properly. + const err = lastTestWithErr?.err + + // fail the test as it would in the mocha/lib/runner.js as we can now be certain that no other hooks will impact the state of the test (regardless of hierarchy) + _runner.fail(test, err) + } else { + // If the last test attempt passed, but the outerStatus isn't marked as failed, then we want to emit the mocha 'pass' event. + Cypress.action('runner:pass', wrap(test)) + } } Cypress.action('runner:test:end', wrap(test)) @@ -915,6 +934,11 @@ const setHookFailureProps = (test, hook, err) => { test.duration = hook.duration // TODO: nope (?) test.hookName = hookName // TODO: why are we doing this? test.failedFromHookId = hook.hookId + // There should never be a case where the outerStatus of a test is set AND the last test attempt failed on a hook and the state is passed. + // Therefore, if the last test attempt fails on a hook, the outerStatus should also indicate a failure. + if (test?._cypressTestStatusInfo?.outerStatus) { + test._cypressTestStatusInfo.outerStatus = test.state + } } function getTestFromRunnable (runnable) { @@ -1133,11 +1157,28 @@ const _runnerListeners = (_runner, Cypress, _emissions, getTestById, getTest, se } else { err = $errUtils.appendErrMsg(err, errMessage) } + + // If the test never failed and only the hooks did, + // we need to attach the metadata of the test to the hook to report the failure correctly to the server reporter. + // We calculate it fresh here since it may not be available on the test, which is the case with a beforeEach hook. + // as well as maybe incorrect (test passed on first attempt, but after hooks failed) + const testStatus = test.calculateTestStatus() + + runnable._cypressTestStatusInfo = { + attempts: testStatus.attempts, + strategy: testStatus.strategy, + // regardless of the test state, we should ultimately fail the test here. + outerStatus: runnable.state, + shouldAttemptsContinue: false, + } } // always set runnable err so we can tap into // taking a screenshot on error runnable.err = $errUtils.wrapErr(err) + // If the last test passed, but the outerStatus of a test failed, we need to correct the status of the test to say 'passed' + // (see 'calculateTestStatus' in ./driver/src/cypress/mocha.ts). + runnable.state = runnable.forceState || runnable.state if (!runnable.alreadyEmittedMocha) { // do not double emit this event @@ -1353,9 +1394,7 @@ export default { replaceTest(test, test.id) } - const maybeHandleRetry = (runnable, err) => { - if (!err) return - + const maybeHandleRetryOnFailure = (runnable, err) => { const r = runnable const isHook = r.type === 'hook' const isTest = r.type === 'test' @@ -1363,8 +1402,62 @@ export default { const hookName = isHook && getHookName(r) const isBeforeEachHook = isHook && !!hookName.match(/before each/) const isAfterEachHook = isHook && !!hookName.match(/after each/) - const retryAbleRunnable = isTest || isBeforeEachHook || isAfterEachHook - const willRetry = (test._currentRetry < test._retries) && retryAbleRunnable + let isBeforeEachThatIsRetryable = false + let isAfterEachThatIsRetryable = false + + if (isBeforeEachHook || isAfterEachHook) { + if (err) { + // If the beforeEach/afterEach hook failed, mark the test attempt as failed + test.state = 'failed' + } + + // Then calculate the test status, accounting for the updated state if the hook errored + // to see if we should continue running the test. + const status = test.calculateTestStatus() + + // If we have remaining attempts, inclusive of the beforeEach attempt if it failed, then the hook is retry-able + isBeforeEachThatIsRetryable = isBeforeEachHook && status.shouldAttemptsContinue + + if (isAfterEachHook) { + // If we have remaining attempts, inclusive of the afterEach attempt if it failed, then the hook is retry-able + if (status.shouldAttemptsContinue) { + isAfterEachThatIsRetryable = true + } else if (!status.shouldAttemptsContinue && err) { + /** + * OR in the event the test attempt 'passed' and hit the exit condition, + * BUT the afterEach hook errored which MIGHT change the test exit condition (as the test attempt is now 'failed') + * + * In this case, we need to see if we MIGHT have additional retries (maxRetries) available to reapply to satisfy + * the test exit condition. + * + * Ex: This is important for 'detect-flake-but-always-fail' where stopIfAnyPassed=true, where the test itself might pass, + * the exit condition is met, but THEN the 'afterEach' hook itself fails, which MIGHT change the exit conditions of the test + * if there are remaining attempts that can be executed in order to satisfy the experimentalRetries configuration. + * + * To help with exit conditions on test skipping on repeated hook failures, test._retries + * is set to retries made inside our mocha patch (./driver/patches/mocha+7.0.1.dev.patch), assuming a retry is made. + * To show how many attempts are possible, we set '_maxRetries' to the total retries initially configured in order + * to reference here in the case we might need to 'reset'. + * + * When we fall into this scenario, we need to 'reset' the mocha '_retries' in order to continue attempts + * and requeue the test. + */ + + // Since this is the afterEach, we can assume the currentRetry has already run + const canMoreAttemptsBeApplied = test._currentRetry === test._retries && test._currentRetry < test._maxRetries + + if (canMoreAttemptsBeApplied) { + // The test in fact did NOT fit the exit condition because the 'afterEach' changed the status of the test. + // Reset the retries to apply more attempts to possibly satisfy the test retry conditions. + test._retries = test._maxRetries + isAfterEachThatIsRetryable = true + } + } + } + } + + const willRetry = isBeforeEachThatIsRetryable || isAfterEachThatIsRetryable + const isTestConfigOverride = !fired(TEST_BEFORE_RUN_EVENT, test) const fail = function () { @@ -1374,10 +1467,21 @@ export default { return } + if (isTest) { + // If there is no error on the test attempt, then the test attempt passed! + // set a custom property on the test obj, hasTestAttemptPassed, + // to inform mocha (through patch-package) that we need to re-attempt a passed test attempt + // if experimentalRetries is enabled and there is at least one existing failure. + runnable.hasAttemptPassed = !err + } + if (err) { if (willRetry) { - test.state = 'failed' test.final = false + // If the test is being retried/re-attempted, delete the testStatusInfo metadata object if it is present + // that determines outer status as it is no longer needed and contributes to additional properties on the + // test runnable that are NOT needed. + delete test._cypressTestStatusInfo } if (isTestConfigOverride) { @@ -1414,7 +1518,13 @@ export default { newTest._currentRetry = test._currentRetry + 1 - test.parent.testsQueue.unshift(newTest) + // Check to see if the test attempt maybe passed, but hasn't satisfied its retry config yet and requeued itself. + // In this case, we DON'T need to add the new test attempt as it is already queued to rerun. + const testRetryThatMatches = test.parent.testsQueue.find((t) => t.id === newTest.id && t._currentRetry === newTest._currentRetry) + + if (!testRetryThatMatches) { + test.parent.testsQueue.unshift(newTest) + } // this prevents afterEach hooks that exist at a deeper (or same) level than the failing one from running test._skipHooksWithLevelGreaterThan = runnable.titlePath().length - 1 @@ -1641,7 +1751,7 @@ export default { delete runnable.err } - err = maybeHandleRetry(runnable, err) + err = maybeHandleRetryOnFailure(runnable, err) return runnableAfterRunAsync(runnable, Cypress) .then(() => { diff --git a/packages/driver/types/internal-types.d.ts b/packages/driver/types/internal-types.d.ts index 56745656b901..bcd8b0af3e46 100644 --- a/packages/driver/types/internal-types.d.ts +++ b/packages/driver/types/internal-types.d.ts @@ -96,4 +96,13 @@ interface CypressRunnable extends Mocha.Runnable { hookName: string id: any err: any + // Added by Cypress to Tests in order to calculate continue conditions for retries + calculateTestStatus?: () => { + strategy: 'detect-flake-and-pass-on-threshold' | 'detect-flake-but-always-fail' | undefined + shouldAttemptsContinue: boolean + attempts: number + outerStatus: 'passed' | failed + } + // Added by Cypress to Tests in order to determine if the experimentalRetries test run passed so we can leverage in the retry logic. + hasAttemptPassed?: boolean } diff --git a/packages/reporter/src/attempts/attempt-model.ts b/packages/reporter/src/attempts/attempt-model.ts index 253f807f2192..caa9bb4fecfa 100644 --- a/packages/reporter/src/attempts/attempt-model.ts +++ b/packages/reporter/src/attempts/attempt-model.ts @@ -23,6 +23,7 @@ export default class Attempt { @observable isActive: boolean | null = null @observable routes: Route[] = [] @observable _state?: TestState | null = null + @observable _testOuterStatus?: TestState = undefined @observable _invocationCount: number = 0 @observable invocationDetails?: FileDetails @observable hookCount: { [name in HookName]: number } = { @@ -172,6 +173,10 @@ export default class Attempt { this._state = props.state } + if (props._cypressTestStatusInfo?.outerStatus) { + this._testOuterStatus = props._cypressTestStatusInfo.outerStatus + } + if (props.err) { if (this.err) { this.err.update(props.err) diff --git a/packages/reporter/src/lib/events.ts b/packages/reporter/src/lib/events.ts index f0cc2afddd9c..6ee477bfe8a9 100644 --- a/packages/reporter/src/lib/events.ts +++ b/packages/reporter/src/lib/events.ts @@ -98,7 +98,9 @@ const events: Events = { runner.on('test:after:run', action('test:after:run', (runnable: TestProps, isInteractive: boolean) => { runnablesStore.runnableFinished(runnable, isInteractive) if (runnable.final && !appState.studioActive) { - statsStore.incrementCount(runnable.state!) + // When displaying the overall test status, we want to reference the test outerStatus + // as the last runnable (test attempt) may have passed, but the outerStatus might mark the test run as a failure. + statsStore.incrementCount(runnable?._cypressTestStatusInfo?.outerStatus || runnable.state!) } })) diff --git a/packages/reporter/src/test/test-model.ts b/packages/reporter/src/test/test-model.ts index f5eac05a97df..0a305c6c9a05 100644 --- a/packages/reporter/src/test/test-model.ts +++ b/packages/reporter/src/test/test-model.ts @@ -15,6 +15,10 @@ export type UpdateTestCallback = () => void export interface TestProps extends RunnableProps { state: TestState | null + // the final state of the test (the attempt might pass, but the test might be marked as failed) + _cypressTestStatusInfo?: { + outerStatus?: TestState + } err?: ErrProps isOpen?: boolean agents?: Array @@ -31,6 +35,10 @@ export interface TestProps extends RunnableProps { export interface UpdatableTestProps { id: TestProps['id'] state?: TestProps['state'] + // the final state of the test (the attempt might pass, but the test might be marked as failed) + _cypressTestStatusInfo?: { + outerStatus?: TestState + } err?: TestProps['err'] hookId?: string failedFromHookId?: string @@ -89,7 +97,9 @@ export default class Test extends Runnable { } @computed get state () { - return this.lastAttempt ? this.lastAttempt.state : 'active' + // Use the outerStatus of the last attempt to determine overall test status, if present, + // as the last attempt may have 'passed', but the outerStatus may be marked as failed. + return this.lastAttempt ? (this.lastAttempt._testOuterStatus || this.lastAttempt.state) : 'active' } @computed get err () { @@ -122,19 +132,21 @@ export default class Test extends Runnable { } addLog = (props: LogProps) => { - return this._withAttempt(props.testCurrentRetry || this.currentRetry, (attempt: Attempt) => { + // NOTE: The 'testCurrentRetry' prop may be zero, which means we really care about nullish coalescing the value + // to make sure logs on the first attempt are still accounted for even if the attempt has finished. + return this._withAttempt(props.testCurrentRetry ?? this.currentRetry, (attempt: Attempt) => { return attempt.addLog(props) }) } updateLog (props: LogProps) { - this._withAttempt(props.testCurrentRetry || this.currentRetry, (attempt: Attempt) => { + this._withAttempt(props.testCurrentRetry ?? this.currentRetry, (attempt: Attempt) => { attempt.updateLog(props) }) } removeLog (props: LogProps) { - this._withAttempt(props.testCurrentRetry || this.currentRetry, (attempt: Attempt) => { + this._withAttempt(props.testCurrentRetry ?? this.currentRetry, (attempt: Attempt) => { attempt.removeLog(props) }) } @@ -189,7 +201,7 @@ export default class Test extends Runnable { @action finish (props: UpdatableTestProps, isInteractive: boolean) { this._isFinished = !(props.retries && props.currentRetry) || props.currentRetry >= props.retries - this._withAttempt(props.currentRetry || 0, (attempt: Attempt) => { + this._withAttempt(props.currentRetry ?? 0, (attempt: Attempt) => { attempt.finish(props, isInteractive) }) } diff --git a/packages/server/lib/project-base.ts b/packages/server/lib/project-base.ts index f9ac70da24e9..c8d879b27f3b 100644 --- a/packages/server/lib/project-base.ts +++ b/packages/server/lib/project-base.ts @@ -360,7 +360,7 @@ export class ProjectBase extends EE { debug('received runnables %o', runnables) if (reporterInstance) { - reporterInstance.setRunnables(runnables) + reporterInstance.setRunnables(runnables, this.getConfig()) } if (this._recordTests) { diff --git a/packages/server/lib/reporter.js b/packages/server/lib/reporter.js index 986a25bc3fd2..1cb6d2e914bf 100644 --- a/packages/server/lib/reporter.js +++ b/packages/server/lib/reporter.js @@ -18,6 +18,41 @@ const { overrideRequire } = require('./override_require') // otherwise mocha will be resolved from project's node_modules and might not work with our code const customReporterMochaPath = path.dirname(require.resolve('mocha-7.0.1')) +const buildAttemptMessage = (currentRetry, totalRetries) => { + return `(Attempt ${currentRetry} of ${totalRetries})` +} + +// Used for experimentalRetries, where we want to display the passed/failed +// status of an attempt in the console +const getIconStatus = (status) => { + let overallStatusSymbol + let overallStatusSymbolColor + let overallStatusColor + + switch (status) { + case 'passed': + overallStatusSymbol = mochaSymbols.ok + overallStatusSymbolColor = 'checkmark' + overallStatusColor = 'checkmark' + break + case 'failed': + overallStatusSymbol = mochaSymbols.err + overallStatusSymbolColor = 'bright fail' + overallStatusColor = 'error message' + break + default: + overallStatusSymbol = undefined + overallStatusSymbolColor = undefined + overallStatusColor = 'medium' + } + + return { + overallStatusSymbol, + overallStatusSymbolColor, + overallStatusColor, + } +} + overrideRequire((depPath, _load) => { if ((depPath === 'mocha') || depPath.startsWith('mocha/')) { return _load(depPath.replace('mocha', customReporterMochaPath)) @@ -191,7 +226,10 @@ const mergeErr = function (runnable, runnables, stats) { // dont mutate the test, and merge in the runnable title // in the case its a hook so that we emit the right 'fail' // event for reporters - test = _.extend({}, test, { title: runnable.title }) + + // However, we need to propagate the cypressTestStatusInfo to the reporter in order to print the test information correctly + // in the terminal, as well as updating the test state as it may have changed in the client-side runner. + test = _.extend({}, test, { title: runnable.title, _cypressTestStatusInfo: runnable._cypressTestStatusInfo, state: runnable.state }) return [test, test.err] } @@ -249,13 +287,14 @@ class Reporter { this.normalizeTest = this.normalizeTest.bind(this) } - setRunnables (rootRunnable) { + setRunnables (rootRunnable, cypressConfig) { if (!rootRunnable) { rootRunnable = { title: '' } } // manage stats ourselves this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, skipped: 0, failures: 0 } + this.retriesConfig = cypressConfig ? cypressConfig.retries : {} this.runnables = {} rootRunnable = this._createRunnable(rootRunnable, 'suite') const reporter = Reporter.loadReporter(this.reporterName, this.projectRoot) @@ -281,23 +320,102 @@ class Reporter { --indents }) + const retriesConfig = this.retriesConfig + // Override the default reporter to always show test timing even for fast tests // and display slow ones in yellow rather than red this.runner._events.pass[2] = function (test) { + // can possibly be undefined if the test fails before being run, such as in before/beforeEach hooks + const cypressTestMetaData = test._cypressTestStatusInfo + + const durationColor = test.speed === 'slow' ? 'medium' : 'fast' + + let fmt + + // Print the default if the experiment is not configured + if (!retriesConfig?.experimentalStrategy) { + fmt = + Array(indents).join(' ') + + mochaColor('checkmark', ` ${ mochaSymbols.ok}`) + + mochaColor('pass', ' %s') + + mochaColor(durationColor, ' (%dms)') + + // Log: `βœ“ test title (300ms)` when a test passes + // eslint-disable-next-line no-console + console.log(fmt, test.title, test.duration) + } else { + // If there have been no retries and experimental retries is configured, + // DON'T decorate the last test in the console as an attempt. + if (cypressTestMetaData?.attempts > 1) { + const lastTestStatus = getIconStatus(test.state) + + fmt = + Array(indents).join(' ') + + mochaColor(lastTestStatus.overallStatusColor, ` ${ lastTestStatus.overallStatusSymbol}${buildAttemptMessage(cypressTestMetaData.attempts, test.retries + 1)}`) + + // or Log: `βœ“(Attempt 3 of 3) test title` when the overall outerStatus of a test has passed + // eslint-disable-next-line no-console + console.log(fmt, test.title) + } + + const finalTestStatus = getIconStatus(cypressTestMetaData.outerStatus || test.state) + + const finalMessaging = + Array(indents).join(' ') + + mochaColor(finalTestStatus.overallStatusSymbolColor, ` ${ finalTestStatus.overallStatusSymbol ? finalTestStatus.overallStatusSymbol : ''}`) + + mochaColor(finalTestStatus.overallStatusColor, ' %s') + + mochaColor(durationColor, ' (%dms)') + + // Log: βœ“`test title` when the overall outerStatus of a test has passed + // OR + // Log: βœ–`test title` when the overall outerStatus of a test has failed + // eslint-disable-next-line no-console + console.log(finalMessaging, test.title, test.duration) + } + } + + const originalFailPrint = this.runner._events.fail[2] + + this.runner._events.fail[2] = function (test) { + // can possibly be undefined if the test fails before being run, such as in before/beforeEach hooks + const cypressTestMetaData = test._cypressTestStatusInfo + + // print the default if the experiment is not configured + if (!retriesConfig?.experimentalStrategy) { + return originalFailPrint.call(this, test) + } + const durationColor = test.speed === 'slow' ? 'medium' : 'fast' - const fmt = + + // If there have been no retries and experimental retries is configured, + // DON'T decorate the last test in the console as an attempt. + if (cypressTestMetaData?.attempts > 1) { + const lastTestStatus = getIconStatus(test.state) + + const fmt = + Array(indents).join(' ') + + mochaColor(lastTestStatus.overallStatusColor, ` ${ lastTestStatus.overallStatusSymbol}${buildAttemptMessage(cypressTestMetaData.attempts, test.retries + 1)}`) + + // Log: `βœ–(Attempt 3 of 3) test title (300ms)` when a test fails and none of the retries have passed + // eslint-disable-next-line no-console + console.log(fmt, test.title) + } + + const finalTestStatus = getIconStatus(cypressTestMetaData?.outerStatus || test.state) + + const finalMessaging = Array(indents).join(' ') + - mochaColor('checkmark', ` ${ mochaSymbols.ok}`) + - mochaColor('pass', ' %s') + + mochaColor(finalTestStatus.overallStatusSymbolColor, ` ${ finalTestStatus.overallStatusSymbol ? finalTestStatus.overallStatusSymbol : ''}`) + + mochaColor(finalTestStatus.overallStatusColor, ' %s') + mochaColor(durationColor, ' (%dms)') - // Log: `βœ“ test title (300ms)` when a test passes + // Log: βœ–`test title` when the overall outerStatus of a test has failed // eslint-disable-next-line no-console - console.log(fmt, test.title, test.duration) + console.log(finalMessaging, test.title, test.duration) } - } - this.runner.ignoreLeaks = true + this.runner.ignoreLeaks = true + } } _createRunnable (runnableProps, type, parent) { @@ -331,7 +449,15 @@ class Reporter { } emit (event, arg) { - if (event === 'retry' && this.reporterName === 'spec') { + // iI using GA retries, log the retry attempt as the status of the attempt is not used + if (event === 'retry' && this.reporterName === 'spec' && !this.retriesConfig?.experimentalStrategy) { + this._logRetry(arg) + } + + // If using experimental retries, log the attempt after the test attempt runs to accurately represent the attempt pass/fail status + // We don't log the last attempt as this is handled by the main pass/fail handler defined above, and would ultimately log AFTER the test complete test status is reported + // from the mocha:pass/mocha:fail event + if (event === 'test:after:run' && this.reporterName === 'spec' && this.retriesConfig?.experimentalStrategy && !arg.final) { this._logRetry(arg) } @@ -361,12 +487,39 @@ class Reporter { _logRetry (test) { const runnable = this.runnables[test.id] + + // Merge the runnable with the updated test props to gain most recent status from the app runnable (in the case a passed test is retried). + _.extend(runnable, test) const padding = ' '.repeat(runnable.titlePath().length) - const retryMessage = mochaColor('medium', `(Attempt ${test.currentRetry + 1} of ${test.retries + 1})`) - // Log: `(Attempt 1 of 2) test title` when a test retries + // Don't display a pass/fail symbol if we don't know the status. + let mochaSymbolToDisplay = '' + let mochaColorScheme = 'medium' + + // If experimental retries are configured, we need to print the pass/fail status of each attempt as it is no longer implied. + if (this.retriesConfig?.experimentalStrategy) { + switch (runnable.state) { + case 'passed': + mochaSymbolToDisplay = mochaColor('checkmark', mochaSymbols.ok) + mochaColorScheme = 'green' + break + case 'failed': + mochaSymbolToDisplay = mochaColor('bright fail', mochaSymbols.err) + mochaColorScheme = 'error message' + break + default: + } + } + + const attemptMessage = mochaColor(mochaColorScheme, buildAttemptMessage(test.currentRetry + 1, test.retries + 1)) + + // Log: `(Attempt 1 of 2) test title` when a test attempts without experimentalRetries configured. + // OR + // Log: `βœ“(Attempt 1 of 2) test title` when a test attempt passes with experimentalRetries configured. + // OR + // Log: `βœ–(Attempt 1 of 2) test title` when a test attempt fails with experimentalRetries configured. // eslint-disable-next-line no-console - console.log(`${padding}${retryMessage} ${test.title}`) + return console.log(`${padding}${mochaSymbolToDisplay}${attemptMessage} ${test.title}`) } normalizeHook (hook = {}) { @@ -379,13 +532,31 @@ class Reporter { } normalizeTest (test = {}) { + let outerTest = _.clone(test) + + // In the case tests were skipped or another case where they haven't run, + // test._cypressTestStatusInfo.outerStatus will be undefined. In this case, + // the test state reflects the outer state. + outerTest.state = test._cypressTestStatusInfo?.outerStatus || test.state + + // If the outerStatus is failed, but the last test passed, look up the first error that occurred + // and use this as the test overall error. This same logic is applied in the mocha patch to report + // the error correctly to the Cypress browser reporter (see ./driver/patches/mocha+7.0.1.dev.patch) + if (test.state === 'passed' && outerTest.state === 'failed') { + outerTest.err = (test.prevAttempts || []).find((t) => t.state === 'failed')?.err + // Otherwise, if the test failed, set the error on the outer test similar to the state + // as we can assume that if the last test failed, the state could NEVER be passing. + } else if (test.state === 'failed') { + outerTest.err = test.err + } + const normalizedTest = { - testId: orNull(test.id), - title: getTitlePath(test), - state: orNull(test.state), - body: orNull(test.body), - displayError: orNull(test.err && test.err.stack), - attempts: _.map((test.prevAttempts || []).concat([test]), (attempt) => { + testId: orNull(outerTest.id), + title: getTitlePath(outerTest), + state: orNull(outerTest.state), + body: orNull(outerTest.body), + displayError: orNull(outerTest.err && outerTest.err.stack), + attempts: _.map((outerTest.prevAttempts || []).concat([test]), (attempt) => { const err = attempt.err && { name: attempt.err.name, message: attempt.err.message, diff --git a/system-tests/__snapshots__/experimental_retries.spec.ts.js b/system-tests/__snapshots__/experimental_retries.spec.ts.js new file mode 100644 index 000000000000..16087f1740e7 --- /dev/null +++ b/system-tests/__snapshots__/experimental_retries.spec.ts.js @@ -0,0 +1,2302 @@ +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / passes / only runs the first attempt of the test if the test passes'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (always-passes.cy.js) β”‚ + β”‚ Searched: cypress/e2e/always-passes.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: always-passes.cy.js (1 of 1) + + + always passes + βœ“ always passes + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: always-passes.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” always-passes.cy.js XX:XX 1 1 - - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ” All specs passed! XX:XX 1 1 - - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / passes / retries up to the "passesRequired" limit if the config can be satisfied'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (deterministic-flaky.cy.js) β”‚ + β”‚ Searched: cypress/e2e/deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: deterministic-flaky.cy.js (1 of 1) + + + deterministic flaky test + βœ–(Attempt 1 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 2 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 3 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 4 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 5 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 6 of 10) deterministically runs pass/fail on this test + βœ“ deterministically runs pass/fail on this test + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” deterministic-flaky.cy.js XX:XX 1 1 - - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ” All specs passed! XX:XX 1 1 - - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / passes / retries up to the "passesRequired" limit if the config can be satisfied (max attempts)'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (deterministic-flaky.cy.js) β”‚ + β”‚ Searched: cypress/e2e/deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: deterministic-flaky.cy.js (1 of 1) + + + deterministic flaky test + βœ–(Attempt 1 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 2 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 3 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 4 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 5 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 6 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 7 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 8 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 9 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 10 of 10) deterministically runs pass/fail on this test + βœ“ deterministically runs pass/fail on this test + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” deterministic-flaky.cy.js XX:XX 1 1 - - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ” All specs passed! XX:XX 1 1 - - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / fails / short-circuits if the needed "passesRequired" cannot be satisfied by the remaining attempts available'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (deterministic-flaky.cy.js) β”‚ + β”‚ Searched: cypress/e2e/deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: deterministic-flaky.cy.js (1 of 1) + + + deterministic flaky test + βœ–(Attempt 1 of 6) deterministically runs pass/fail on this test + βœ“(Attempt 2 of 6) deterministically runs pass/fail on this test + βœ–(Attempt 3 of 6) deterministically runs pass/fail on this test + βœ– deterministically runs pass/fail on this test + + + 0 passing + 1 failing + + 1) deterministic flaky test + deterministically runs pass/fail on this test: + AssertionError: expected true to be false + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– deterministic-flaky.cy.js XX:XX 1 - 1 - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / fails / retries up to the "passesRequired" limit if the config can be satisfied (max attempts possible)'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (deterministic-flaky.cy.js) β”‚ + β”‚ Searched: cypress/e2e/deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: deterministic-flaky.cy.js (1 of 1) + + + deterministic flaky test + βœ–(Attempt 1 of 7) deterministically runs pass/fail on this test + βœ“(Attempt 2 of 7) deterministically runs pass/fail on this test + βœ–(Attempt 3 of 7) deterministically runs pass/fail on this test + βœ“(Attempt 4 of 7) deterministically runs pass/fail on this test + βœ–(Attempt 5 of 7) deterministically runs pass/fail on this test + βœ“(Attempt 6 of 7) deterministically runs pass/fail on this test + βœ–(Attempt 7 of 7) deterministically runs pass/fail on this test + βœ– deterministically runs pass/fail on this test + + + 0 passing + 1 failing + + 1) deterministic flaky test + deterministically runs pass/fail on this test: + AssertionError: expected true to be false + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– deterministic-flaky.cy.js XX:XX 1 - 1 - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / passes / only runs the first attempt of the test if the test passes'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (always-passes.cy.js) β”‚ + β”‚ Searched: cypress/e2e/always-passes.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: always-passes.cy.js (1 of 1) + + + always passes + βœ“ always passes + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: always-passes.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” always-passes.cy.js XX:XX 1 1 - - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ” All specs passed! XX:XX 1 1 - - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / fails / runs all attempts of the test if the first attempt fails and "stopIfAnyPassed=false"'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (deterministic-flaky.cy.js) β”‚ + β”‚ Searched: cypress/e2e/deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: deterministic-flaky.cy.js (1 of 1) + + + deterministic flaky test + βœ–(Attempt 1 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 2 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 3 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 4 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 5 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 6 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 7 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 8 of 10) deterministically runs pass/fail on this test + βœ–(Attempt 9 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 10 of 10) deterministically runs pass/fail on this test + βœ– deterministically runs pass/fail on this test + + + 0 passing + 1 failing + + 1) deterministic flaky test + deterministically runs pass/fail on this test: + [object Object] +AssertionError: expected true to be false + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– deterministic-flaky.cy.js XX:XX 1 - 1 - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / fails / runs attempts of the test if the first attempt fails until the test passes if "stopIfAnyPassed=true"'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (deterministic-flaky.cy.js) β”‚ + β”‚ Searched: cypress/e2e/deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: deterministic-flaky.cy.js (1 of 1) + + + deterministic flaky test + βœ–(Attempt 1 of 10) deterministically runs pass/fail on this test + βœ“(Attempt 2 of 10) deterministically runs pass/fail on this test + βœ– deterministically runs pass/fail on this test + + + 0 passing + 1 failing + + 1) deterministic flaky test + deterministically runs pass/fail on this test: + [object Object] +AssertionError: expected true to be false + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: deterministic-flaky.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– deterministic-flaky.cy.js XX:XX 1 - 1 - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / exercises experimental-retries suite to verify console reporter and final status code are correct.'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 8 found (can-retry-from-afterEach.retries.mochaEvents.cy.js, can-retry-from-before β”‚ + β”‚ Each.retries.mochaEvents.cy.js, cant-retry-from-before.retries.mochaEvents.cy.js, β”‚ + β”‚ does-not-serialize-dom-error.cy.js, simple-fail.retries.mochaEvents.cy.js, test-re β”‚ + β”‚ try-with-h...) β”‚ + β”‚ Searched: cypress/e2e/runner/experimental-retries/* β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: can-retry-from-afterEach.retries.mochaEvents.cy.js (1 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“ test 1 + βœ“ test 2 + βœ“ test 3 + + suite 2 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“(Attempt 7 of 10) test 1 + βœ“ test 1 + + suite 3 + βœ“ test 1 + + + 5 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 5 β”‚ + β”‚ Passing: 5 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: can-retry-from-afterEach.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: can-retry-from-beforeEach.retries.mochaEvents.cy.js (2 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“ test 1 + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: can-retry-from-beforeEach.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: cant-retry-from-before.retries.mochaEvents.cy.js (3 of 8) + + + suite 1 + βœ– "before all" hook for "test 1" (NaNms) + + + 0 passing + 1 failing + + 1) suite 1 + "before all" hook for "test 1": + Error: Because this error occurred during a \`before all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: cant-retry-from-before.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: does-not-serialize-dom-error.cy.js (4 of 8) + + + βœ–(Attempt 1 of 10) visits + βœ–(Attempt 2 of 10) visits + βœ–(Attempt 3 of 10) visits + βœ–(Attempt 4 of 10) visits + βœ–(Attempt 5 of 10) visits + βœ–(Attempt 6 of 10) visits + βœ– visits + + 0 passing + 1 failing + + 1) visits: + AssertionError: Timed out retrying after 200ms: expected '' not to be 'visible' + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: does-not-serialize-dom-error.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: simple-fail.retries.mochaEvents.cy.js (5 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“ test 1 + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: simple-fail.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: test-retry-with-hooks.retries.mochaEvents.cy.js (6 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“ test 1 + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: test-retry-with-hooks.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: test-retry-with-only.retries.mochaEvents.cy.js (7 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 2 + βœ“(Attempt 2 of 10) test 2 + βœ“(Attempt 3 of 10) test 2 + βœ“(Attempt 4 of 10) test 2 + βœ“(Attempt 5 of 10) test 2 + βœ“(Attempt 6 of 10) test 2 + βœ“ test 2 + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: test-retry-with-only.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: three-tests-with-retry.retries.mochaEvents.cy.js (8 of 8) + + + suite 1 + βœ“ test 1 + βœ–(Attempt 1 of 10) test 2 + βœ–(Attempt 2 of 10) test 2 + βœ“(Attempt 3 of 10) test 2 + βœ“(Attempt 4 of 10) test 2 + βœ“(Attempt 5 of 10) test 2 + βœ“(Attempt 6 of 10) test 2 + βœ“(Attempt 7 of 10) test 2 + βœ“ test 2 + βœ“ test 3 + + + 3 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 3 β”‚ + β”‚ Passing: 3 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: three-tests-with-retry.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” can-retry-from-afterEach.retries.mo XX:XX 5 5 - - - β”‚ + β”‚ chaEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ” can-retry-from-beforeEach.retries.m XX:XX 1 1 - - - β”‚ + β”‚ ochaEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– cant-retry-from-before.retries.moch XX:XX 1 - 1 - - β”‚ + β”‚ aEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– does-not-serialize-dom-error.cy.js XX:XX 1 - 1 - - β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ” simple-fail.retries.mochaEvents.cy. XX:XX 1 1 - - - β”‚ + β”‚ js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ” test-retry-with-hooks.retries.mocha XX:XX 1 1 - - - β”‚ + β”‚ Events.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ” test-retry-with-only.retries.mochaE XX:XX 1 1 - - - β”‚ + β”‚ vents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ” three-tests-with-retry.retries.moch XX:XX 3 3 - - - β”‚ + β”‚ aEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 2 of 8 failed (25%) XX:XX 14 12 2 - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / exercises experimental-retries suite to verify console reporter and final status code are correct.'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 8 found (can-retry-from-afterEach.retries.mochaEvents.cy.js, can-retry-from-before β”‚ + β”‚ Each.retries.mochaEvents.cy.js, cant-retry-from-before.retries.mochaEvents.cy.js, β”‚ + β”‚ does-not-serialize-dom-error.cy.js, simple-fail.retries.mochaEvents.cy.js, test-re β”‚ + β”‚ try-with-h...) β”‚ + β”‚ Searched: cypress/e2e/runner/experimental-retries/* β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: can-retry-from-afterEach.retries.mochaEvents.cy.js (1 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“(Attempt 7 of 10) test 1 + βœ“(Attempt 8 of 10) test 1 + βœ“(Attempt 9 of 10) test 1 + βœ“(Attempt 10 of 10) test 1 + βœ– test 1 + βœ“ test 2 + βœ“ test 3 + + suite 2 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“(Attempt 7 of 10) test 1 + βœ“(Attempt 8 of 10) test 1 + βœ“(Attempt 9 of 10) test 1 + βœ“(Attempt 10 of 10) test 1 + βœ– test 1 + + suite 3 + βœ“ test 1 + + + 3 passing + 2 failing + + 1) suite 1 + test 1: + + [object Object] + Error + [stack trace lines] + + 2) suite 2 + test 1: + + [object Object] + Error + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 5 β”‚ + β”‚ Passing: 3 β”‚ + β”‚ Failing: 2 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: can-retry-from-afterEach.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: can-retry-from-beforeEach.retries.mochaEvents.cy.js (2 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“(Attempt 7 of 10) test 1 + βœ“(Attempt 8 of 10) test 1 + βœ“(Attempt 9 of 10) test 1 + βœ“(Attempt 10 of 10) test 1 + βœ– test 1 + + + 0 passing + 1 failing + + 1) suite 1 + test 1: + + [object Object] + Error + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: can-retry-from-beforeEach.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: cant-retry-from-before.retries.mochaEvents.cy.js (3 of 8) + + + suite 1 + βœ– "before all" hook for "test 1" (NaNms) + + + 0 passing + 1 failing + + 1) suite 1 + "before all" hook for "test 1": + Error: Because this error occurred during a \`before all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: cant-retry-from-before.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: does-not-serialize-dom-error.cy.js (4 of 8) + + + βœ–(Attempt 1 of 10) visits + βœ–(Attempt 2 of 10) visits + βœ–(Attempt 3 of 10) visits + βœ–(Attempt 4 of 10) visits + βœ–(Attempt 5 of 10) visits + βœ–(Attempt 6 of 10) visits + βœ–(Attempt 7 of 10) visits + βœ–(Attempt 8 of 10) visits + βœ–(Attempt 9 of 10) visits + βœ–(Attempt 10 of 10) visits + βœ– visits + + 0 passing + 1 failing + + 1) visits: + AssertionError: Timed out retrying after 200ms: expected '' not to be 'visible' + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: does-not-serialize-dom-error.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: simple-fail.retries.mochaEvents.cy.js (5 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“(Attempt 7 of 10) test 1 + βœ“(Attempt 8 of 10) test 1 + βœ“(Attempt 9 of 10) test 1 + βœ“(Attempt 10 of 10) test 1 + βœ– test 1 + + + 0 passing + 1 failing + + 1) suite 1 + test 1: + [object Object] +Error: test 1 + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: simple-fail.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: test-retry-with-hooks.retries.mochaEvents.cy.js (6 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ“(Attempt 4 of 10) test 1 + βœ“(Attempt 5 of 10) test 1 + βœ“(Attempt 6 of 10) test 1 + βœ“(Attempt 7 of 10) test 1 + βœ“(Attempt 8 of 10) test 1 + βœ“(Attempt 9 of 10) test 1 + βœ“(Attempt 10 of 10) test 1 + βœ– test 1 + + + 0 passing + 1 failing + + 1) suite 1 + test 1: + [object Object] +Error: test 1 + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: test-retry-with-hooks.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: test-retry-with-only.retries.mochaEvents.cy.js (7 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 2 + βœ“(Attempt 2 of 10) test 2 + βœ“(Attempt 3 of 10) test 2 + βœ“(Attempt 4 of 10) test 2 + βœ“(Attempt 5 of 10) test 2 + βœ“(Attempt 6 of 10) test 2 + βœ“(Attempt 7 of 10) test 2 + βœ“(Attempt 8 of 10) test 2 + βœ“(Attempt 9 of 10) test 2 + βœ“(Attempt 10 of 10) test 2 + βœ– test 2 + + + 0 passing + 1 failing + + 1) suite 1 + test 2: + [object Object] +Error: test 2 + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: test-retry-with-only.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: three-tests-with-retry.retries.mochaEvents.cy.js (8 of 8) + + + suite 1 + βœ“ test 1 + βœ–(Attempt 1 of 10) test 2 + βœ–(Attempt 2 of 10) test 2 + βœ“(Attempt 3 of 10) test 2 + βœ“(Attempt 4 of 10) test 2 + βœ“(Attempt 5 of 10) test 2 + βœ“(Attempt 6 of 10) test 2 + βœ“(Attempt 7 of 10) test 2 + βœ“(Attempt 8 of 10) test 2 + βœ“(Attempt 9 of 10) test 2 + βœ“(Attempt 10 of 10) test 2 + βœ– test 2 + βœ“ test 3 + + + 2 passing + 1 failing + + 1) suite 1 + test 2: + + [object Object] + Error + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 3 β”‚ + β”‚ Passing: 2 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: three-tests-with-retry.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– can-retry-from-afterEach.retries.mo XX:XX 5 3 2 - - β”‚ + β”‚ chaEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– can-retry-from-beforeEach.retries.m XX:XX 1 - 1 - - β”‚ + β”‚ ochaEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– cant-retry-from-before.retries.moch XX:XX 1 - 1 - - β”‚ + β”‚ aEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– does-not-serialize-dom-error.cy.js XX:XX 1 - 1 - - β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– simple-fail.retries.mochaEvents.cy. XX:XX 1 - 1 - - β”‚ + β”‚ js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– test-retry-with-hooks.retries.mocha XX:XX 1 - 1 - - β”‚ + β”‚ Events.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– test-retry-with-only.retries.mochaE XX:XX 1 - 1 - - β”‚ + β”‚ vents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– three-tests-with-retry.retries.moch XX:XX 3 2 1 - - β”‚ + β”‚ aEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 8 of 8 failed (100%) XX:XX 14 5 9 - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / exercises experimental-retries suite to verify console reporter and final status code are correct (stopIfAnyPassed=true).'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 8 found (can-retry-from-afterEach.retries.mochaEvents.cy.js, can-retry-from-before β”‚ + β”‚ Each.retries.mochaEvents.cy.js, cant-retry-from-before.retries.mochaEvents.cy.js, β”‚ + β”‚ does-not-serialize-dom-error.cy.js, simple-fail.retries.mochaEvents.cy.js, test-re β”‚ + β”‚ try-with-h...) β”‚ + β”‚ Searched: cypress/e2e/runner/experimental-retries/* β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: can-retry-from-afterEach.retries.mochaEvents.cy.js (1 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ– test 1 + βœ“ test 2 + βœ“ test 3 + + suite 2 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ“(Attempt 3 of 10) test 1 + βœ– test 1 + + suite 3 + βœ“ test 1 + + + 3 passing + 2 failing + + 1) suite 1 + test 1: + + [object Object] + Error + [stack trace lines] + + 2) suite 2 + test 1: + + [object Object] + Error + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 5 β”‚ + β”‚ Passing: 3 β”‚ + β”‚ Failing: 2 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: can-retry-from-afterEach.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: can-retry-from-beforeEach.retries.mochaEvents.cy.js (2 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ– test 1 + + + 0 passing + 1 failing + + 1) suite 1 + test 1: + + [object Object] + Error + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: can-retry-from-beforeEach.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: cant-retry-from-before.retries.mochaEvents.cy.js (3 of 8) + + + suite 1 + βœ– "before all" hook for "test 1" (NaNms) + + + 0 passing + 1 failing + + 1) suite 1 + "before all" hook for "test 1": + Error: Because this error occurred during a \`before all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: cant-retry-from-before.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: does-not-serialize-dom-error.cy.js (4 of 8) + + + βœ–(Attempt 1 of 10) visits + βœ–(Attempt 2 of 10) visits + βœ–(Attempt 3 of 10) visits + βœ–(Attempt 4 of 10) visits + βœ–(Attempt 5 of 10) visits + βœ–(Attempt 6 of 10) visits + βœ–(Attempt 7 of 10) visits + βœ–(Attempt 8 of 10) visits + βœ–(Attempt 9 of 10) visits + βœ–(Attempt 10 of 10) visits + βœ– visits + + 0 passing + 1 failing + + 1) visits: + AssertionError: Timed out retrying after 200ms: expected '' not to be 'visible' + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: does-not-serialize-dom-error.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: simple-fail.retries.mochaEvents.cy.js (5 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ– test 1 + + + 0 passing + 1 failing + + 1) suite 1 + test 1: + [object Object] +Error: test 1 + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: simple-fail.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: test-retry-with-hooks.retries.mochaEvents.cy.js (6 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ“(Attempt 2 of 10) test 1 + βœ– test 1 + + + 0 passing + 1 failing + + 1) suite 1 + test 1: + [object Object] +Error: test 1 + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: test-retry-with-hooks.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: test-retry-with-only.retries.mochaEvents.cy.js (7 of 8) + + + suite 1 + βœ–(Attempt 1 of 10) test 2 + βœ“(Attempt 2 of 10) test 2 + βœ– test 2 + + + 0 passing + 1 failing + + 1) suite 1 + test 2: + [object Object] +Error: test 2 + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: test-retry-with-only.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: three-tests-with-retry.retries.mochaEvents.cy.js (8 of 8) + + + suite 1 + βœ“ test 1 + βœ–(Attempt 1 of 10) test 2 + βœ–(Attempt 2 of 10) test 2 + βœ“(Attempt 3 of 10) test 2 + βœ– test 2 + βœ“ test 3 + + + 2 passing + 1 failing + + 1) suite 1 + test 2: + + [object Object] + Error + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 3 β”‚ + β”‚ Passing: 2 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: three-tests-with-retry.retries.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– can-retry-from-afterEach.retries.mo XX:XX 5 3 2 - - β”‚ + β”‚ chaEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– can-retry-from-beforeEach.retries.m XX:XX 1 - 1 - - β”‚ + β”‚ ochaEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– cant-retry-from-before.retries.moch XX:XX 1 - 1 - - β”‚ + β”‚ aEvents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– does-not-serialize-dom-error.cy.js XX:XX 1 - 1 - - β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– simple-fail.retries.mochaEvents.cy. XX:XX 1 - 1 - - β”‚ + β”‚ js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– test-retry-with-hooks.retries.mocha XX:XX 1 - 1 - - β”‚ + β”‚ Events.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– test-retry-with-only.retries.mochaE XX:XX 1 - 1 - - β”‚ + β”‚ vents.cy.js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– three-tests-with-retry.retries.moch XX:XX 3 2 1 - - β”‚ + β”‚ aEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 8 of 8 failed (100%) XX:XX 14 5 9 - - + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / exercises experimental-retries hook failures to verify console reporter and final status code are correct.'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 4 found (fail-with-afterEach.mochaEvents.cy.js, fail-with-beforeEach.mochaEvents.c β”‚ + β”‚ y.js, fail-with-after.mochaEvents.cy.js, fail-with-before.mochaEvents.cy.js) β”‚ + β”‚ Searched: cypress/e2e/runner/fail-with-afterEach.mochaEvents.cy.js, cypress/e2e/runner/fail- β”‚ + β”‚ with-beforeEach.mochaEvents.cy.js, cypress/e2e/runner/fail-with-after.mochaEvents. β”‚ + β”‚ cy.js, cypress/e2e/runner/fail-with-before.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-afterEach.mochaEvents.cy.js (1 of 4) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ–(Attempt 3 of 10) test 1 + βœ–(Attempt 4 of 10) test 1 + βœ–(Attempt 5 of 10) test 1 + βœ–(Attempt 6 of 10) test 1 + βœ–(Attempt 7 of 10) test 1 + βœ–(Attempt 8 of 10) test 1 + βœ–(Attempt 9 of 10) test 1 + βœ–(Attempt 10 of 10) "after each" hook for "test 1" + βœ– "after each" hook for "test 1" + + + 0 passing + 1 failing + + 1) suite 1 + "after each" hook for "test 1": + Error: After each error + +Because this error occurred during a \`after each\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 1 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-afterEach.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-beforeEach.mochaEvents.cy.js (2 of 4) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ–(Attempt 3 of 10) test 1 + βœ–(Attempt 4 of 10) test 1 + βœ–(Attempt 5 of 10) test 1 + βœ–(Attempt 6 of 10) test 1 + βœ–(Attempt 7 of 10) test 1 + βœ–(Attempt 8 of 10) test 1 + βœ–(Attempt 9 of 10) test 1 + βœ–(Attempt 10 of 10) "before each" hook for "test 1" + βœ– "before each" hook for "test 1" + + + 0 passing + 1 failing + + 1) suite 1 + "before each" hook for "test 1": + Error: beforeEach + +Because this error occurred during a \`before each\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 1 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-beforeEach.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-after.mochaEvents.cy.js (3 of 4) + + + suite 1 + βœ“ test 1 + βœ– "after all" hook for "test 2" (NaNms) + + + 1 passing + 1 failing + + 1) suite 1 + "after all" hook for "test 2": + Error: Error! + +Because this error occurred during a \`after all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-after.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-before.mochaEvents.cy.js (4 of 4) + + + suite 1 + βœ– "before all" hook for "test 1" (NaNms) + + + 0 passing + 1 failing + + 1) suite 1 + "before all" hook for "test 1": + Error: before + +Because this error occurred during a \`before all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-before.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– fail-with-afterEach.mochaEvents.cy. XX:XX 2 - 1 - 1 β”‚ + β”‚ js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-beforeEach.mochaEvents.cy XX:XX 2 - 1 - 1 β”‚ + β”‚ .js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-after.mochaEvents.cy.js XX:XX 2 1 1 - - β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-before.mochaEvents.cy.js XX:XX 1 - 1 - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 4 of 4 failed (100%) XX:XX 7 1 4 - 2 + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / exercises experimental-retries hook failures to verify console reporter and final status code are correct (stopIfAnyPassed=true).'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 4 found (fail-with-afterEach.mochaEvents.cy.js, fail-with-beforeEach.mochaEvents.c β”‚ + β”‚ y.js, fail-with-after.mochaEvents.cy.js, fail-with-before.mochaEvents.cy.js) β”‚ + β”‚ Searched: cypress/e2e/runner/fail-with-afterEach.mochaEvents.cy.js, cypress/e2e/runner/fail- β”‚ + β”‚ with-beforeEach.mochaEvents.cy.js, cypress/e2e/runner/fail-with-after.mochaEvents. β”‚ + β”‚ cy.js, cypress/e2e/runner/fail-with-before.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-afterEach.mochaEvents.cy.js (1 of 4) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ–(Attempt 3 of 10) test 1 + βœ–(Attempt 4 of 10) test 1 + βœ–(Attempt 5 of 10) test 1 + βœ–(Attempt 6 of 10) test 1 + βœ–(Attempt 7 of 10) test 1 + βœ–(Attempt 8 of 10) test 1 + βœ–(Attempt 9 of 10) test 1 + βœ–(Attempt 10 of 10) "after each" hook for "test 1" + βœ– "after each" hook for "test 1" + + + 0 passing + 1 failing + + 1) suite 1 + "after each" hook for "test 1": + Error: After each error + +Because this error occurred during a \`after each\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 1 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-afterEach.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-beforeEach.mochaEvents.cy.js (2 of 4) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ–(Attempt 3 of 10) test 1 + βœ–(Attempt 4 of 10) test 1 + βœ–(Attempt 5 of 10) test 1 + βœ–(Attempt 6 of 10) test 1 + βœ–(Attempt 7 of 10) test 1 + βœ–(Attempt 8 of 10) test 1 + βœ–(Attempt 9 of 10) test 1 + βœ–(Attempt 10 of 10) "before each" hook for "test 1" + βœ– "before each" hook for "test 1" + + + 0 passing + 1 failing + + 1) suite 1 + "before each" hook for "test 1": + Error: beforeEach + +Because this error occurred during a \`before each\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 1 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-beforeEach.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-after.mochaEvents.cy.js (3 of 4) + + + suite 1 + βœ“ test 1 + βœ– "after all" hook for "test 2" (NaNms) + + + 1 passing + 1 failing + + 1) suite 1 + "after all" hook for "test 2": + Error: Error! + +Because this error occurred during a \`after all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-after.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-before.mochaEvents.cy.js (4 of 4) + + + suite 1 + βœ– "before all" hook for "test 1" (NaNms) + + + 0 passing + 1 failing + + 1) suite 1 + "before all" hook for "test 1": + Error: before + +Because this error occurred during a \`before all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-before.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– fail-with-afterEach.mochaEvents.cy. XX:XX 2 - 1 - 1 β”‚ + β”‚ js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-beforeEach.mochaEvents.cy XX:XX 2 - 1 - 1 β”‚ + β”‚ .js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-after.mochaEvents.cy.js XX:XX 2 1 1 - - β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-before.mochaEvents.cy.js XX:XX 1 - 1 - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 4 of 4 failed (100%) XX:XX 7 1 4 - 2 + + +` + +exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / exercises experimental-retries hook failures to verify console reporter and final status code are correct.'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 4 found (fail-with-afterEach.mochaEvents.cy.js, fail-with-beforeEach.mochaEvents.c β”‚ + β”‚ y.js, fail-with-after.mochaEvents.cy.js, fail-with-before.mochaEvents.cy.js) β”‚ + β”‚ Searched: cypress/e2e/runner/fail-with-afterEach.mochaEvents.cy.js, cypress/e2e/runner/fail- β”‚ + β”‚ with-beforeEach.mochaEvents.cy.js, cypress/e2e/runner/fail-with-after.mochaEvents. β”‚ + β”‚ cy.js, cypress/e2e/runner/fail-with-before.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-afterEach.mochaEvents.cy.js (1 of 4) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ–(Attempt 3 of 10) test 1 + βœ–(Attempt 4 of 10) test 1 + βœ–(Attempt 5 of 10) test 1 + βœ–(Attempt 6 of 10) "after each" hook for "test 1" + βœ– "after each" hook for "test 1" + + + 0 passing + 1 failing + + 1) suite 1 + "after each" hook for "test 1": + Error: After each error + +Because this error occurred during a \`after each\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 1 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-afterEach.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-beforeEach.mochaEvents.cy.js (2 of 4) + + + suite 1 + βœ–(Attempt 1 of 10) test 1 + βœ–(Attempt 2 of 10) test 1 + βœ–(Attempt 3 of 10) test 1 + βœ–(Attempt 4 of 10) test 1 + βœ–(Attempt 5 of 10) test 1 + βœ–(Attempt 6 of 10) "before each" hook for "test 1" + βœ– "before each" hook for "test 1" + + + 0 passing + 1 failing + + 1) suite 1 + "before each" hook for "test 1": + Error: beforeEach + +Because this error occurred during a \`before each\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 1 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-beforeEach.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-after.mochaEvents.cy.js (3 of 4) + + + suite 1 + βœ“ test 1 + βœ– "after all" hook for "test 2" (NaNms) + + + 1 passing + 1 failing + + 1) suite 1 + "after all" hook for "test 2": + Error: Error! + +Because this error occurred during a \`after all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-after.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: fail-with-before.mochaEvents.cy.js (4 of 4) + + + suite 1 + βœ– "before all" hook for "test 1" (NaNms) + + + 0 passing + 1 failing + + 1) suite 1 + "before all" hook for "test 1": + Error: before + +Because this error occurred during a \`before all\` hook we are skipping the remaining tests in the current suite: \`suite 1\` + +Although you have test retries enabled, we do not retry tests when \`before all\` or \`after all\` hooks fail + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: fail-with-before.mochaEvents.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– fail-with-afterEach.mochaEvents.cy. XX:XX 2 - 1 - 1 β”‚ + β”‚ js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-beforeEach.mochaEvents.cy XX:XX 2 - 1 - 1 β”‚ + β”‚ .js β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-after.mochaEvents.cy.js XX:XX 2 1 1 - - β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ βœ– fail-with-before.mochaEvents.cy.js XX:XX 1 - 1 - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 4 of 4 failed (100%) XX:XX 7 1 4 - 2 + + +` diff --git a/system-tests/__snapshots__/protocol_spec.js b/system-tests/__snapshots__/protocol_spec.js index cbe6f42508f0..6836bee3b7e4 100644 --- a/system-tests/__snapshots__/protocol_spec.js +++ b/system-tests/__snapshots__/protocol_spec.js @@ -610,6 +610,11 @@ exports['e2e events'] = ` "preAfterTest": [ { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -681,6 +686,11 @@ exports['e2e events'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -763,6 +773,11 @@ exports['e2e events'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -845,6 +860,11 @@ exports['e2e events'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -927,6 +947,11 @@ exports['e2e events'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1009,6 +1034,11 @@ exports['e2e events'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1091,6 +1121,11 @@ exports['e2e events'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1173,6 +1208,11 @@ exports['e2e events'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1255,6 +1295,11 @@ exports['e2e events'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1338,6 +1383,11 @@ exports['e2e events'] = ` ], "afterTest": [ { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1405,6 +1455,11 @@ exports['e2e events'] = ` "_slow": 10000 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1483,6 +1538,11 @@ exports['e2e events'] = ` "_slow": 10000 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1561,6 +1621,11 @@ exports['e2e events'] = ` "_slow": 10000 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1639,6 +1704,11 @@ exports['e2e events'] = ` "_slow": 10000 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1717,6 +1787,11 @@ exports['e2e events'] = ` "_slow": 10000 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1795,6 +1870,11 @@ exports['e2e events'] = ` "_slow": 10000 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1873,6 +1953,11 @@ exports['e2e events'] = ` "_slow": 10000 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { @@ -1951,6 +2036,11 @@ exports['e2e events'] = ` "_slow": 10000 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [ { diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/can-retry-from-afterEach.retries.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/can-retry-from-afterEach.retries.mochaEvents.cy.js new file mode 100644 index 000000000000..d9cf2d13fda7 --- /dev/null +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/can-retry-from-afterEach.retries.mochaEvents.cy.js @@ -0,0 +1,37 @@ +let i = 0 + +afterEach(() => { + if (i === 0) { + i++ + throw new Error('') + } +}) + +describe('suite 1', () => { + before(() => {}) + beforeEach(() => {}) + beforeEach(() => {}) + afterEach(() => {}) + after(() => {}) + + it('test 1', () => {}) + it('test 2', () => {}) + it('test 3', () => {}) +}) + +describe('suite 2', () => { + let j = 0 + + afterEach(() => { + if (j === 0 || j === 1) { + j++ + throw new Error('') + } + }) + + it('test 1', () => {}) +}) + +describe('suite 3', () => { + it('test 1', () => {}) +}) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/can-retry-from-beforeEach.retries.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/can-retry-from-beforeEach.retries.mochaEvents.cy.js new file mode 100644 index 000000000000..bc6ec2becf2f --- /dev/null +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/can-retry-from-beforeEach.retries.mochaEvents.cy.js @@ -0,0 +1,20 @@ +describe('suite 1', () => { + before(() => {}) + beforeEach(() => {}) + + let i = 0 + + beforeEach(() => { + if (i === 0) { + i++ + throw new Error('') + } + }) + + beforeEach(() => {}) + + afterEach(() => {}) + after(() => {}) + + it('test 1', () => {}) +}) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/cant-retry-from-before.retries.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/cant-retry-from-before.retries.mochaEvents.cy.js new file mode 100644 index 000000000000..2f6ff5461979 --- /dev/null +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/cant-retry-from-before.retries.mochaEvents.cy.js @@ -0,0 +1,17 @@ +describe('suite 1', () => { + let i = 0 + + before(() => { + if (i === 0) { + i++ + throw new Error('') + } + }) + + beforeEach(() => {}) + beforeEach(() => {}) + afterEach(() => {}) + afterEach(() => {}) + after(() => {}) + it('test 1', () => {}) +}) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/does-not-serialize-dom-error.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/does-not-serialize-dom-error.cy.js new file mode 100644 index 000000000000..7f3d58229771 --- /dev/null +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/does-not-serialize-dom-error.cy.js @@ -0,0 +1,4 @@ +it('visits', { defaultCommandTimeout: 200 }, () => { + cy.visit('cypress/fixtures/dom.html') + cy.get('#button').should('not.be.visible') +}) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/simple-fail.retries.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/simple-fail.retries.mochaEvents.cy.js new file mode 100644 index 000000000000..3d3fba9792fb --- /dev/null +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/simple-fail.retries.mochaEvents.cy.js @@ -0,0 +1,10 @@ +describe('suite 1', () => { + let i = 0 + + it('test 1', () => { + if (i === 0) { + i++ + throw new Error('test 1') + } + }) +}) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/test-retry-with-hooks.retries.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/test-retry-with-hooks.retries.mochaEvents.cy.js new file mode 100644 index 000000000000..f804971f91ee --- /dev/null +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/test-retry-with-hooks.retries.mochaEvents.cy.js @@ -0,0 +1,15 @@ +describe('suite 1', () => { + before(() => {}) + beforeEach(() => {}) + after(() => {}) + afterEach(() => {}) + + let i = 0 + + it('test 1', () => { + if (i === 0) { + i++ + throw new Error('test 1') + } + }) +}) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/test-retry-with-only.retries.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/test-retry-with-only.retries.mochaEvents.cy.js new file mode 100644 index 000000000000..5903f03e5140 --- /dev/null +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/test-retry-with-only.retries.mochaEvents.cy.js @@ -0,0 +1,20 @@ +describe('suite 1', () => { + before(() => {}) + beforeEach(() => {}) + after(() => {}) + afterEach(() => {}) + + it('test 1', () => {}) + + let i = 0 + + // eslint-disable-next-line mocha/no-exclusive-tests + it.only('test 2', () => { + if (i === 0) { + i++ + throw new Error('test 2') + } + }) + + it('test 3', () => {}) +}) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/three-tests-with-retry.retries.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/three-tests-with-retry.retries.mochaEvents.cy.js new file mode 100644 index 000000000000..ead03d7d9256 --- /dev/null +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/experimental-retries/three-tests-with-retry.retries.mochaEvents.cy.js @@ -0,0 +1,19 @@ +describe('suite 1', () => { + before(() => {}) + beforeEach(() => {}) + afterEach(() => {}) + after(() => {}) + + it('test 1', () => {}) + + let i = 0 + + it('test 2', () => { + if (i <= 1) { + i++ + throw new Error('') + } + }) + + it('test 3', () => {}) +}) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/fail-with-afterEach.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/fail-with-afterEach.mochaEvents.cy.js index 6800a6f8b18d..406218b6b61e 100644 --- a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/fail-with-afterEach.mochaEvents.cy.js +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/fail-with-afterEach.mochaEvents.cy.js @@ -4,4 +4,5 @@ describe('suite 1', () => { }) it('test 1', () => {}) + it('test 2', () => {}) }) diff --git a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/fail-with-beforeEach.mochaEvents.cy.js b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/fail-with-beforeEach.mochaEvents.cy.js index 9851813199dd..a041c8311687 100644 --- a/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/fail-with-beforeEach.mochaEvents.cy.js +++ b/system-tests/project-fixtures/runner-specs/cypress/e2e/runner/fail-with-beforeEach.mochaEvents.cy.js @@ -4,4 +4,5 @@ describe('suite 1', () => { }) it('test 1', () => {}) + it('test 2', () => {}) }) diff --git a/system-tests/projects/detect-flake-and-pass-on-threshold/cypress.config.js b/system-tests/projects/detect-flake-and-pass-on-threshold/cypress.config.js new file mode 100644 index 000000000000..46882728e397 --- /dev/null +++ b/system-tests/projects/detect-flake-and-pass-on-threshold/cypress.config.js @@ -0,0 +1,15 @@ +module.exports = { + numTestsKeptInMemory: 0, + e2e: { + supportFile: false, + retries: { + openMode: true, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 9, + passesRequired: 5, + }, + }, + }, +} diff --git a/system-tests/projects/detect-flake-and-pass-on-threshold/package.json b/system-tests/projects/detect-flake-and-pass-on-threshold/package.json new file mode 100644 index 000000000000..f9ba6239dbc5 --- /dev/null +++ b/system-tests/projects/detect-flake-and-pass-on-threshold/package.json @@ -0,0 +1,3 @@ +{ + "projectFixtureDirectory": "runner-specs" +} \ No newline at end of file diff --git a/system-tests/projects/detect-flake-but-always-fail-stop-any-passed/cypress.config.js b/system-tests/projects/detect-flake-but-always-fail-stop-any-passed/cypress.config.js new file mode 100644 index 000000000000..5886802aa9d4 --- /dev/null +++ b/system-tests/projects/detect-flake-but-always-fail-stop-any-passed/cypress.config.js @@ -0,0 +1,15 @@ +module.exports = { + numTestsKeptInMemory: 0, + e2e: { + supportFile: false, + retries: { + openMode: true, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: true, + }, + }, + }, +} diff --git a/system-tests/projects/detect-flake-but-always-fail-stop-any-passed/package.json b/system-tests/projects/detect-flake-but-always-fail-stop-any-passed/package.json new file mode 100644 index 000000000000..f9ba6239dbc5 --- /dev/null +++ b/system-tests/projects/detect-flake-but-always-fail-stop-any-passed/package.json @@ -0,0 +1,3 @@ +{ + "projectFixtureDirectory": "runner-specs" +} \ No newline at end of file diff --git a/system-tests/projects/detect-flake-but-always-fail/cypress.config.js b/system-tests/projects/detect-flake-but-always-fail/cypress.config.js new file mode 100644 index 000000000000..b9f7f8c7bf0f --- /dev/null +++ b/system-tests/projects/detect-flake-but-always-fail/cypress.config.js @@ -0,0 +1,15 @@ +module.exports = { + numTestsKeptInMemory: 0, + e2e: { + supportFile: false, + retries: { + openMode: true, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: false, + }, + }, + }, +} diff --git a/system-tests/projects/detect-flake-but-always-fail/package.json b/system-tests/projects/detect-flake-but-always-fail/package.json new file mode 100644 index 000000000000..f9ba6239dbc5 --- /dev/null +++ b/system-tests/projects/detect-flake-but-always-fail/package.json @@ -0,0 +1,3 @@ +{ + "projectFixtureDirectory": "runner-specs" +} \ No newline at end of file diff --git a/system-tests/projects/experimental-retries/cypress.config.js b/system-tests/projects/experimental-retries/cypress.config.js new file mode 100644 index 000000000000..2db5c69b464b --- /dev/null +++ b/system-tests/projects/experimental-retries/cypress.config.js @@ -0,0 +1,14 @@ +module.exports = { + e2e: { + supportFile: false, + setupNodeEvents (on, config) { + // in the case the tests needed to be debugged: + + // on('before:browser:launch', (browser, launchOptions) => { + // launchOptions.args.push('--auto-open-devtools-for-tabs') + + // return launchOptions + // }) + }, + }, +} diff --git a/system-tests/projects/experimental-retries/cypress/e2e/always-fails.cy.js b/system-tests/projects/experimental-retries/cypress/e2e/always-fails.cy.js new file mode 100644 index 000000000000..1728d87f56c8 --- /dev/null +++ b/system-tests/projects/experimental-retries/cypress/e2e/always-fails.cy.js @@ -0,0 +1,5 @@ +describe('always fails', () => { + it('always fails', function () { + expect(true).to.be.false + }) +}) diff --git a/system-tests/projects/experimental-retries/cypress/e2e/always-passes.cy.js b/system-tests/projects/experimental-retries/cypress/e2e/always-passes.cy.js new file mode 100644 index 000000000000..40154fb58d0a --- /dev/null +++ b/system-tests/projects/experimental-retries/cypress/e2e/always-passes.cy.js @@ -0,0 +1,5 @@ +describe('always passes', () => { + it('always passes', function () { + expect(true).to.be.true + }) +}) diff --git a/system-tests/projects/experimental-retries/cypress/e2e/deterministic-flaky.cy.js b/system-tests/projects/experimental-retries/cypress/e2e/deterministic-flaky.cy.js new file mode 100644 index 000000000000..99996e5ebc2f --- /dev/null +++ b/system-tests/projects/experimental-retries/cypress/e2e/deterministic-flaky.cy.js @@ -0,0 +1,15 @@ +describe('deterministic flaky test', () => { + it('deterministically runs pass/fail on this test', function () { + // this means the test WILL behave as + // first attempt (FAIL) + // second attempt (PASS) + // third attempt (FAIL) + // fourth attempt (PASS) + // fifth attempt (FAIL)... + if (this.test.currentRetry() % 2) { + expect(true).to.be.true + } else { + expect(true).to.be.false + } + }) +}) diff --git a/system-tests/test/experimental_retries.spec.ts b/system-tests/test/experimental_retries.spec.ts new file mode 100644 index 000000000000..d4291fdd46f4 --- /dev/null +++ b/system-tests/test/experimental_retries.spec.ts @@ -0,0 +1,325 @@ +import systemTests from '../lib/system-tests' + +describe('e2e retries.experimentalStrategy', () => { + systemTests.setup() + + describe('experimentalBurnIn=false', () => { + describe('"detect-flake-and-pass-on-threshold"', () => { + describe('passes', () => { + systemTests.it('only runs the first attempt of the test if the test passes', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'always-passes.cy.js', + snapshot: true, + expectedExitCode: 0, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 10, + passesRequired: 3, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'deterministic-flaky.cy.js', + snapshot: true, + expectedExitCode: 0, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 9, + passesRequired: 3, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied (max attempts)', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'deterministic-flaky.cy.js', + snapshot: true, + expectedExitCode: 0, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 9, + passesRequired: 5, + }, + }, + screenshotOnRunFailure: false, + }, + }) + }) + + describe('fails', () => { + systemTests.it('short-circuits if the needed "passesRequired" cannot be satisfied by the remaining attempts available', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'deterministic-flaky.cy.js', + snapshot: true, + expectedExitCode: 1, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 5, + passesRequired: 5, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied (max attempts possible)', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'deterministic-flaky.cy.js', + snapshot: true, + expectedExitCode: 1, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 6, + passesRequired: 4, + }, + }, + screenshotOnRunFailure: false, + }, + }) + }) + + /** + * exercised additionally in cy-in-cy tests to verify correct mocha snapshots and cypress reporter output: + * packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts + * packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts + */ + systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct.', { + project: 'detect-flake-and-pass-on-threshold', + browser: '!webkit', + spec: 'runner/experimental-retries/*', + snapshot: true, + expectedExitCode: 2, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 9, + passesRequired: 5, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct.', { + project: 'detect-flake-and-pass-on-threshold', + browser: '!webkit', + spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + snapshot: true, + expectedExitCode: 4, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 9, + passesRequired: 5, + }, + }, + screenshotOnRunFailure: false, + }, + }) + }) + + describe('"detect-flake-but-always-fail"', () => { + describe('passes', () => { + systemTests.it('only runs the first attempt of the test if the test passes', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'always-passes.cy.js', + snapshot: true, + expectedExitCode: 0, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: false, + }, + }, + screenshotOnRunFailure: false, + }, + }) + }) + + describe('fails', () => { + systemTests.it('runs all attempts of the test if the first attempt fails and "stopIfAnyPassed=false"', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'deterministic-flaky.cy.js', + snapshot: true, + expectedExitCode: 1, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: false, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('runs attempts of the test if the first attempt fails until the test passes if "stopIfAnyPassed=true"', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'deterministic-flaky.cy.js', + snapshot: true, + expectedExitCode: 1, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: true, + }, + }, + screenshotOnRunFailure: false, + }, + }) + }) + + /** + * exercised additionally in cy-in-cy tests to verify correct mocha snapshots and cypress reporter output: + * packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts + * packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts + */ + systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct.', { + project: 'detect-flake-but-always-fail', + browser: '!webkit', + spec: 'runner/experimental-retries/*', + snapshot: true, + // FIXME: this should be 8 + expectedExitCode: 9, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: false, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct.', { + project: 'detect-flake-but-always-fail', + browser: '!webkit', + spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + snapshot: true, + expectedExitCode: 4, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: false, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct (stopIfAnyPassed=true).', { + project: 'detect-flake-but-always-fail-stop-any-passed', + browser: '!webkit', + spec: 'runner/experimental-retries/*', + snapshot: true, + // FIXME: this should be 8 + expectedExitCode: 9, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: true, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct (stopIfAnyPassed=true).', { + project: 'detect-flake-but-always-fail', + browser: '!webkit', + spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + snapshot: true, + expectedExitCode: 4, + config: { + experimentalBurnIn: false, + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: true, + }, + }, + screenshotOnRunFailure: false, + }, + }) + }) + }) +}) From 5e8deb73457d0f658a6c9784050c2c90e370268b Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Thu, 28 Sep 2023 11:51:33 -0400 Subject: [PATCH 09/40] Revert "feat: add burnIn Configuration option (currently a no-op) (#27377)" This reverts commit c42844307946f438a7369b381a702f121ff17657. --- cli/types/cypress.d.ts | 12 - .../config/__snapshots__/index.spec.ts.js | 3 - .../__snapshots__/validation.spec.ts.js | 220 ++---------------- packages/config/src/options.ts | 5 - packages/config/src/validation.ts | 22 -- packages/config/test/project/utils.spec.ts | 2 - packages/config/test/validation.spec.ts | 115 --------- .../frontend-shared/src/locales/en-US.json | 4 - 8 files changed, 25 insertions(+), 358 deletions(-) diff --git a/cli/types/cypress.d.ts b/cli/types/cypress.d.ts index db17c6bda79c..c81de847a6a9 100644 --- a/cli/types/cypress.d.ts +++ b/cli/types/cypress.d.ts @@ -3082,18 +3082,6 @@ declare namespace Cypress { * @default 'top' */ scrollBehavior: scrollBehaviorOptions - /** - * Enables flake detection on risky passing tests, such as for new or modified tests or tests which failed or flaked on previous runs. - * Note: This feature is only available for Team, Business, and Enterprise plans on Cypress Cloud. - * Furthermore, only Business and Enterprise plans can override the `experimentalBurnIn.default` or `experimentalBurnIn.flaky` settings. - * TODO: make sure experimental link is available in documentation before experimentalBurnIn release! - * @see https://on.cypress.io/experiments#Experimental-Burn-In - * @default false - */ - experimentalBurnIn: boolean | { - default: number - flaky: number - }, /** * Indicates whether Cypress should allow CSP header directives from the application under test. * - When this option is set to `false`, Cypress will strip the entire CSP header. diff --git a/packages/config/__snapshots__/index.spec.ts.js b/packages/config/__snapshots__/index.spec.ts.js index a66b73849bd2..0f5316b0bc39 100644 --- a/packages/config/__snapshots__/index.spec.ts.js +++ b/packages/config/__snapshots__/index.spec.ts.js @@ -20,7 +20,6 @@ exports['config/src/index .getDefaultValues returns list of public config keys 1 'animationDistanceThreshold': 5, 'baseUrl': null, 'blockHosts': null, - 'experimentalBurnIn': false, 'chromeWebSecurity': true, 'clientCertificates': [], 'component': { @@ -111,7 +110,6 @@ exports['config/src/index .getDefaultValues returns list of public config keys f 'animationDistanceThreshold': 5, 'baseUrl': null, 'blockHosts': null, - 'experimentalBurnIn': false, 'chromeWebSecurity': true, 'clientCertificates': [], 'component': { @@ -203,7 +201,6 @@ exports['config/src/index .getPublicConfigKeys returns list of public config key 'arch', 'baseUrl', 'blockHosts', - 'experimentalBurnIn', 'chromeWebSecurity', 'clientCertificates', 'component', diff --git a/packages/config/__snapshots__/validation.spec.ts.js b/packages/config/__snapshots__/validation.spec.ts.js index 80ec71d78a30..210fc4785340 100644 --- a/packages/config/__snapshots__/validation.spec.ts.js +++ b/packages/config/__snapshots__/validation.spec.ts.js @@ -262,77 +262,6 @@ exports['invalid upper bound'] = { 'type': 'a valid CRF number between 1 & 51, 0 or false to disable compression, or true to use the default compression of 32', } -exports['missing key "flaky"'] = { - 'key': 'experimentalBurnIn', - 'value': { - 'default': 1, - }, - 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', -} - -exports['missing key "default"'] = { - 'key': 'experimentalBurnIn', - 'value': { - 'flaky': 1, - }, - 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', -} - -exports['keys cannot be zero key'] = { - 'key': 'experimentalBurnIn', - 'value': { - 'default': 0, - 'flaky': 0, - }, - 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', -} - -exports['keys cannot be zero'] = { - 'key': 'experimentalBurnIn', - 'value': { - 'default': 0, - 'flaky': 0, - }, - 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', -} - -exports['keys cannot be negative'] = { - 'key': 'experimentalBurnIn', - 'value': { - 'default': -3, - 'flaky': -40, - }, - 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', -} - -exports['keys cannot be floating point numbers'] = { - 'key': 'experimentalBurnIn', - 'value': { - 'default': 5.7, - 'flaky': 8.22, - }, - 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', -} - -exports['keys cannot be Infinity'] = { - 'key': 'experimentalBurnIn', - 'value': { - 'default': null, - 'flaky': null, - }, - 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', -} - -exports['extraneous keys'] = { - 'key': 'experimentalBurnIn', - 'value': { - 'default': 3, - 'flaky': 5, - 'notflaky': null, - }, - 'type': 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.', -} - exports['config/src/validation .isValidRetriesConfig experimental options fails with invalid strategy 1'] = { 'key': 'mockConfigKey', 'value': { @@ -341,88 +270,78 @@ exports['config/src/validation .isValidRetriesConfig experimental options fails 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with invalid strategy w/ other options 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with invalid strategy w/ other options (valid) 1'] = { 'key': 'mockConfigKey', 'value': { - 'runMode': 1, - 'openMode': 0, + 'runMode': true, + 'openMode': false, 'experimentalStrategy': 'bar', }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with maxRetries is negative 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: valid strategy w/ other invalid options with experiment 1'] = { 'key': 'mockConfigKey', 'value': { 'runMode': 1, 'openMode': 0, - 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', - 'experimentalOptions': { - 'maxRetries': -2, - }, + 'experimentalStrategy': 'detect-flake-but-always-fail', }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with maxRetries is 0 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is negative 1'] = { 'key': 'mockConfigKey', 'value': { - 'runMode': 1, - 'openMode': 0, - 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalStrategy': 'detect-flake-but-always-fail', 'experimentalOptions': { - 'maxRetries': 0, + 'maxRetries': -2, }, }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with maxRetries is floating 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is 0 1'] = { 'key': 'mockConfigKey', 'value': { - 'runMode': 1, - 'openMode': 0, - 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', + 'experimentalStrategy': 'detect-flake-but-always-fail', 'experimentalOptions': { - 'maxRetries': 3.5, + 'maxRetries': 0, }, }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is negative 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is floating 1'] = { 'key': 'mockConfigKey', 'value': { 'experimentalStrategy': 'detect-flake-but-always-fail', 'experimentalOptions': { - 'maxRetries': -2, + 'maxRetries': 3.5, }, }, 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is 0 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with experimentalStrategy is "detect-flake-but-always-fail" with only "maxRetries" in "experimentalOptions" 1'] = { 'key': 'mockConfigKey', 'value': { 'experimentalStrategy': 'detect-flake-but-always-fail', 'experimentalOptions': { - 'maxRetries': 0, + 'maxRetries': 4, }, }, 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail" maxRetries is floating 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: valid strategy w/ other invalid options with experiment 1'] = { 'key': 'mockConfigKey', 'value': { 'runMode': 1, 'openMode': 0, - 'experimentalStrategy': 'detect-flake-but-always-fail', - 'experimentalOptions': { - 'maxRetries': 3.5, - }, + 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', + 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: maxRetries is negative 1'] = { @@ -447,36 +366,23 @@ exports['config/src/validation .isValidRetriesConfig experimental options fails 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold" maxRetries is floating 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: maxRetries is floating 1'] = { 'key': 'mockConfigKey', 'value': { - 'runMode': 1, - 'openMode': 0, 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', 'experimentalOptions': { 'maxRetries': 3.5, }, }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', -} - -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: maxRetries is floating 1'] = { - 'key': 'mockConfigKey', - 'value': { - 'experimentalStrategy': 'detect-flake-but-always-fail', - 'experimentalOptions': { - 'maxRetries': 3.5, - }, - }, 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: maxRetries is floating 1'] = { +exports['config/src/validation .isValidRetriesConfig experimental options fails with experimentalStrategy is "detect-flake-and-pass-on-threshold" with only "maxRetries" in "experimentalOptions" 1'] = { 'key': 'mockConfigKey', 'value': { 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', 'experimentalOptions': { - 'maxRetries': 3.5, + 'maxRetries': 4, }, }, 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', @@ -576,30 +482,6 @@ exports['config/src/validation .isValidRetriesConfig experimental options fails 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail stopIfAnyPassed is a number (not coerced to a boolean 1'] = { - 'key': 'mockConfigKey', - 'value': { - 'experimentalStrategy': 'detect-flake-but-always-fail', - 'experimentalOptions': { - 'maxRetries': 2, - 'stopIfAnyPassed': 1, - }, - }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', -} - -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail stopIfAnyPassed is a number (0 and 1 work) 1'] = { - 'key': 'mockConfigKey', - 'value': { - 'experimentalStrategy': 'detect-flake-but-always-fail', - 'experimentalOptions': { - 'maxRetries': 2, - 'stopIfAnyPassed': 2, - }, - }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', -} - exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail stopIfAnyPassed is a number (0 and 1 do not work) 1'] = { 'key': 'mockConfigKey', 'value': { @@ -611,55 +493,3 @@ exports['config/src/validation .isValidRetriesConfig experimental options fails }, 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', } - -exports['config/src/validation .isValidRetriesConfig experimental options fails with invalid strategy w/ other options (valid) 1'] = { - 'key': 'mockConfigKey', - 'value': { - 'runMode': true, - 'openMode': false, - 'experimentalStrategy': 'bar', - }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', -} - -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-but-always-fail: valid strategy w/ other invalid options with experiment 1'] = { - 'key': 'mockConfigKey', - 'value': { - 'runMode': 1, - 'openMode': 0, - 'experimentalStrategy': 'detect-flake-but-always-fail', - }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', -} - -exports['config/src/validation .isValidRetriesConfig experimental options fails with detect-flake-and-pass-on-threshold: valid strategy w/ other invalid options with experiment 1'] = { - 'key': 'mockConfigKey', - 'value': { - 'runMode': 1, - 'openMode': 0, - 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', - }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', -} - -exports['config/src/validation .isValidRetriesConfig experimental options fails with experimentalStrategy is "detect-flake-but-always-fail" with only "maxRetries" in "experimentalOptions" 1'] = { - 'key': 'mockConfigKey', - 'value': { - 'experimentalStrategy': 'detect-flake-but-always-fail', - 'experimentalOptions': { - 'maxRetries': 4, - }, - }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', -} - -exports['config/src/validation .isValidRetriesConfig experimental options fails with experimentalStrategy is "detect-flake-and-pass-on-threshold" with only "maxRetries" in "experimentalOptions" 1'] = { - 'key': 'mockConfigKey', - 'value': { - 'experimentalStrategy': 'detect-flake-and-pass-on-threshold', - 'experimentalOptions': { - 'maxRetries': 4, - }, - }, - 'type': 'a positive number or null or an object with keys "openMode" and "runMode" with values of numbers, booleans, or nulls, or experimental configuration with key "experimentalStrategy" with value "detect-flake-but-always-fail" or "detect-flake-and-pass-on-threshold" and key "experimentalOptions" to provide a valid configuration for your selected strategy', -} diff --git a/packages/config/src/options.ts b/packages/config/src/options.ts index 3e3e42c22475..83563f0cbeb2 100644 --- a/packages/config/src/options.ts +++ b/packages/config/src/options.ts @@ -151,11 +151,6 @@ const driverConfigOptions: Array = [ validation: validate.isStringOrArrayOfStrings, overrideLevel: 'any', requireRestartOnChange: 'server', - }, { - // experimentalBurnIn config is only considered in run-mode while recording to cypress-cloud - name: 'experimentalBurnIn', - defaultValue: false, - validation: validate.isValidBurnInConfig, }, { name: 'chromeWebSecurity', defaultValue: true, diff --git a/packages/config/src/validation.ts b/packages/config/src/validation.ts index ae4756465a79..f139e2951f81 100644 --- a/packages/config/src/validation.ts +++ b/packages/config/src/validation.ts @@ -451,25 +451,3 @@ export function isNullOrArrayOfStrings (key: string, value: any): ErrResult | tr return errMsg(key, value, 'an array of strings or null') } - -export function isValidBurnInConfig (key: string, value: any): ErrResult | true { - // false can be provided to turn off test burn in - if (_.isBoolean(value)) { - return true - } - - if (_.isPlainObject(value)) { - const { default: defaultKey, flaky: flakyKey, ...extraneousKeys } = value - - if (defaultKey !== undefined && defaultKey !== undefined && _.isEmpty(extraneousKeys)) { - const isDefaultKeyValid = _.isInteger(defaultKey) && _.inRange(defaultKey, 1, Infinity) - const isFlakyKeyValid = _.isInteger(flakyKey) && _.inRange(flakyKey, 1, Infinity) - - if (isDefaultKeyValid && isFlakyKeyValid) { - return true - } - } - } - - return errMsg(key, value, 'an object with keys `default` and `flaky`. Keys `default` and `flaky` must be integers greater than 0.') -} diff --git a/packages/config/test/project/utils.spec.ts b/packages/config/test/project/utils.spec.ts index a7fbb1ac3531..1c789c6da332 100644 --- a/packages/config/test/project/utils.spec.ts +++ b/packages/config/test/project/utils.spec.ts @@ -1052,7 +1052,6 @@ describe('config/src/project/utils', () => { baseUrl: { value: null, from: 'default' }, blockHosts: { value: null, from: 'default' }, browsers: { value: [], from: 'default' }, - experimentalBurnIn: { value: false, from: 'default' }, chromeWebSecurity: { value: true, from: 'default' }, clientCertificates: { value: [], from: 'default' }, defaultCommandTimeout: { value: 4000, from: 'default' }, @@ -1150,7 +1149,6 @@ describe('config/src/project/utils', () => { baseUrl: { value: 'http://localhost:8080', from: 'config' }, blockHosts: { value: null, from: 'default' }, browsers: { value: [], from: 'default' }, - experimentalBurnIn: { value: false, from: 'default' }, chromeWebSecurity: { value: true, from: 'default' }, clientCertificates: { value: [], from: 'default' }, defaultCommandTimeout: { value: 4000, from: 'default' }, diff --git a/packages/config/test/validation.spec.ts b/packages/config/test/validation.spec.ts index de5d9c450c96..9b68eb8a1a14 100644 --- a/packages/config/test/validation.spec.ts +++ b/packages/config/test/validation.spec.ts @@ -792,119 +792,4 @@ describe('config/src/validation', () => { return snapshot('invalid upper bound', upperBoundMsg) }) }) - - describe('.isValidBurnInConfig', () => { - it('validates default config if enabled', () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - default: 3, - flaky: 5, - }) - - expect(validate).to.be.true - }) - - it('validates false', () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', false) - - expect(validate).to.be.true - }) - - it('validates true', () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', true) - - expect(validate).to.be.true - }) - - it('does not allow extraneous keys', () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - default: 3, - flaky: 5, - // extraneous key - notflaky: null, - }) - - expect(validate).to.not.be.true - - return snapshot(`extraneous keys`, validate) - }) - - const possibleConfigKeys = ['default', 'flaky'] - - possibleConfigKeys.forEach((burnInConfigKey) => { - it(`Does not populate missing config value with default values (key "${burnInConfigKey}")`, () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - [burnInConfigKey]: 1, - }) - - expect(validate).to.not.be.true - - const missingKey = possibleConfigKeys.find((key) => key !== burnInConfigKey) - - return snapshot(`missing key "${missingKey}"`, validate) - }) - }) - - it(`does not allow keys to be zero`, () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - default: 0, - flaky: 0, - }) - - expect(validate).to.not.be.true - - return snapshot(`keys cannot be zero`, validate) - }) - - it(`does not allow keys to be negative`, () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - default: -3, - flaky: -40, - }) - - expect(validate).to.not.be.true - - return snapshot(`keys cannot be negative`, validate) - }) - - it(`does not allow keys to be floating point numbers`, () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - default: 5.7, - flaky: 8.22, - }) - - expect(validate).to.not.be.true - - return snapshot(`keys cannot be floating point numbers`, validate) - }) - - it(`does not allow keys to be Infinity`, () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - default: Infinity, - flaky: Infinity, - }) - - expect(validate).to.not.be.true - - return snapshot(`keys cannot be Infinity`, validate) - }) - - it(`tests lower bound`, () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - default: 1, - flaky: 1, - }) - - expect(validate).to.be.true - }) - - // TODO: revisit limit on 'default' and 'flaky' keys to set sane limits - it(`tests upper bound (currently no limit and is subject to change)`, () => { - const validate = validation.isValidBurnInConfig('experimentalBurnIn', { - default: 100000, - flaky: 142342342, - }) - - expect(validate).to.be.true - }) - }) }) diff --git a/packages/frontend-shared/src/locales/en-US.json b/packages/frontend-shared/src/locales/en-US.json index 561ad14b1e0d..5bc40877810b 100644 --- a/packages/frontend-shared/src/locales/en-US.json +++ b/packages/frontend-shared/src/locales/en-US.json @@ -579,10 +579,6 @@ "experiments": { "title": "Experiments", "description": "If you'd like to try out new features that we're working on, you can enable beta features for your project by turning on the experimental features you'd like to try. {0}", - "experimentalBurnIn": { - "name": "Burn-in", - "description": "Enables flake detection on risky passing tests, such as for new or modified tests or tests which failed or flaked on previous runs. Note: This feature is only available for Team, Business, and Enterprise plans on Cypress Cloud. Furthermore, only Business and Enterprise plans can override the `experimentalBurnIn.default` or `experimentalBurnIn.flaky` settings." - }, "experimentalCspAllowList": { "name": "CSP Allow List", "description": "Enables Cypress to selectively permit Content-Security-Policy and Content-Security-Policy-Report-Only header directives, including those that might otherwise block Cypress from running." From cde15d05a6cfa83046342c44737c66febc4fd92e Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Thu, 28 Sep 2023 11:52:14 -0400 Subject: [PATCH 10/40] Revert "chore: add burnInTestAction capability (#27768)" This reverts commit ae3df1a505ed16d29e524a941078ea28b0a94b3c. --- packages/server/lib/cloud/api.ts | 1 - packages/server/test/unit/cloud/api_spec.js | 1 - system-tests/__snapshots__/record_spec.js | 3 +-- system-tests/test/record_spec.js | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/server/lib/cloud/api.ts b/packages/server/lib/cloud/api.ts index 7da6cf3391fc..727c8f92dd2e 100644 --- a/packages/server/lib/cloud/api.ts +++ b/packages/server/lib/cloud/api.ts @@ -37,7 +37,6 @@ const runnerCapabilities = { 'dynamicSpecsInSerialMode': true, 'skipSpecAction': true, 'protocolMountVersion': 2, - 'burnInTestAction': true, } let responseCache = {} diff --git a/packages/server/test/unit/cloud/api_spec.js b/packages/server/test/unit/cloud/api_spec.js index 691fdba882e0..b92156dac52f 100644 --- a/packages/server/test/unit/cloud/api_spec.js +++ b/packages/server/test/unit/cloud/api_spec.js @@ -559,7 +559,6 @@ describe('lib/cloud/api', () => { 'protocolMountVersion': 2, 'dynamicSpecsInSerialMode': true, 'skipSpecAction': true, - 'burnInTestAction': true, }, } }) diff --git a/system-tests/__snapshots__/record_spec.js b/system-tests/__snapshots__/record_spec.js index f47345f3e799..a592cf617c90 100644 --- a/system-tests/__snapshots__/record_spec.js +++ b/system-tests/__snapshots__/record_spec.js @@ -2368,8 +2368,7 @@ Request Sent: "runnerCapabilities": { "dynamicSpecsInSerialMode": true, "skipSpecAction": true, - "protocolMountVersion": 2, - "burnInTestAction": true + "protocolMountVersion": 2 } } diff --git a/system-tests/test/record_spec.js b/system-tests/test/record_spec.js index 7634ca4e87c4..6bbdf75c937f 100644 --- a/system-tests/test/record_spec.js +++ b/system-tests/test/record_spec.js @@ -730,7 +730,6 @@ describe('e2e record', () => { 'dynamicSpecsInSerialMode': true, 'protocolMountVersion': 2, 'skipSpecAction': true, - 'burnInTestAction': true, }) }) From c5abc9012fbabdf04efa244e69c80cbd00ed77a0 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Thu, 28 Sep 2023 12:53:06 -0400 Subject: [PATCH 11/40] chore: run snapshot and binary jobs against experimental retries feature branch --- .circleci/workflows.yml | 10 +++++----- .github/workflows/update_v8_snapshot_cache.yml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index d1ae408689c4..b6314715ebae 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -30,7 +30,7 @@ mainBuildFilters: &mainBuildFilters - /^release\/\d+\.\d+\.\d+$/ # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - 'update-v8-snapshot-cache-on-develop' - - 'feature/test-burn-in' + - 'feature/experimental-retries' - 'publish-binary' - 'chore/update_electron25_and_node18' @@ -43,14 +43,14 @@ macWorkflowFilters: &darwin-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'feature/test-burn-in', << pipeline.git.branch >> ] + - equal: [ 'feature/experimental-retries', << pipeline.git.branch >> ] linuxArm64WorkflowFilters: &linux-arm64-workflow-filters when: or: - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'feature/test-burn-in', << pipeline.git.branch >> ] + - equal: [ 'feature/experimental-retries', << pipeline.git.branch >> ] - equal: [ 'publish-binary', << pipeline.git.branch >> ] - equal: [ 'chore/update_electron25_and_node18', << pipeline.git.branch >> ] - matches: @@ -72,7 +72,7 @@ windowsWorkflowFilters: &windows-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'feature/test-burn-in', << pipeline.git.branch >> ] + - equal: [ 'feature/experimental-retries', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -142,7 +142,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" != "publish-binary" && "$CIRCLE_BRANCH" != "update-v8-snapshot-cache-on-develop" && "$CIRCLE_BRANCH" != "feature/test-burn-in" ]]; then + echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "publish-binary" && "$CIRCLE_BRANCH" != "update-v8-snapshot-cache-on-develop" && "$CIRCLE_BRANCH" != "feature/experimental-retries" ]]; 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 diff --git a/.github/workflows/update_v8_snapshot_cache.yml b/.github/workflows/update_v8_snapshot_cache.yml index adc9091d938a..77e43ac01d61 100644 --- a/.github/workflows/update_v8_snapshot_cache.yml +++ b/.github/workflows/update_v8_snapshot_cache.yml @@ -8,7 +8,7 @@ on: push: branches: - 'release/**' - - 'feature/test-burn-in' + - 'feature/experimental-retries' workflow_dispatch: inputs: branch: From f866c5c698db3635e63e7ce2035d3c092a0f2c50 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Thu, 28 Sep 2023 13:10:02 -0400 Subject: [PATCH 12/40] chore: add changelog entry (wip) --- cli/CHANGELOG.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index a20c46342968..dbbc4ddd268d 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,8 +1,20 @@ -## 13.3.1 +## 13.4.0 _Released 10/03/2023 (PENDING)_ +**Features:** + +- Users can now specify different retry options with the `experimentalRetries` configuration. These configuration options can be useful when detecting flake and figuring out under what conditions you would like to pass a retried test. The `retries` configuration option includes two new keys, `experimentalStrategy` and `experimentalOptions`. The first, `experimentalStrategy`, can be one of two options: + - `detect-flake-and-pass-on-threshold` + - `detect-flake-but-always-fail` + + `detect-flake-and-pass-on-threshold` is similar to how retries work today. Users will be able to specify a retry limit and specify a required number of passes needed in order for that test to be marked as passed. Today, that limit is `1`, but users can set the limit to whatever they'd like with this strategy by specifying the `experimentalOptions.passesRequired` key in their global configuration. This can be useful if a test is retrying and is known to be flaky, but you want to make sure that the test can at least pass a certain threshold in order to be marked as passed overall, which might help in confidence that the test is just flaky and the failure is not considered legitimate. It's important to note that if the `passesRequired` can not be achieved by the remaining retries of the test, the test will stop retrying and the test will be marked as a failure. + + The other, `detect-flake-but-always-fail`, will always mark a test that enters retries as failed, regardless of how many retried attempts pass. There is an option here, called `experimentalOptions.stopIfAnyPassed`, that will stop the test retries if any retry attempt passes. Without this option, you might want to see what the probability that your test might pass (similar to `detect-flake-and-pass-on-threshold`, but mark the test as failed as you might not want to mark any detected flaky test as a passed test. + + Both of these strategies require the `experimentalOptions.maxRetries` option to be set, which will be the maximum number of retries a test might run. Addressed in [#27930](https://github.com/cypress-io/cypress/pull/27930). + **Bugfixes:** - Fixed an issue where requests were correlated in the wrong order in the proxy. This could cause an issue where the wrong request is used for `cy.intercept` or assets (e.g. stylesheets or images) may not properly be available in Test Replay. Addressed in [#27892](https://github.com/cypress-io/cypress/pull/27892). From 83842a6f82e1b2d652822260c02bf596b13d33e7 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Thu, 28 Sep 2023 13:42:50 -0400 Subject: [PATCH 13/40] Revert "fix snapshot added in v13 for module api to include test burn in experimentalflag" This reverts commit bb5046c91e023930341ad2fcc2372ff18573dec6. --- system-tests/__snapshots__/results_spec.ts.js | 1 - 1 file changed, 1 deletion(-) diff --git a/system-tests/__snapshots__/results_spec.ts.js b/system-tests/__snapshots__/results_spec.ts.js index 950e03458f69..3021b40aa5b5 100644 --- a/system-tests/__snapshots__/results_spec.ts.js +++ b/system-tests/__snapshots__/results_spec.ts.js @@ -14,7 +14,6 @@ exports['module api and after:run results'] = ` "arch": "x64", "baseUrl": null, "blockHosts": null, - "experimentalBurnIn": false, "chromeWebSecurity": true, "clientCertificates": [], "defaultCommandTimeout": 4000, From 9799c5365e7ee472f0790b69978f621e38599ae7 Mon Sep 17 00:00:00 2001 From: Muaz Othman Date: Wed, 4 Oct 2023 14:03:05 -0500 Subject: [PATCH 14/40] Fix system tests --- .../e2e/util/mocha_custom_methods.cy.js | 484 +++++++++--------- .../experimental_retries.spec.ts.js | 28 +- .../test/experimental_retries.spec.ts | 420 ++++++++------- 3 files changed, 457 insertions(+), 475 deletions(-) diff --git a/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js b/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js index 29f9d94e2f98..f5e178f0c5c9 100644 --- a/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js +++ b/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js @@ -18,276 +18,274 @@ describe('mocha custom methods', () => { return Cypress._.cloneDeep(mockTestContext) } - describe('strategy w/ experimentalBurnIn=false', () => { - it('should never attempt to retry a test that passes on the first try, regardless of strategy', function () { - const undefinedStrategyTest = createMockTest() - const noExperimentalRetries = calculateTestStatus(undefinedStrategyTest) - - expect(noExperimentalRetries.outerStatus).to.equal('passed') - expect(noExperimentalRetries.attempts).to.equal(1) - expect(noExperimentalRetries.shouldAttemptsContinue).to.be.false - expect(noExperimentalRetries.strategy).to.be.undefined - expect(undefinedStrategyTest.final).to.be.true - - const detectFlakeAndPassOnThresholdStrategyTest = createMockTest() - const detectFlakeAndPassOnThreshold = calculateTestStatus(detectFlakeAndPassOnThresholdStrategyTest, 'detect-flake-and-pass-on-threshold', { - maxRetries: 8, - passesRequired: 5, + it('should never attempt to retry a test that passes on the first try, regardless of strategy', function () { + const undefinedStrategyTest = createMockTest() + const noExperimentalRetries = calculateTestStatus(undefinedStrategyTest) + + expect(noExperimentalRetries.outerStatus).to.equal('passed') + expect(noExperimentalRetries.attempts).to.equal(1) + expect(noExperimentalRetries.shouldAttemptsContinue).to.be.false + expect(noExperimentalRetries.strategy).to.be.undefined + expect(undefinedStrategyTest.final).to.be.true + + const detectFlakeAndPassOnThresholdStrategyTest = createMockTest() + const detectFlakeAndPassOnThreshold = calculateTestStatus(detectFlakeAndPassOnThresholdStrategyTest, 'detect-flake-and-pass-on-threshold', { + maxRetries: 8, + passesRequired: 5, + }) + + expect(detectFlakeAndPassOnThreshold.outerStatus).to.equal('passed') + expect(detectFlakeAndPassOnThreshold.attempts).to.equal(1) + expect(detectFlakeAndPassOnThreshold.shouldAttemptsContinue).to.be.false + expect(detectFlakeAndPassOnThreshold.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(detectFlakeAndPassOnThresholdStrategyTest.final).to.be.true + + const detectFlakeButAlwaysFailStrategyTest = createMockTest() + const detectFlakeButAlwaysFail = calculateTestStatus(detectFlakeButAlwaysFailStrategyTest, 'detect-flake-but-always-fail', { + maxRetries: 8, + stopIfAnyPassed: false, + }) + + expect(detectFlakeButAlwaysFail.outerStatus).to.equal('passed') + expect(detectFlakeButAlwaysFail.attempts).to.equal(1) + expect(detectFlakeButAlwaysFail.shouldAttemptsContinue).to.be.false + expect(detectFlakeButAlwaysFail.strategy).to.equal('detect-flake-but-always-fail') + expect(detectFlakeButAlwaysFailStrategyTest.final).to.be.true + }) + + describe('undefined (GA implementation/original)', () => { + it('passed: keeps signaling to retry until test passes', function () { + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1) + + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.be.undefined + + const mockTest2 = createMockTest('passed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2) + + expect(attempt2.outerStatus).to.equal('passed') + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.false + expect(attempt2.strategy).to.be.undefined + }) + + // this logic is NOT inclusive of after/afterEach hooks, which can still set the test state after the test has calculated the meta data properties. + // this happens inside ./driver/src/cypress/runner.ts + it('failed: keeps signaling to retry until retry limit is reached', function () { + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1) + + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.be.undefined + + const mockTest2 = createMockTest('failed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2) + + expect(attempt2.outerStatus).to.be.undefined + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.true + expect(attempt2.strategy).to.be.undefined + + const mockTest3 = createMockTest('failed', [mockTest1, mockTest2]) + const attempt3 = calculateTestStatus(mockTest3) + + expect(attempt3.outerStatus).to.equal('failed') + expect(attempt3.attempts).to.equal(3) + expect(attempt3.shouldAttemptsContinue).to.be.false + expect(attempt3.strategy).to.be.undefined + }) + }) + + describe('detect-flake-and-pass-on-threshold', () => { + it('passed: no longer signals to retry test after passesRequired threshold is reached', function () { + totalRetries = 5 + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, }) - expect(detectFlakeAndPassOnThreshold.outerStatus).to.equal('passed') - expect(detectFlakeAndPassOnThreshold.attempts).to.equal(1) - expect(detectFlakeAndPassOnThreshold.shouldAttemptsContinue).to.be.false - expect(detectFlakeAndPassOnThreshold.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(detectFlakeAndPassOnThresholdStrategyTest.final).to.be.true + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest1.final).to.be.false - const detectFlakeButAlwaysFailStrategyTest = createMockTest() - const detectFlakeButAlwaysFail = calculateTestStatus(detectFlakeButAlwaysFailStrategyTest, 'detect-flake-but-always-fail', { - maxRetries: 8, - stopIfAnyPassed: false, + const mockTest2 = createMockTest('failed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, }) - expect(detectFlakeButAlwaysFail.outerStatus).to.equal('passed') - expect(detectFlakeButAlwaysFail.attempts).to.equal(1) - expect(detectFlakeButAlwaysFail.shouldAttemptsContinue).to.be.false - expect(detectFlakeButAlwaysFail.strategy).to.equal('detect-flake-but-always-fail') - expect(detectFlakeButAlwaysFailStrategyTest.final).to.be.true - }) + expect(attempt2.outerStatus).to.be.undefined + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.true + expect(attempt2.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest2.final).to.be.false - describe('undefined (GA implementation/original)', () => { - it('passed: keeps signaling to retry until test passes', function () { - const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1) + const mockTest3 = createMockTest('passed', [mockTest1, mockTest2]) + const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) + + expect(attempt3.outerStatus).to.be.undefined + expect(attempt3.attempts).to.equal(3) + expect(attempt3.shouldAttemptsContinue).to.be.true + expect(attempt3.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest3.final).to.be.false - expect(attempt1.outerStatus).to.be.undefined - expect(attempt1.attempts).to.equal(1) - expect(attempt1.shouldAttemptsContinue).to.be.true - expect(attempt1.strategy).to.be.undefined + const mockTest4 = createMockTest('passed', [mockTest1, mockTest2, mockTest3]) + const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) - const mockTest2 = createMockTest('passed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2) + expect(attempt4.outerStatus).to.equal('passed') + expect(attempt4.attempts).to.equal(4) + expect(attempt4.shouldAttemptsContinue).to.be.false + expect(attempt4.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest4.final).to.be.true + }) - expect(attempt2.outerStatus).to.equal('passed') - expect(attempt2.attempts).to.equal(2) - expect(attempt2.shouldAttemptsContinue).to.be.false - expect(attempt2.strategy).to.be.undefined + it('failed: no longer signals to retry test if the passesRequired is impossible to meet', function () { + totalRetries = 4 + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, }) - // this logic is NOT inclusive of after/afterEach hooks, which can still set the test state after the test has calculated the meta data properties. - // this happens inside ./driver/src/cypress/runner.ts - it('failed: keeps signaling to retry until retry limit is reached', function () { - const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1) + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest1.final).to.be.false - expect(attempt1.outerStatus).to.be.undefined - expect(attempt1.attempts).to.equal(1) - expect(attempt1.shouldAttemptsContinue).to.be.true - expect(attempt1.strategy).to.be.undefined + const mockTest2 = createMockTest('failed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) - const mockTest2 = createMockTest('failed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2) + expect(attempt2.outerStatus).to.be.undefined + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.true + expect(attempt2.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest2.final).to.be.false - expect(attempt2.outerStatus).to.be.undefined - expect(attempt2.attempts).to.equal(2) - expect(attempt2.shouldAttemptsContinue).to.be.true - expect(attempt2.strategy).to.be.undefined + const mockTest3 = createMockTest('failed', [mockTest1, mockTest2]) + const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, + }) - const mockTest3 = createMockTest('failed', [mockTest1, mockTest2]) - const attempt3 = calculateTestStatus(mockTest3) + expect(attempt3.outerStatus).to.be.undefined + expect(attempt3.attempts).to.equal(3) + expect(attempt3.shouldAttemptsContinue).to.be.true + expect(attempt3.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest3.final).to.be.false - expect(attempt3.outerStatus).to.equal('failed') - expect(attempt3.attempts).to.equal(3) - expect(attempt3.shouldAttemptsContinue).to.be.false - expect(attempt3.strategy).to.be.undefined + const mockTest4 = createMockTest('failed', [mockTest1, mockTest2, mockTest3]) + const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-and-pass-on-threshold', { + maxRetries: totalRetries, + passesRequired: 2, }) + + expect(attempt4.outerStatus).to.equal('failed') + expect(attempt4.attempts).to.equal(4) + expect(attempt4.shouldAttemptsContinue).to.be.false + expect(attempt4.strategy).to.equal('detect-flake-and-pass-on-threshold') + expect(mockTest4.final).to.be.true }) + }) + + describe('detect-flake-but-always-fail', () => { + it('failed: no longer signals to retry after retries are exhausted', function () { + totalRetries = 3 + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: false, + }) - describe('detect-flake-and-pass-on-threshold', () => { - it('passed: no longer signals to retry test after passesRequired threshold is reached', function () { - totalRetries = 5 - const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-and-pass-on-threshold', { - maxRetries: totalRetries, - passesRequired: 2, - }) - - expect(attempt1.outerStatus).to.be.undefined - expect(attempt1.attempts).to.equal(1) - expect(attempt1.shouldAttemptsContinue).to.be.true - expect(attempt1.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(mockTest1.final).to.be.false - - const mockTest2 = createMockTest('failed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-and-pass-on-threshold', { - maxRetries: totalRetries, - passesRequired: 2, - }) - - expect(attempt2.outerStatus).to.be.undefined - expect(attempt2.attempts).to.equal(2) - expect(attempt2.shouldAttemptsContinue).to.be.true - expect(attempt2.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(mockTest2.final).to.be.false - - const mockTest3 = createMockTest('passed', [mockTest1, mockTest2]) - const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-and-pass-on-threshold', { - maxRetries: totalRetries, - passesRequired: 2, - }) - - expect(attempt3.outerStatus).to.be.undefined - expect(attempt3.attempts).to.equal(3) - expect(attempt3.shouldAttemptsContinue).to.be.true - expect(attempt3.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(mockTest3.final).to.be.false - - const mockTest4 = createMockTest('passed', [mockTest1, mockTest2, mockTest3]) - const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-and-pass-on-threshold', { - maxRetries: totalRetries, - passesRequired: 2, - }) - - expect(attempt4.outerStatus).to.equal('passed') - expect(attempt4.attempts).to.equal(4) - expect(attempt4.shouldAttemptsContinue).to.be.false - expect(attempt4.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(mockTest4.final).to.be.true + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest1.final).to.be.false + + const mockTest2 = createMockTest('failed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: false, }) - it('failed: no longer signals to retry test if the passesRequired is impossible to meet', function () { - totalRetries = 4 - const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-and-pass-on-threshold', { - maxRetries: totalRetries, - passesRequired: 2, - }) - - expect(attempt1.outerStatus).to.be.undefined - expect(attempt1.attempts).to.equal(1) - expect(attempt1.shouldAttemptsContinue).to.be.true - expect(attempt1.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(mockTest1.final).to.be.false - - const mockTest2 = createMockTest('failed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-and-pass-on-threshold', { - maxRetries: totalRetries, - passesRequired: 2, - }) - - expect(attempt2.outerStatus).to.be.undefined - expect(attempt2.attempts).to.equal(2) - expect(attempt2.shouldAttemptsContinue).to.be.true - expect(attempt2.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(mockTest2.final).to.be.false - - const mockTest3 = createMockTest('failed', [mockTest1, mockTest2]) - const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-and-pass-on-threshold', { - maxRetries: totalRetries, - passesRequired: 2, - }) - - expect(attempt3.outerStatus).to.be.undefined - expect(attempt3.attempts).to.equal(3) - expect(attempt3.shouldAttemptsContinue).to.be.true - expect(attempt3.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(mockTest3.final).to.be.false - - const mockTest4 = createMockTest('failed', [mockTest1, mockTest2, mockTest3]) - const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-and-pass-on-threshold', { - maxRetries: totalRetries, - passesRequired: 2, - }) - - expect(attempt4.outerStatus).to.equal('failed') - expect(attempt4.attempts).to.equal(4) - expect(attempt4.shouldAttemptsContinue).to.be.false - expect(attempt4.strategy).to.equal('detect-flake-and-pass-on-threshold') - expect(mockTest4.final).to.be.true + expect(attempt2.outerStatus).to.be.undefined + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.true + expect(attempt2.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest2.final).to.be.false + + const mockTest3 = createMockTest('passed', [mockTest1, mockTest2]) + const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: false, }) + + expect(attempt3.outerStatus).to.be.undefined + expect(attempt3.attempts).to.equal(3) + expect(attempt3.shouldAttemptsContinue).to.be.true + expect(attempt3.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest3.final).to.be.false + + const mockTest4 = createMockTest('passed', [mockTest1, mockTest2, mockTest3]) + const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: false, + }) + + expect(attempt4.outerStatus).to.equal('failed') + expect(attempt4.attempts).to.equal(4) + expect(attempt4.shouldAttemptsContinue).to.be.false + expect(attempt4.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest4.final).to.be.true + // make sure forceState is called on 'detect-flake-but-always-fail' in the case the last test attempt passed, but the outer status should indicate a failure + expect(mockTest4.forceState).to.equal('passed') }) - describe('detect-flake-but-always-fail', () => { - it('failed: no longer signals to retry after retries are exhausted', function () { - totalRetries = 3 - const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-but-always-fail', { - maxRetries: totalRetries, - stopIfAnyPassed: false, - }) - - expect(attempt1.outerStatus).to.be.undefined - expect(attempt1.attempts).to.equal(1) - expect(attempt1.shouldAttemptsContinue).to.be.true - expect(attempt1.strategy).to.equal('detect-flake-but-always-fail') - expect(mockTest1.final).to.be.false - - const mockTest2 = createMockTest('failed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-but-always-fail', { - maxRetries: totalRetries, - stopIfAnyPassed: false, - }) - - expect(attempt2.outerStatus).to.be.undefined - expect(attempt2.attempts).to.equal(2) - expect(attempt2.shouldAttemptsContinue).to.be.true - expect(attempt2.strategy).to.equal('detect-flake-but-always-fail') - expect(mockTest2.final).to.be.false - - const mockTest3 = createMockTest('passed', [mockTest1, mockTest2]) - const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-but-always-fail', { - maxRetries: totalRetries, - stopIfAnyPassed: false, - }) - - expect(attempt3.outerStatus).to.be.undefined - expect(attempt3.attempts).to.equal(3) - expect(attempt3.shouldAttemptsContinue).to.be.true - expect(attempt3.strategy).to.equal('detect-flake-but-always-fail') - expect(mockTest3.final).to.be.false - - const mockTest4 = createMockTest('passed', [mockTest1, mockTest2, mockTest3]) - const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-but-always-fail', { - maxRetries: totalRetries, - stopIfAnyPassed: false, - }) - - expect(attempt4.outerStatus).to.equal('failed') - expect(attempt4.attempts).to.equal(4) - expect(attempt4.shouldAttemptsContinue).to.be.false - expect(attempt4.strategy).to.equal('detect-flake-but-always-fail') - expect(mockTest4.final).to.be.true - // make sure forceState is called on 'detect-flake-but-always-fail' in the case the last test attempt passed, but the outer status should indicate a failure - expect(mockTest4.forceState).to.equal('passed') + it('failed: short circuits after a retry has a passed test', function () { + totalRetries = 3 + const mockTest1 = createMockTest('failed') + const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: true, }) - it('failed: short circuits after a retry has a passed test', function () { - totalRetries = 3 - const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-but-always-fail', { - maxRetries: totalRetries, - stopIfAnyPassed: true, - }) - - expect(attempt1.outerStatus).to.be.undefined - expect(attempt1.attempts).to.equal(1) - expect(attempt1.shouldAttemptsContinue).to.be.true - expect(attempt1.strategy).to.equal('detect-flake-but-always-fail') - expect(mockTest1.final).to.be.false - - const mockTest2 = createMockTest('passed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-but-always-fail', { - maxRetries: totalRetries, - stopIfAnyPassed: true, - }) - - expect(attempt2.outerStatus).to.equal('failed') - expect(attempt2.attempts).to.equal(2) - expect(attempt2.shouldAttemptsContinue).to.be.false - expect(attempt2.strategy).to.equal('detect-flake-but-always-fail') - expect(mockTest2.final).to.true - // make sure forceState is called on 'detect-flake-but-always-fail' in the case the last test attempt passed, but the outer status should indicate a failure - expect(mockTest2.forceState).to.equal('passed') + expect(attempt1.outerStatus).to.be.undefined + expect(attempt1.attempts).to.equal(1) + expect(attempt1.shouldAttemptsContinue).to.be.true + expect(attempt1.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest1.final).to.be.false + + const mockTest2 = createMockTest('passed', [mockTest1]) + const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-but-always-fail', { + maxRetries: totalRetries, + stopIfAnyPassed: true, }) + + expect(attempt2.outerStatus).to.equal('failed') + expect(attempt2.attempts).to.equal(2) + expect(attempt2.shouldAttemptsContinue).to.be.false + expect(attempt2.strategy).to.equal('detect-flake-but-always-fail') + expect(mockTest2.final).to.true + // make sure forceState is called on 'detect-flake-but-always-fail' in the case the last test attempt passed, but the outer status should indicate a failure + expect(mockTest2.forceState).to.equal('passed') }) }) }) diff --git a/system-tests/__snapshots__/experimental_retries.spec.ts.js b/system-tests/__snapshots__/experimental_retries.spec.ts.js index 16087f1740e7..4c19d5188422 100644 --- a/system-tests/__snapshots__/experimental_retries.spec.ts.js +++ b/system-tests/__snapshots__/experimental_retries.spec.ts.js @@ -1,4 +1,4 @@ -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / passes / only runs the first attempt of the test if the test passes'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-and-pass-on-threshold" / passes / only runs the first attempt of the test if the test passes'] = ` ==================================================================================================== @@ -53,7 +53,7 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / passes / retries up to the "passesRequired" limit if the config can be satisfied'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-and-pass-on-threshold" / passes / retries up to the "passesRequired" limit if the config can be satisfied'] = ` ==================================================================================================== @@ -114,7 +114,7 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / passes / retries up to the "passesRequired" limit if the config can be satisfied (max attempts)'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-and-pass-on-threshold" / passes / retries up to the "passesRequired" limit if the config can be satisfied (max attempts)'] = ` ==================================================================================================== @@ -179,7 +179,7 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / fails / short-circuits if the needed "passesRequired" cannot be satisfied by the remaining attempts available'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-and-pass-on-threshold" / fails / short-circuits if the needed "passesRequired" cannot be satisfied by the remaining attempts available'] = ` ==================================================================================================== @@ -245,7 +245,7 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / fails / retries up to the "passesRequired" limit if the config can be satisfied (max attempts possible)'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-and-pass-on-threshold" / fails / retries up to the "passesRequired" limit if the config can be satisfied (max attempts possible)'] = ` ==================================================================================================== @@ -315,7 +315,7 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / passes / only runs the first attempt of the test if the test passes'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-but-always-fail" / passes / only runs the first attempt of the test if the test passes'] = ` ==================================================================================================== @@ -370,7 +370,7 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / fails / runs all attempts of the test if the first attempt fails and "stopIfAnyPassed=false"'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-but-always-fail" / fails / runs all attempts of the test if the first attempt fails and "stopIfAnyPassed=false"'] = ` ==================================================================================================== @@ -444,7 +444,7 @@ AssertionError: expected true to be false ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / fails / runs attempts of the test if the first attempt fails until the test passes if "stopIfAnyPassed=true"'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-but-always-fail" / fails / runs attempts of the test if the first attempt fails until the test passes if "stopIfAnyPassed=true"'] = ` ==================================================================================================== @@ -510,7 +510,7 @@ AssertionError: expected true to be false ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / exercises experimental-retries suite to verify console reporter and final status code are correct.'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-and-pass-on-threshold" / exercises experimental-retries suite to verify console reporter and final status code are correct.'] = ` ==================================================================================================== @@ -853,7 +853,7 @@ Although you have test retries enabled, we do not retry tests when \`before all\ ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / exercises experimental-retries suite to verify console reporter and final status code are correct.'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-but-always-fail" / exercises experimental-retries suite to verify console reporter and final status code are correct.'] = ` ==================================================================================================== @@ -1290,7 +1290,7 @@ Error: test 2 ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / exercises experimental-retries suite to verify console reporter and final status code are correct (stopIfAnyPassed=true).'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-but-always-fail" / exercises experimental-retries suite to verify console reporter and final status code are correct (stopIfAnyPassed=true).'] = ` ==================================================================================================== @@ -1673,7 +1673,7 @@ Error: test 2 ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / exercises experimental-retries hook failures to verify console reporter and final status code are correct.'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-but-always-fail" / exercises experimental-retries hook failures to verify console reporter and final status code are correct.'] = ` ==================================================================================================== @@ -1885,7 +1885,7 @@ Although you have test retries enabled, we do not retry tests when \`before all\ ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-but-always-fail" / exercises experimental-retries hook failures to verify console reporter and final status code are correct (stopIfAnyPassed=true).'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-but-always-fail" / exercises experimental-retries hook failures to verify console reporter and final status code are correct (stopIfAnyPassed=true).'] = ` ==================================================================================================== @@ -2097,7 +2097,7 @@ Although you have test retries enabled, we do not retry tests when \`before all\ ` -exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-flake-and-pass-on-threshold" / exercises experimental-retries hook failures to verify console reporter and final status code are correct.'] = ` +exports['e2e retries.experimentalStrategy / "detect-flake-and-pass-on-threshold" / exercises experimental-retries hook failures to verify console reporter and final status code are correct.'] = ` ==================================================================================================== diff --git a/system-tests/test/experimental_retries.spec.ts b/system-tests/test/experimental_retries.spec.ts index d4291fdd46f4..3661804d4d0b 100644 --- a/system-tests/test/experimental_retries.spec.ts +++ b/system-tests/test/experimental_retries.spec.ts @@ -3,151 +3,55 @@ import systemTests from '../lib/system-tests' describe('e2e retries.experimentalStrategy', () => { systemTests.setup() - describe('experimentalBurnIn=false', () => { - describe('"detect-flake-and-pass-on-threshold"', () => { - describe('passes', () => { - systemTests.it('only runs the first attempt of the test if the test passes', { - project: 'experimental-retries', - browser: '!webkit', - spec: 'always-passes.cy.js', - snapshot: true, - expectedExitCode: 0, - config: { - experimentalBurnIn: false, - retries: { - openMode: false, - runMode: true, - experimentalStrategy: 'detect-flake-and-pass-on-threshold', - experimentalOptions: { - maxRetries: 10, - passesRequired: 3, - }, - }, - screenshotOnRunFailure: false, - }, - }) - - systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied', { - project: 'experimental-retries', - browser: '!webkit', - spec: 'deterministic-flaky.cy.js', - snapshot: true, - expectedExitCode: 0, - config: { - experimentalBurnIn: false, - retries: { - openMode: false, - runMode: true, - experimentalStrategy: 'detect-flake-and-pass-on-threshold', - experimentalOptions: { - maxRetries: 9, - passesRequired: 3, - }, - }, - screenshotOnRunFailure: false, - }, - }) - - systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied (max attempts)', { - project: 'experimental-retries', - browser: '!webkit', - spec: 'deterministic-flaky.cy.js', - snapshot: true, - expectedExitCode: 0, - config: { - experimentalBurnIn: false, - retries: { - openMode: false, - runMode: true, - experimentalStrategy: 'detect-flake-and-pass-on-threshold', - experimentalOptions: { - maxRetries: 9, - passesRequired: 5, - }, - }, - screenshotOnRunFailure: false, - }, - }) - }) - - describe('fails', () => { - systemTests.it('short-circuits if the needed "passesRequired" cannot be satisfied by the remaining attempts available', { - project: 'experimental-retries', - browser: '!webkit', - spec: 'deterministic-flaky.cy.js', - snapshot: true, - expectedExitCode: 1, - config: { - experimentalBurnIn: false, - retries: { - openMode: false, - runMode: true, - experimentalStrategy: 'detect-flake-and-pass-on-threshold', - experimentalOptions: { - maxRetries: 5, - passesRequired: 5, - }, - }, - screenshotOnRunFailure: false, - }, - }) - - systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied (max attempts possible)', { - project: 'experimental-retries', - browser: '!webkit', - spec: 'deterministic-flaky.cy.js', - snapshot: true, - expectedExitCode: 1, - config: { - experimentalBurnIn: false, - retries: { - openMode: false, - runMode: true, - experimentalStrategy: 'detect-flake-and-pass-on-threshold', - experimentalOptions: { - maxRetries: 6, - passesRequired: 4, - }, + describe('"detect-flake-and-pass-on-threshold"', () => { + describe('passes', () => { + systemTests.it('only runs the first attempt of the test if the test passes', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'always-passes.cy.js', + snapshot: true, + expectedExitCode: 0, + config: { + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 10, + passesRequired: 3, }, - screenshotOnRunFailure: false, }, - }) + screenshotOnRunFailure: false, + }, }) - /** - * exercised additionally in cy-in-cy tests to verify correct mocha snapshots and cypress reporter output: - * packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts - * packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts - */ - systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct.', { - project: 'detect-flake-and-pass-on-threshold', + systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied', { + project: 'experimental-retries', browser: '!webkit', - spec: 'runner/experimental-retries/*', + spec: 'deterministic-flaky.cy.js', snapshot: true, - expectedExitCode: 2, + expectedExitCode: 0, config: { - experimentalBurnIn: false, retries: { openMode: false, runMode: true, experimentalStrategy: 'detect-flake-and-pass-on-threshold', experimentalOptions: { maxRetries: 9, - passesRequired: 5, + passesRequired: 3, }, }, screenshotOnRunFailure: false, }, }) - systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct.', { - project: 'detect-flake-and-pass-on-threshold', + systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied (max attempts)', { + project: 'experimental-retries', browser: '!webkit', - spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + spec: 'deterministic-flaky.cy.js', snapshot: true, - expectedExitCode: 4, + expectedExitCode: 0, config: { - experimentalBurnIn: false, retries: { openMode: false, runMode: true, @@ -162,109 +66,103 @@ describe('e2e retries.experimentalStrategy', () => { }) }) - describe('"detect-flake-but-always-fail"', () => { - describe('passes', () => { - systemTests.it('only runs the first attempt of the test if the test passes', { - project: 'experimental-retries', - browser: '!webkit', - spec: 'always-passes.cy.js', - snapshot: true, - expectedExitCode: 0, - config: { - experimentalBurnIn: false, - retries: { - openMode: false, - runMode: true, - experimentalStrategy: 'detect-flake-but-always-fail', - experimentalOptions: { - maxRetries: 9, - stopIfAnyPassed: false, - }, - }, - screenshotOnRunFailure: false, - }, - }) - }) - - describe('fails', () => { - systemTests.it('runs all attempts of the test if the first attempt fails and "stopIfAnyPassed=false"', { - project: 'experimental-retries', - browser: '!webkit', - spec: 'deterministic-flaky.cy.js', - snapshot: true, - expectedExitCode: 1, - config: { - experimentalBurnIn: false, - retries: { - openMode: false, - runMode: true, - experimentalStrategy: 'detect-flake-but-always-fail', - experimentalOptions: { - maxRetries: 9, - stopIfAnyPassed: false, - }, - }, - screenshotOnRunFailure: false, - }, - }) - - systemTests.it('runs attempts of the test if the first attempt fails until the test passes if "stopIfAnyPassed=true"', { - project: 'experimental-retries', - browser: '!webkit', - spec: 'deterministic-flaky.cy.js', - snapshot: true, - expectedExitCode: 1, - config: { - experimentalBurnIn: false, - retries: { - openMode: false, - runMode: true, - experimentalStrategy: 'detect-flake-but-always-fail', - experimentalOptions: { - maxRetries: 9, - stopIfAnyPassed: true, - }, + describe('fails', () => { + systemTests.it('short-circuits if the needed "passesRequired" cannot be satisfied by the remaining attempts available', { + project: 'experimental-retries', + browser: '!webkit', + spec: 'deterministic-flaky.cy.js', + snapshot: true, + expectedExitCode: 1, + config: { + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 5, + passesRequired: 5, }, - screenshotOnRunFailure: false, }, - }) + screenshotOnRunFailure: false, + }, }) - /** - * exercised additionally in cy-in-cy tests to verify correct mocha snapshots and cypress reporter output: - * packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts - * packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts - */ - systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct.', { - project: 'detect-flake-but-always-fail', + systemTests.it('retries up to the "passesRequired" limit if the config can be satisfied (max attempts possible)', { + project: 'experimental-retries', browser: '!webkit', - spec: 'runner/experimental-retries/*', + spec: 'deterministic-flaky.cy.js', snapshot: true, - // FIXME: this should be 8 - expectedExitCode: 9, + expectedExitCode: 1, config: { - experimentalBurnIn: false, retries: { openMode: false, runMode: true, - experimentalStrategy: 'detect-flake-but-always-fail', + experimentalStrategy: 'detect-flake-and-pass-on-threshold', experimentalOptions: { - maxRetries: 9, - stopIfAnyPassed: false, + maxRetries: 6, + passesRequired: 4, }, }, screenshotOnRunFailure: false, }, }) + }) - systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct.', { - project: 'detect-flake-but-always-fail', + /** + * exercised additionally in cy-in-cy tests to verify correct mocha snapshots and cypress reporter output: + * packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts + * packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts + */ + systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct.', { + project: 'detect-flake-and-pass-on-threshold', + browser: '!webkit', + spec: 'runner/experimental-retries/*', + snapshot: true, + expectedExitCode: 2, + config: { + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 9, + passesRequired: 5, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct.', { + project: 'detect-flake-and-pass-on-threshold', + browser: '!webkit', + spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + snapshot: true, + expectedExitCode: 4, + config: { + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 9, + passesRequired: 5, + }, + }, + screenshotOnRunFailure: false, + }, + }) + }) + + describe('"detect-flake-but-always-fail"', () => { + describe('passes', () => { + systemTests.it('only runs the first attempt of the test if the test passes', { + project: 'experimental-retries', browser: '!webkit', - spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + spec: 'always-passes.cy.js', snapshot: true, - expectedExitCode: 4, + expectedExitCode: 0, config: { - experimentalBurnIn: false, retries: { openMode: false, runMode: true, @@ -277,37 +175,36 @@ describe('e2e retries.experimentalStrategy', () => { screenshotOnRunFailure: false, }, }) + }) - systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct (stopIfAnyPassed=true).', { - project: 'detect-flake-but-always-fail-stop-any-passed', + describe('fails', () => { + systemTests.it('runs all attempts of the test if the first attempt fails and "stopIfAnyPassed=false"', { + project: 'experimental-retries', browser: '!webkit', - spec: 'runner/experimental-retries/*', + spec: 'deterministic-flaky.cy.js', snapshot: true, - // FIXME: this should be 8 - expectedExitCode: 9, + expectedExitCode: 1, config: { - experimentalBurnIn: false, retries: { openMode: false, runMode: true, experimentalStrategy: 'detect-flake-but-always-fail', experimentalOptions: { maxRetries: 9, - stopIfAnyPassed: true, + stopIfAnyPassed: false, }, }, screenshotOnRunFailure: false, }, }) - systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct (stopIfAnyPassed=true).', { - project: 'detect-flake-but-always-fail', + systemTests.it('runs attempts of the test if the first attempt fails until the test passes if "stopIfAnyPassed=true"', { + project: 'experimental-retries', browser: '!webkit', - spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + spec: 'deterministic-flaky.cy.js', snapshot: true, - expectedExitCode: 4, + expectedExitCode: 1, config: { - experimentalBurnIn: false, retries: { openMode: false, runMode: true, @@ -321,5 +218,92 @@ describe('e2e retries.experimentalStrategy', () => { }, }) }) + + /** + * exercised additionally in cy-in-cy tests to verify correct mocha snapshots and cypress reporter output: + * packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.cy.ts + * packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.cy.ts + */ + systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct.', { + project: 'detect-flake-but-always-fail', + browser: '!webkit', + spec: 'runner/experimental-retries/*', + snapshot: true, + // FIXME: this should be 8 + expectedExitCode: 9, + config: { + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: false, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct.', { + project: 'detect-flake-but-always-fail', + browser: '!webkit', + spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + snapshot: true, + expectedExitCode: 4, + config: { + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: false, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('exercises experimental-retries suite to verify console reporter and final status code are correct (stopIfAnyPassed=true).', { + project: 'detect-flake-but-always-fail-stop-any-passed', + browser: '!webkit', + spec: 'runner/experimental-retries/*', + snapshot: true, + // FIXME: this should be 8 + expectedExitCode: 9, + config: { + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: true, + }, + }, + screenshotOnRunFailure: false, + }, + }) + + systemTests.it('exercises experimental-retries hook failures to verify console reporter and final status code are correct (stopIfAnyPassed=true).', { + project: 'detect-flake-but-always-fail', + browser: '!webkit', + spec: 'runner/fail-with-afterEach.mochaEvents.cy.js,runner/fail-with-beforeEach.mochaEvents.cy.js,runner/fail-with-after.mochaEvents.cy.js,runner/fail-with-before.mochaEvents.cy.js', + snapshot: true, + expectedExitCode: 4, + config: { + retries: { + openMode: false, + runMode: true, + experimentalStrategy: 'detect-flake-but-always-fail', + experimentalOptions: { + maxRetries: 9, + stopIfAnyPassed: true, + }, + }, + screenshotOnRunFailure: false, + }, + }) }) }) From fe367d6c904bab8cf895f49a89c20ffe5ecef253 Mon Sep 17 00:00:00 2001 From: Muaz Othman Date: Wed, 4 Oct 2023 15:26:05 -0500 Subject: [PATCH 15/40] Clear CircleCI cache --- .circleci/cache-version.txt | 2 +- .circleci/workflows.yml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.circleci/cache-version.txt b/.circleci/cache-version.txt index 5f93e9ced9e6..ab3d92891697 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. -09-22-23 +10-04-23 diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index 318aa3f2d8cd..e547c9ff52cd 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -29,7 +29,6 @@ mainBuildFilters: &mainBuildFilters - develop - /^release\/\d+\.\d+\.\d+$/ # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - - 'update-v8-snapshot-cache-on-develop' - 'feature/experimental-retries' - 'publish-binary' - 'chore/update_electron25_and_node18' @@ -58,8 +57,6 @@ 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: [ 'feature/experimental-retries', << pipeline.git.branch >> ] - - equal: [ 'publish-binary', << pipeline.git.branch >> ] - - equal: [ 'chore/update_electron25_and_node18', << pipeline.git.branch >> ] - equal: [ 'chore/update_webpack_deps_to_latest_webpack4_compat', << pipeline.git.branch >> ] - equal: [ 'chore/bump_loaders_and_optimize_webpack', << pipeline.git.branch >> ] - equal: [ 'lerna-optimize-tasks', << pipeline.git.branch >> ] From 0fecba03f59144b2d9d0e9b0983caa983488f5b1 Mon Sep 17 00:00:00 2001 From: Muaz Othman Date: Thu, 5 Oct 2023 13:12:50 -0500 Subject: [PATCH 16/40] Normalize retries config for test execution --- packages/driver/src/cypress/mocha.ts | 89 +++++++++++++++++++++------- 1 file changed, 66 insertions(+), 23 deletions(-) diff --git a/packages/driver/src/cypress/mocha.ts b/packages/driver/src/cypress/mocha.ts index e586dc514391..e17b6f5dbdae 100644 --- a/packages/driver/src/cypress/mocha.ts +++ b/packages/driver/src/cypress/mocha.ts @@ -45,19 +45,15 @@ interface CypressTest extends Mocha.Test { type Strategy = 'detect-flake-and-pass-on-threshold' | 'detect-flake-but-always-fail' | undefined -type Options = T extends 'detect-flake-and-pass-on-threshold' ? - { - maxRetries: number - passesRequired: number - } : - T extends 'detect-flake-but-always-fail' ? { - maxRetries: number - stopIfAnyPassed: boolean - } : - undefined +type NormalizedRetriesConfig = { + strategy?: Strategy + maxRetries?: number + passesRequired?: number + stopIfAnyPassed?: boolean +} // NOTE: 'calculateTestStatus' is marked as an individual function to make functionality easier to test. -export function calculateTestStatus (test: CypressTest, strategy: Strategy, options: Options) { +export function calculateTestStatus (test: CypressTest, config: NormalizedRetriesConfig) { // @ts-expect-error const totalAttemptsAlreadyExecuted = test.currentRetry() + 1 let shouldAttemptsContinue: boolean = true @@ -82,21 +78,21 @@ export function calculateTestStatus (test: CypressTest, strategy: Strategy, opti const passingAttempts = passedTests.length // Below variables are used for when strategy is "detect-flake-and-pass-on-threshold" or no strategy is defined - let passesRequired = strategy !== 'detect-flake-but-always-fail' ? - ((options as Options<'detect-flake-and-pass-on-threshold'> | undefined)?.passesRequired || 1) : + let passesRequired = config.strategy !== 'detect-flake-but-always-fail' ? + (config.passesRequired || 1) : null - const neededPassingAttemptsLeft = strategy !== 'detect-flake-but-always-fail' ? + const neededPassingAttemptsLeft = config.strategy !== 'detect-flake-but-always-fail' ? (passesRequired as number) - passingAttempts : null // Below variables are used for when strategy is only "detect-flake-but-always-fail" - let stopIfAnyPassed = strategy === 'detect-flake-but-always-fail' ? - ((options as Options<'detect-flake-but-always-fail'>).stopIfAnyPassed || false) : + let stopIfAnyPassed = config.strategy === 'detect-flake-but-always-fail' ? + (config.stopIfAnyPassed || false) : null // Do we have the required amount of passes? If yes, we no longer need to keep running the test. - if (strategy !== 'detect-flake-but-always-fail' && passingAttempts >= (passesRequired as number)) { + if (config.strategy !== 'detect-flake-but-always-fail' && passingAttempts >= (passesRequired as number)) { outerTestStatus = 'passed' test.final = true shouldAttemptsContinue = false @@ -105,13 +101,13 @@ export function calculateTestStatus (test: CypressTest, strategy: Strategy, opti // For strategy "detect-flake-and-pass-on-threshold" or no strategy (current GA retries): // If we haven't met our max attempt limit AND we have enough remaining attempts that can satisfy the passing requirement. // retry the test. - (strategy !== 'detect-flake-but-always-fail' && remainingAttempts >= (neededPassingAttemptsLeft as number)) || + (config.strategy !== 'detect-flake-but-always-fail' && remainingAttempts >= (neededPassingAttemptsLeft as number)) || // For strategy "detect-flake-but-always-fail": // If we haven't met our max attempt limit AND // stopIfAnyPassed is false OR // stopIfAnyPassed is true and no tests have passed yet. // retry the test. - (strategy === 'detect-flake-but-always-fail' && (!stopIfAnyPassed || stopIfAnyPassed && passingAttempts === 0)) + (config.strategy === 'detect-flake-but-always-fail' && (!stopIfAnyPassed || stopIfAnyPassed && passingAttempts === 0)) )) { test.final = false shouldAttemptsContinue = true @@ -132,7 +128,7 @@ export function calculateTestStatus (test: CypressTest, strategy: Strategy, opti } return { - strategy, + strategy: config.strategy, shouldAttemptsContinue, attempts: totalAttemptsAlreadyExecuted, outerStatus: outerTestStatus, @@ -438,16 +434,63 @@ function patchTestClone () { } } +function getNormalizedRetriesConfig (Cypress: Cypress.Cypress): NormalizedRetriesConfig { + const retriesConfig = Cypress.config('retries') + const isInOpenMode = Cypress.config('isInteractive') + + if (retriesConfig == null) { + return {} + } + + if (typeof retriesConfig === 'number') { + return { + strategy: 'detect-flake-and-pass-on-threshold', + maxRetries: retriesConfig, + passesRequired: 1, + } + } + + const enablementKey: 'openMode'|'runMode' = isInOpenMode ? 'openMode' : 'runMode' + const enablementValue = retriesConfig[enablementKey] + + // if retries are explicitly disabled, return an empty object + if (enablementValue === false) { + return {} + } + + // by default, retries are disabled in open mode + if (!enablementValue && isInOpenMode) { + return {} + } + + if (typeof enablementValue === 'number') { + return { + strategy: 'detect-flake-and-pass-on-threshold', + maxRetries: enablementValue, + passesRequired: 1, + } + } + + const config = retriesConfig as Cypress.RetryStrategy + + // TODO: For GA, rename experimentalStrategy to strategy, experimentalOptions to options + return { + strategy: config.experimentalStrategy, + maxRetries: config.experimentalOptions?.maxRetries, + passesRequired: config.experimentalOptions?.['passesRequired'], + stopIfAnyPassed: config.experimentalOptions?.['stopIfAnyPassed'], + } +} + function createCalculateTestStatus (Cypress: Cypress.Cypress) { // Adds a method to the test object called 'calculateTestStatus' // which is used inside our mocha patch (./driver/patches/mocha+7.0.1.dev.patch) // in order to calculate test retries. This prototype functions as a light abstraction around // 'calculateTestStatus', which makes the function easier to unit-test Test.prototype.calculateTestStatus = function () { - let retriesConfig = Cypress.config('retries') + const retriesConfig = getNormalizedRetriesConfig(Cypress) - // @ts-expect-error - return calculateTestStatus(this, retriesConfig?.experimentalStrategy, retriesConfig?.experimentalOptions) + return calculateTestStatus(this, retriesConfig) } } From 1b15b2a47ea10e51a5fc567732c58589a93e9c0c Mon Sep 17 00:00:00 2001 From: Muaz Othman Date: Wed, 11 Oct 2023 10:59:24 -0500 Subject: [PATCH 17/40] Fixed some unit tests --- .../e2e/util/mocha_custom_methods.cy.js | 48 ++++++++++++------- packages/driver/src/cypress/mocha.ts | 18 +++---- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js b/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js index f5e178f0c5c9..b8ff80a05f32 100644 --- a/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js +++ b/packages/driver/cypress/e2e/util/mocha_custom_methods.cy.js @@ -29,7 +29,8 @@ describe('mocha custom methods', () => { expect(undefinedStrategyTest.final).to.be.true const detectFlakeAndPassOnThresholdStrategyTest = createMockTest() - const detectFlakeAndPassOnThreshold = calculateTestStatus(detectFlakeAndPassOnThresholdStrategyTest, 'detect-flake-and-pass-on-threshold', { + const detectFlakeAndPassOnThreshold = calculateTestStatus(detectFlakeAndPassOnThresholdStrategyTest, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: 8, passesRequired: 5, }) @@ -41,7 +42,8 @@ describe('mocha custom methods', () => { expect(detectFlakeAndPassOnThresholdStrategyTest.final).to.be.true const detectFlakeButAlwaysFailStrategyTest = createMockTest() - const detectFlakeButAlwaysFail = calculateTestStatus(detectFlakeButAlwaysFailStrategyTest, 'detect-flake-but-always-fail', { + const detectFlakeButAlwaysFail = calculateTestStatus(detectFlakeButAlwaysFailStrategyTest, { + strategy: 'detect-flake-but-always-fail', maxRetries: 8, stopIfAnyPassed: false, }) @@ -105,7 +107,8 @@ describe('mocha custom methods', () => { it('passed: no longer signals to retry test after passesRequired threshold is reached', function () { totalRetries = 5 const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-and-pass-on-threshold', { + const attempt1 = calculateTestStatus(mockTest1, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: totalRetries, passesRequired: 2, }) @@ -117,7 +120,8 @@ describe('mocha custom methods', () => { expect(mockTest1.final).to.be.false const mockTest2 = createMockTest('failed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-and-pass-on-threshold', { + const attempt2 = calculateTestStatus(mockTest2, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: totalRetries, passesRequired: 2, }) @@ -129,7 +133,8 @@ describe('mocha custom methods', () => { expect(mockTest2.final).to.be.false const mockTest3 = createMockTest('passed', [mockTest1, mockTest2]) - const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-and-pass-on-threshold', { + const attempt3 = calculateTestStatus(mockTest3, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: totalRetries, passesRequired: 2, }) @@ -141,7 +146,8 @@ describe('mocha custom methods', () => { expect(mockTest3.final).to.be.false const mockTest4 = createMockTest('passed', [mockTest1, mockTest2, mockTest3]) - const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-and-pass-on-threshold', { + const attempt4 = calculateTestStatus(mockTest4, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: totalRetries, passesRequired: 2, }) @@ -156,7 +162,8 @@ describe('mocha custom methods', () => { it('failed: no longer signals to retry test if the passesRequired is impossible to meet', function () { totalRetries = 4 const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-and-pass-on-threshold', { + const attempt1 = calculateTestStatus(mockTest1, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: totalRetries, passesRequired: 2, }) @@ -168,7 +175,8 @@ describe('mocha custom methods', () => { expect(mockTest1.final).to.be.false const mockTest2 = createMockTest('failed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-and-pass-on-threshold', { + const attempt2 = calculateTestStatus(mockTest2, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: totalRetries, passesRequired: 2, }) @@ -180,7 +188,8 @@ describe('mocha custom methods', () => { expect(mockTest2.final).to.be.false const mockTest3 = createMockTest('failed', [mockTest1, mockTest2]) - const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-and-pass-on-threshold', { + const attempt3 = calculateTestStatus(mockTest3, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: totalRetries, passesRequired: 2, }) @@ -192,7 +201,8 @@ describe('mocha custom methods', () => { expect(mockTest3.final).to.be.false const mockTest4 = createMockTest('failed', [mockTest1, mockTest2, mockTest3]) - const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-and-pass-on-threshold', { + const attempt4 = calculateTestStatus(mockTest4, { + strategy: 'detect-flake-and-pass-on-threshold', maxRetries: totalRetries, passesRequired: 2, }) @@ -209,7 +219,8 @@ describe('mocha custom methods', () => { it('failed: no longer signals to retry after retries are exhausted', function () { totalRetries = 3 const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-but-always-fail', { + const attempt1 = calculateTestStatus(mockTest1, { + strategy: 'detect-flake-but-always-fail', maxRetries: totalRetries, stopIfAnyPassed: false, }) @@ -221,7 +232,8 @@ describe('mocha custom methods', () => { expect(mockTest1.final).to.be.false const mockTest2 = createMockTest('failed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-but-always-fail', { + const attempt2 = calculateTestStatus(mockTest2, { + strategy: 'detect-flake-but-always-fail', maxRetries: totalRetries, stopIfAnyPassed: false, }) @@ -233,7 +245,8 @@ describe('mocha custom methods', () => { expect(mockTest2.final).to.be.false const mockTest3 = createMockTest('passed', [mockTest1, mockTest2]) - const attempt3 = calculateTestStatus(mockTest3, 'detect-flake-but-always-fail', { + const attempt3 = calculateTestStatus(mockTest3, { + strategy: 'detect-flake-but-always-fail', maxRetries: totalRetries, stopIfAnyPassed: false, }) @@ -245,7 +258,8 @@ describe('mocha custom methods', () => { expect(mockTest3.final).to.be.false const mockTest4 = createMockTest('passed', [mockTest1, mockTest2, mockTest3]) - const attempt4 = calculateTestStatus(mockTest4, 'detect-flake-but-always-fail', { + const attempt4 = calculateTestStatus(mockTest4, { + strategy: 'detect-flake-but-always-fail', maxRetries: totalRetries, stopIfAnyPassed: false, }) @@ -262,7 +276,8 @@ describe('mocha custom methods', () => { it('failed: short circuits after a retry has a passed test', function () { totalRetries = 3 const mockTest1 = createMockTest('failed') - const attempt1 = calculateTestStatus(mockTest1, 'detect-flake-but-always-fail', { + const attempt1 = calculateTestStatus(mockTest1, { + strategy: 'detect-flake-but-always-fail', maxRetries: totalRetries, stopIfAnyPassed: true, }) @@ -274,7 +289,8 @@ describe('mocha custom methods', () => { expect(mockTest1.final).to.be.false const mockTest2 = createMockTest('passed', [mockTest1]) - const attempt2 = calculateTestStatus(mockTest2, 'detect-flake-but-always-fail', { + const attempt2 = calculateTestStatus(mockTest2, { + strategy: 'detect-flake-but-always-fail', maxRetries: totalRetries, stopIfAnyPassed: true, }) diff --git a/packages/driver/src/cypress/mocha.ts b/packages/driver/src/cypress/mocha.ts index e17b6f5dbdae..125c36672bba 100644 --- a/packages/driver/src/cypress/mocha.ts +++ b/packages/driver/src/cypress/mocha.ts @@ -53,7 +53,7 @@ type NormalizedRetriesConfig = { } // NOTE: 'calculateTestStatus' is marked as an individual function to make functionality easier to test. -export function calculateTestStatus (test: CypressTest, config: NormalizedRetriesConfig) { +export function calculateTestStatus (test: CypressTest, config?: NormalizedRetriesConfig) { // @ts-expect-error const totalAttemptsAlreadyExecuted = test.currentRetry() + 1 let shouldAttemptsContinue: boolean = true @@ -78,21 +78,21 @@ export function calculateTestStatus (test: CypressTest, config: NormalizedRetrie const passingAttempts = passedTests.length // Below variables are used for when strategy is "detect-flake-and-pass-on-threshold" or no strategy is defined - let passesRequired = config.strategy !== 'detect-flake-but-always-fail' ? - (config.passesRequired || 1) : + let passesRequired = config?.strategy !== 'detect-flake-but-always-fail' ? + (config?.passesRequired || 1) : null - const neededPassingAttemptsLeft = config.strategy !== 'detect-flake-but-always-fail' ? + const neededPassingAttemptsLeft = config?.strategy !== 'detect-flake-but-always-fail' ? (passesRequired as number) - passingAttempts : null // Below variables are used for when strategy is only "detect-flake-but-always-fail" - let stopIfAnyPassed = config.strategy === 'detect-flake-but-always-fail' ? + let stopIfAnyPassed = config?.strategy === 'detect-flake-but-always-fail' ? (config.stopIfAnyPassed || false) : null // Do we have the required amount of passes? If yes, we no longer need to keep running the test. - if (config.strategy !== 'detect-flake-but-always-fail' && passingAttempts >= (passesRequired as number)) { + if (config?.strategy !== 'detect-flake-but-always-fail' && passingAttempts >= (passesRequired as number)) { outerTestStatus = 'passed' test.final = true shouldAttemptsContinue = false @@ -101,13 +101,13 @@ export function calculateTestStatus (test: CypressTest, config: NormalizedRetrie // For strategy "detect-flake-and-pass-on-threshold" or no strategy (current GA retries): // If we haven't met our max attempt limit AND we have enough remaining attempts that can satisfy the passing requirement. // retry the test. - (config.strategy !== 'detect-flake-but-always-fail' && remainingAttempts >= (neededPassingAttemptsLeft as number)) || + (config?.strategy !== 'detect-flake-but-always-fail' && remainingAttempts >= (neededPassingAttemptsLeft as number)) || // For strategy "detect-flake-but-always-fail": // If we haven't met our max attempt limit AND // stopIfAnyPassed is false OR // stopIfAnyPassed is true and no tests have passed yet. // retry the test. - (config.strategy === 'detect-flake-but-always-fail' && (!stopIfAnyPassed || stopIfAnyPassed && passingAttempts === 0)) + (config?.strategy === 'detect-flake-but-always-fail' && (!stopIfAnyPassed || stopIfAnyPassed && passingAttempts === 0)) )) { test.final = false shouldAttemptsContinue = true @@ -128,7 +128,7 @@ export function calculateTestStatus (test: CypressTest, config: NormalizedRetrie } return { - strategy: config.strategy, + strategy: config?.strategy, shouldAttemptsContinue, attempts: totalAttemptsAlreadyExecuted, outerStatus: outerTestStatus, From cd738a32228e7609ee63b376d26eb2787a467044 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Thu, 12 Oct 2023 14:05:18 -0400 Subject: [PATCH 18/40] update snapshots for newer test metadata --- system-tests/__snapshots__/protocol_spec.js | 152 +++++++++++++++----- 1 file changed, 116 insertions(+), 36 deletions(-) diff --git a/system-tests/__snapshots__/protocol_spec.js b/system-tests/__snapshots__/protocol_spec.js index ea0475c4081b..f47a817752c1 100644 --- a/system-tests/__snapshots__/protocol_spec.js +++ b/system-tests/__snapshots__/protocol_spec.js @@ -5063,7 +5063,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -5092,7 +5092,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -5121,7 +5121,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -5150,7 +5150,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -5160,6 +5160,11 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "preAfterTest": [ { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -5191,7 +5196,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5204,6 +5209,11 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -5235,7 +5245,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5248,6 +5258,11 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -5279,7 +5294,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5292,6 +5307,11 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -5323,7 +5343,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5337,6 +5357,11 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` ], "afterTest": [ { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -5369,7 +5394,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5377,6 +5402,11 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "_slow": 250 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -5409,7 +5439,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5417,6 +5447,11 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "_slow": 250 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -5449,7 +5484,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5457,6 +5492,11 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "_slow": 250 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -5489,7 +5529,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5526,7 +5566,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:359: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:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:447: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 ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" }, "retries": -1, "_slow": 250, @@ -5548,7 +5588,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -5579,7 +5619,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -5629,7 +5669,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:359: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:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-1.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:447: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 ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-1.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" }, "retries": -1, "_slow": 250, @@ -5651,7 +5691,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -5682,7 +5722,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -6701,7 +6741,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -6730,7 +6770,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -6759,7 +6799,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -6788,7 +6828,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -6798,6 +6838,11 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "preAfterTest": [ { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -6829,7 +6874,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -6842,6 +6887,11 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -6873,7 +6923,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -6886,6 +6936,11 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -6917,7 +6972,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -6930,6 +6985,11 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` }, { "test": { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -6961,7 +7021,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -6975,6 +7035,11 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` ], "afterTest": [ { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -7007,7 +7072,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7015,6 +7080,11 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "_slow": 250 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -7047,7 +7117,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7055,6 +7125,11 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "_slow": 250 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -7087,7 +7162,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7095,6 +7170,11 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "_slow": 250 }, { + "_cypressTestStatusInfo": { + "shouldAttemptsContinue": false, + "attempts": 1, + "outerStatus": "passed" + }, "_testConfig": { "testConfigList": [], "unverifiedTestConfig": {}, @@ -7127,7 +7207,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7164,7 +7244,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:359: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:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:447: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 ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" }, "retries": -1, "_slow": 250, @@ -7186,7 +7266,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -7217,7 +7297,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -7267,7 +7347,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:359: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:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-1.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:447: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 ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-1.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" }, "retries": -1, "_slow": 250, @@ -7289,7 +7369,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -7320,7 +7400,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:333:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:54:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:115:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, From d38d1f18fe44c74cbc6ab067b7ed8aaca8374548 Mon Sep 17 00:00:00 2001 From: Muaz Othman Date: Thu, 12 Oct 2023 13:30:09 -0500 Subject: [PATCH 19/40] Fix cy-in-cy snapshots --- .../runner/retries.mochaEvents.snapshots.ts | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/packages/app/cypress/e2e/runner/retries.mochaEvents.snapshots.ts b/packages/app/cypress/e2e/runner/retries.mochaEvents.snapshots.ts index ea28149289d3..7404d1303c40 100644 --- a/packages/app/cypress/e2e/runner/retries.mochaEvents.snapshots.ts +++ b/packages/app/cypress/e2e/runner/retries.mochaEvents.snapshots.ts @@ -240,6 +240,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -272,6 +273,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -319,6 +321,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -352,6 +355,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -960,6 +964,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -1013,6 +1018,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -1081,6 +1087,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -1135,6 +1142,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -1764,6 +1772,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -1817,6 +1826,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -1885,6 +1895,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -1939,6 +1950,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -2742,6 +2754,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -2805,6 +2818,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -2883,6 +2897,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -2947,6 +2962,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -3824,6 +3840,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -3880,6 +3897,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -3936,6 +3954,7 @@ export const snapshots = { 'test:before:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -3992,6 +4011,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -4049,6 +4069,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 2, outerStatus: 'passed', @@ -4311,6 +4332,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -4368,6 +4390,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -4425,6 +4448,7 @@ export const snapshots = { 'test:before:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -4482,6 +4506,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -4540,6 +4565,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -4840,6 +4866,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -4904,6 +4931,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -4968,6 +4996,7 @@ export const snapshots = { 'test:before:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -5032,6 +5061,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -5097,6 +5127,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -5964,6 +5995,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -6008,6 +6040,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -6052,6 +6085,7 @@ export const snapshots = { 'test:before:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -6096,6 +6130,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -6141,6 +6176,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -6307,6 +6343,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -6347,6 +6384,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -6402,6 +6440,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -6443,6 +6482,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -6599,6 +6639,7 @@ export const snapshots = { { _cypressTestStatusInfo: { attempts: 1, + strategy: 'detect-flake-and-pass-on-threshold', outerStatus: 'failed', shouldAttemptsContinue: false, }, @@ -7081,6 +7122,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -7135,6 +7177,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -7189,6 +7232,7 @@ export const snapshots = { 'test:before:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -7243,6 +7287,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -7298,6 +7343,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -8102,6 +8148,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -8148,6 +8195,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -8194,6 +8242,7 @@ export const snapshots = { 'test:before:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -8240,6 +8289,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -8287,6 +8337,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'passed', @@ -8500,6 +8551,7 @@ export const snapshots = { 'pass', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -8554,6 +8606,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -8623,6 +8676,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -8678,6 +8732,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 1, outerStatus: 'passed', @@ -9121,6 +9176,7 @@ export const snapshots = { 'fail', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'failed', @@ -9165,6 +9221,7 @@ export const snapshots = { 'test end', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'failed', @@ -9203,6 +9260,7 @@ export const snapshots = { 'test:after:run', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'failed', @@ -9242,6 +9300,7 @@ export const snapshots = { 'test:after:run:async', { _cypressTestStatusInfo: { + strategy: 'detect-flake-and-pass-on-threshold', shouldAttemptsContinue: false, attempts: 3, outerStatus: 'failed', From 13691b59198caa967cb5474ce19dc87e29b8d3ae Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Fri, 13 Oct 2023 12:42:37 -0400 Subject: [PATCH 20/40] update snapshots --- system-tests/__snapshots__/protocol_spec.js | 106 +++++++++++++------- 1 file changed, 70 insertions(+), 36 deletions(-) diff --git a/system-tests/__snapshots__/protocol_spec.js b/system-tests/__snapshots__/protocol_spec.js index f47a817752c1..9f90abeb15bc 100644 --- a/system-tests/__snapshots__/protocol_spec.js +++ b/system-tests/__snapshots__/protocol_spec.js @@ -611,6 +611,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -687,6 +688,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -774,6 +776,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -861,6 +864,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -948,6 +952,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1035,6 +1040,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1122,6 +1128,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1209,6 +1216,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1296,6 +1304,7 @@ exports['e2e events'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1384,6 +1393,7 @@ exports['e2e events'] = ` "afterTest": [ { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1456,6 +1466,7 @@ exports['e2e events'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1539,6 +1550,7 @@ exports['e2e events'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1622,6 +1634,7 @@ exports['e2e events'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1705,6 +1718,7 @@ exports['e2e events'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1788,6 +1802,7 @@ exports['e2e events'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1871,6 +1886,7 @@ exports['e2e events'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -1954,6 +1970,7 @@ exports['e2e events'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -2037,6 +2054,7 @@ exports['e2e events'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5063,7 +5081,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -5092,7 +5110,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -5121,7 +5139,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -5150,7 +5168,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -5161,6 +5179,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5196,7 +5215,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5210,6 +5229,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5245,7 +5265,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5259,6 +5279,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5294,7 +5315,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5308,6 +5329,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5343,7 +5365,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5358,6 +5380,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "afterTest": [ { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5394,7 +5417,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5403,6 +5426,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5439,7 +5463,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5448,6 +5472,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5484,7 +5509,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5493,6 +5518,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -5529,7 +5555,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -5566,7 +5592,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:447: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 ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\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 ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" }, "retries": -1, "_slow": 250, @@ -5588,7 +5614,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -5619,7 +5645,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -5669,7 +5695,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:447: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 ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-1.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\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 ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-1.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" }, "retries": -1, "_slow": 250, @@ -5691,7 +5717,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -5722,7 +5748,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -6741,7 +6767,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -6770,7 +6796,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -6799,7 +6825,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -6828,7 +6854,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": 0, @@ -6839,6 +6865,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -6874,7 +6901,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -6888,6 +6915,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -6923,7 +6951,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -6937,6 +6965,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -6972,7 +7001,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -6986,6 +7015,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` { "test": { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -7021,7 +7051,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7036,6 +7066,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "afterTest": [ { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -7072,7 +7103,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7081,6 +7112,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -7117,7 +7149,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7126,6 +7158,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -7162,7 +7195,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7171,6 +7204,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` }, { "_cypressTestStatusInfo": { + "strategy": "detect-flake-and-pass-on-threshold", "shouldAttemptsContinue": false, "attempts": 1, "outerStatus": "passed" @@ -7207,7 +7241,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "final": true, "currentRetry": 0, @@ -7244,7 +7278,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:447: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 ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\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 ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" }, "retries": -1, "_slow": 250, @@ -7266,7 +7300,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -7297,7 +7331,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-0.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -7347,7 +7381,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addSuite (cypress:///../driver/src/cypress/mocha.ts:447: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 ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-1.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\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 ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-1.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:114:42)" }, "retries": -1, "_slow": 250, @@ -7369,7 +7403,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:17:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, @@ -7400,7 +7434,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 94, "column": 17, "whitespace": " ", - "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:421:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" + "stack": "Error\\n at Object.getInvocationDetails (cypress:///../driver/src/cypress/stack_utils.ts:94:17)\\n at Suite.addTest (cypress:///../driver/src/cypress/mocha.ts:462:85)\\n at context.it.context.specify (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:88:13)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)\\n at Suite. (http://localhost:2121/__cypress/src/spec-1.js:21:3)\\n at Object.create (cypress:///../driver/node_modules/mocha/lib/interfaces/common.js:140:19)\\n at context.describe.context.context (cypress:///../driver/node_modules/mocha/lib/interfaces/bdd.js:41:27)\\n at createRunnable (cypress:///../driver/src/cypress/mocha.ts:126:31)\\n at eval (cypress:///../driver/src/cypress/mocha.ts:187:14)" }, "currentRetry": 0, "retries": -1, From b1c61474c328315a6ccccab9f43c159f6767ce13 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Fri, 13 Oct 2023 13:43:00 -0400 Subject: [PATCH 21/40] bump cache version --- .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 ab3d92891697..13e129256083 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. -10-04-23 +10-13-23 From 2d1df6ca47c721bb96271e1910ffadeef520b4f6 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 18 Oct 2023 09:59:24 -0400 Subject: [PATCH 22/40] chore: ensure legacy retry overrides work; reject exp. retries overrides (#28045) --- packages/driver/src/cy/testConfigOverrides.ts | 12 ++++++++ .../cypress-experimental-retries.config.js | 23 +++++++++++++++ .../cypress-legacy-retries.config.js | 18 ++++++++++++ .../override-with-experimental-retries.cy.js | 29 +++++++++++++++++++ .../e2e/override-with-legacy-retries.cy.js | 16 ++++++++++ system-tests/test/testConfigOverrides_spec.ts | 18 ++++++++++++ 6 files changed, 116 insertions(+) create mode 100644 system-tests/projects/experimental-retries/cypress-experimental-retries.config.js create mode 100644 system-tests/projects/experimental-retries/cypress-legacy-retries.config.js create mode 100644 system-tests/projects/experimental-retries/cypress/e2e/override-with-experimental-retries.cy.js create mode 100644 system-tests/projects/experimental-retries/cypress/e2e/override-with-legacy-retries.cy.js diff --git a/packages/driver/src/cy/testConfigOverrides.ts b/packages/driver/src/cy/testConfigOverrides.ts index 92097243f2aa..b1009a635d9e 100644 --- a/packages/driver/src/cy/testConfigOverrides.ts +++ b/packages/driver/src/cy/testConfigOverrides.ts @@ -167,6 +167,18 @@ export class TestConfigOverride { unverifiedTestConfig: [], } + // TODO: remove when experimental overriding is supported + const experimentalRetryCfgKeys = [ + 'experimentalStrategy', 'experimentalOptions', + ] + + const experimentalRetryConfigAttempted = Object.keys(resolvedTestConfig.unverifiedTestConfig?.retries || {}) + .some((v) => experimentalRetryCfgKeys.includes(v)) + + if (experimentalRetryConfigAttempted) { + throw new Error('Cannot set experimental retries on individual tests') + } + if (Object.keys(resolvedTestConfig.unverifiedTestConfig).length > 0) { this.restoreTestConfigFn = mutateConfiguration(resolvedTestConfig, config, env) } diff --git a/system-tests/projects/experimental-retries/cypress-experimental-retries.config.js b/system-tests/projects/experimental-retries/cypress-experimental-retries.config.js new file mode 100644 index 000000000000..910f7cbbb4a4 --- /dev/null +++ b/system-tests/projects/experimental-retries/cypress-experimental-retries.config.js @@ -0,0 +1,23 @@ +module.exports = { + e2e: { + supportFile: false, + setupNodeEvents (on, config) { + // in the case the tests needed to be debugged: + + // on('before:browser:launch', (browser, launchOptions) => { + // launchOptions.args.push('--auto-open-devtools-for-tabs') + + // return launchOptions + // }) + }, + }, + retries: { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + runMode: true, + openMode: true, + experimentalOptions: { + maxRetries: 3, + passesRequired: 1, + }, + }, +} diff --git a/system-tests/projects/experimental-retries/cypress-legacy-retries.config.js b/system-tests/projects/experimental-retries/cypress-legacy-retries.config.js new file mode 100644 index 000000000000..d5f1b46c2d38 --- /dev/null +++ b/system-tests/projects/experimental-retries/cypress-legacy-retries.config.js @@ -0,0 +1,18 @@ +module.exports = { + e2e: { + supportFile: false, + setupNodeEvents (on, config) { + // in the case the tests needed to be debugged: + + // on('before:browser:launch', (browser, launchOptions) => { + // launchOptions.args.push('--auto-open-devtools-for-tabs') + + // return launchOptions + // }) + }, + }, + retries: { + runMode: 0, + openMode: 0, + }, +} diff --git a/system-tests/projects/experimental-retries/cypress/e2e/override-with-experimental-retries.cy.js b/system-tests/projects/experimental-retries/cypress/e2e/override-with-experimental-retries.cy.js new file mode 100644 index 000000000000..bd38d32d2a16 --- /dev/null +++ b/system-tests/projects/experimental-retries/cypress/e2e/override-with-experimental-retries.cy.js @@ -0,0 +1,29 @@ +describe('overriding legacy retries with experimental retries', () => { + const experimentalStrategy = 'detect-flake-and-pass-on-threshold' + const openMode = false + const runMode = true + const maxRetries = 3 + const passesRequired = 1 + + describe('at the describe level', { + retries: { + experimentalStrategy, + openMode, + runMode, + experimentalOptions: { + maxRetries, + passesRequired, + }, + }, + }, () => { + it('sets the config', () => { + const retries = Cypress.config('retries') + + expect(retries.experimentalStrategy).to.eq(experimentalStrategy) + expect(retries.experimentalOptions?.maxRetries).to.eq(maxRetries) + expect(retries.experimentalOptions?.passesRequired).to.eq(passesRequired) + expect(retries.runMode).to.eq(runMode) + expect(retries.openMode).to.eq(openMode) + }) + }) +}) diff --git a/system-tests/projects/experimental-retries/cypress/e2e/override-with-legacy-retries.cy.js b/system-tests/projects/experimental-retries/cypress/e2e/override-with-legacy-retries.cy.js new file mode 100644 index 000000000000..c9b8c26c1363 --- /dev/null +++ b/system-tests/projects/experimental-retries/cypress/e2e/override-with-legacy-retries.cy.js @@ -0,0 +1,16 @@ +describe('overriding experimental retries with legacy retries', () => { + const openMode = 1 + const runMode = 3 + + it('sets the config', { + retries: { + openMode, + runMode, + }, + }, () => { + const retries = Cypress.config('retries') + + expect(retries.runMode).to.eq(runMode) + expect(retries.openMode).to.eq(openMode) + }) +}) diff --git a/system-tests/test/testConfigOverrides_spec.ts b/system-tests/test/testConfigOverrides_spec.ts index a97b2ab48453..bfafcdc705f4 100644 --- a/system-tests/test/testConfigOverrides_spec.ts +++ b/system-tests/test/testConfigOverrides_spec.ts @@ -83,4 +83,22 @@ describe('testConfigOverrides', () => { expectedExitCode: 1, }) }) + + describe('experimental retries specific behavior', () => { + systemTests.it('fails when attempting to set experimental retries as override', { + spec: 'override-with-experimental-retries.cy.js', + project: 'experimental-retries', + configFile: 'cypress-legacy-retries.config.js', + expectedExitCode: 1, + browser: '!webkit', + }) + + systemTests.it('succeeds when setting legacy retries as an override to experimental retries', { + spec: 'override-with-legacy-retries.cy.js', + project: 'experimental-retries', + configFile: 'cypress-experimental-retries.config.js', + expectedExitCode: 0, + browser: '!webkit', + }) + }) }) From 665db2ef312d97c0f7710f7108f3ac8a2fa897af Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Thu, 19 Oct 2023 13:35:57 -0400 Subject: [PATCH 23/40] update changelog --- cli/CHANGELOG.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index b14da356355c..ae0e1a8c8cf0 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,4 +1,20 @@ +## 13.4.0 + +_Released 10/24/2023 (PENDING)_ + +**Features:** + +- Users can now specify different retry options with the `experimentalRetries` configuration. These configuration options can be useful when detecting flake and figuring out under what conditions you would like to pass a retried test. The `retries` configuration option includes two new keys, `experimentalStrategy` and `experimentalOptions`. The first, `experimentalStrategy`, can be one of two options: + - `detect-flake-and-pass-on-threshold` + - `detect-flake-but-always-fail` + + `detect-flake-and-pass-on-threshold` is similar to how retries work today. Users will be able to specify a retry limit and specify a required number of passes needed in order for that test to be marked as passed. Today, that limit is `1`, but users can set the limit to whatever they'd like with this strategy by specifying the `experimentalOptions.passesRequired` key in their global configuration. This can be useful if a test is retrying and is known to be flaky, but you want to make sure that the test can at least pass a certain threshold in order to be marked as passed overall, which might help in confidence that the test is just flaky and the failure is not considered legitimate. It's important to note that if the `passesRequired` can not be achieved by the remaining retries of the test, the test will stop retrying and the test will be marked as a failure. + + The other, `detect-flake-but-always-fail`, will always mark a test that enters retries as failed, regardless of how many retried attempts pass. There is an option here, called `experimentalOptions.stopIfAnyPassed`, that will stop the test retries if any retry attempt passes. Without this option, you might want to see what the probability that your test might pass (similar to `detect-flake-and-pass-on-threshold`, but mark the test as failed as you might not want to mark any detected flaky test as a passed test. + + Both of these strategies require the `experimentalOptions.maxRetries` option to be set, which will be the maximum number of retries a test might run. Addressed in [#27930](https://github.com/cypress-io/cypress/pull/27930). + ## 13.3.2 _Released 10/18/2023_ @@ -20,18 +36,6 @@ _Released 10/18/2023_ _Released 10/11/2023_ -**Features:** - -- Users can now specify different retry options with the `experimentalRetries` configuration. These configuration options can be useful when detecting flake and figuring out under what conditions you would like to pass a retried test. The `retries` configuration option includes two new keys, `experimentalStrategy` and `experimentalOptions`. The first, `experimentalStrategy`, can be one of two options: - - `detect-flake-and-pass-on-threshold` - - `detect-flake-but-always-fail` - - `detect-flake-and-pass-on-threshold` is similar to how retries work today. Users will be able to specify a retry limit and specify a required number of passes needed in order for that test to be marked as passed. Today, that limit is `1`, but users can set the limit to whatever they'd like with this strategy by specifying the `experimentalOptions.passesRequired` key in their global configuration. This can be useful if a test is retrying and is known to be flaky, but you want to make sure that the test can at least pass a certain threshold in order to be marked as passed overall, which might help in confidence that the test is just flaky and the failure is not considered legitimate. It's important to note that if the `passesRequired` can not be achieved by the remaining retries of the test, the test will stop retrying and the test will be marked as a failure. - - The other, `detect-flake-but-always-fail`, will always mark a test that enters retries as failed, regardless of how many retried attempts pass. There is an option here, called `experimentalOptions.stopIfAnyPassed`, that will stop the test retries if any retry attempt passes. Without this option, you might want to see what the probability that your test might pass (similar to `detect-flake-and-pass-on-threshold`, but mark the test as failed as you might not want to mark any detected flaky test as a passed test. - - Both of these strategies require the `experimentalOptions.maxRetries` option to be set, which will be the maximum number of retries a test might run. Addressed in [#27930](https://github.com/cypress-io/cypress/pull/27930). - **Bugfixes:** - Fixed an issue where requests were correlated in the wrong order in the proxy. This could cause an issue where the wrong request is used for `cy.intercept` or assets (e.g. stylesheets or images) may not properly be available in Test Replay. Addressed in [#27892](https://github.com/cypress-io/cypress/pull/27892). From a488c27995183fa256876c3d4ab8ec38ab055a9a Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Fri, 20 Oct 2023 11:44:27 -0400 Subject: [PATCH 24/40] flip if statement in experimental retries option validation --- packages/config/src/validation.ts | 46 +++++++++++++++---------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/config/src/validation.ts b/packages/config/src/validation.ts index f139e2951f81..19b8e5392c2f 100644 --- a/packages/config/src/validation.ts +++ b/packages/config/src/validation.ts @@ -120,38 +120,38 @@ export const isValidBrowserList = (_key: string, browsers: any): ErrResult | tru } const isValidExperimentalRetryOptionsConfig = (options: any, strategy: 'detect-flake-but-always-fail' | 'detect-flake-and-pass-on-threshold'): boolean => { - if (options != null) { - // retries must be an integer of 1 or greater - const isValidMaxRetries = _.isInteger(options.maxRetries) && options.maxRetries > 0 + if (options === null) return true - if (!isValidMaxRetries) { + // retries must be an integer of 1 or greater + const isValidMaxRetries = _.isInteger(options.maxRetries) && options.maxRetries > 0 + + if (!isValidMaxRetries) { + return false + } + + // if the strategy is 'detect-flake-but-always-fail', stopIfAnyPassed must be provided and must be a boolean + if (strategy === 'detect-flake-but-always-fail') { + if (options.passesRequired !== undefined) { return false } - // if the strategy is 'detect-flake-but-always-fail', stopIfAnyPassed must be provided and must be a boolean - if (strategy === 'detect-flake-but-always-fail') { - if (options.passesRequired !== undefined) { - return false - } + const isValidStopIfAnyPasses = _.isBoolean(options.stopIfAnyPassed) - const isValidStopIfAnyPasses = _.isBoolean(options.stopIfAnyPassed) - - if (!isValidStopIfAnyPasses) { - return false - } + if (!isValidStopIfAnyPasses) { + return false } + } - // if the strategy is 'detect-flake-and-pass-on-threshold', passesRequired must be provided and must be an integer greater than 0 - if (strategy === 'detect-flake-and-pass-on-threshold') { - if (options.stopIfAnyPassed !== undefined) { - return false - } + // if the strategy is 'detect-flake-and-pass-on-threshold', passesRequired must be provided and must be an integer greater than 0 + if (strategy === 'detect-flake-and-pass-on-threshold') { + if (options.stopIfAnyPassed !== undefined) { + return false + } - const isValidPassesRequired = _.isInteger(options.passesRequired) && options.passesRequired > 0 && options.passesRequired <= options.maxRetries + const isValidPassesRequired = _.isInteger(options.passesRequired) && options.passesRequired > 0 && options.passesRequired <= options.maxRetries - if (!isValidPassesRequired) { - return false - } + if (!isValidPassesRequired) { + return false } } From 31e8ba75205bae4f2e839f9db12883d33143f374 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Fri, 20 Oct 2023 12:38:03 -0400 Subject: [PATCH 25/40] refactor invalid experimental retry override for more useful error msg --- packages/driver/src/cy/testConfigOverrides.ts | 28 +- .../testConfigOverrides_spec.ts.js | 246 ++++++++++-------- system-tests/test/testConfigOverrides_spec.ts | 2 + 3 files changed, 149 insertions(+), 127 deletions(-) diff --git a/packages/driver/src/cy/testConfigOverrides.ts b/packages/driver/src/cy/testConfigOverrides.ts index b1009a635d9e..f399a12d109c 100644 --- a/packages/driver/src/cy/testConfigOverrides.ts +++ b/packages/driver/src/cy/testConfigOverrides.ts @@ -52,6 +52,22 @@ function setConfig (testConfig: ResolvedTestConfigOverride, config, localConfigO try { testConfig.applied = overrideLevel + // this is unique validation, not applied to the general cy config. + // it will be removed when we support defining experimental retries + // in test config overrides + + // TODO: remove when experimental overriding is supported + + const experimentalRetryCfgKeys = [ + 'experimentalStrategy', 'experimentalOptions', + ] + + const experimentalRetryConfigAttempted = Object.keys(testConfigOverride.retries || {}) + .filter((v) => experimentalRetryCfgKeys.includes(v)) + + if (experimentalRetryConfigAttempted.length) { + throw new Error(`The following config keys cannot be set per-${overrideLevel}; they must be set globally: ${experimentalRetryConfigAttempted.join(', ')}`) + } config(testConfigOverride) } catch (e: any) { @@ -167,18 +183,6 @@ export class TestConfigOverride { unverifiedTestConfig: [], } - // TODO: remove when experimental overriding is supported - const experimentalRetryCfgKeys = [ - 'experimentalStrategy', 'experimentalOptions', - ] - - const experimentalRetryConfigAttempted = Object.keys(resolvedTestConfig.unverifiedTestConfig?.retries || {}) - .some((v) => experimentalRetryCfgKeys.includes(v)) - - if (experimentalRetryConfigAttempted) { - throw new Error('Cannot set experimental retries on individual tests') - } - if (Object.keys(resolvedTestConfig.unverifiedTestConfig).length > 0) { this.restoreTestConfigFn = mutateConfiguration(resolvedTestConfig, config, env) } diff --git a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js index 54c9d8beee58..b27c0a83397d 100644 --- a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js +++ b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js @@ -15,61 +15,11 @@ exports['testConfigOverrides / fails when passing invalid config value browser'] ──────────────────────────────────────────────────────────────────────────────────────────────────── Running: invalid-browser.js (1 of 1) - - - 1) An uncaught error was detected outside of a test - - 0 passing - 1 failing - - 1) An uncaught error was detected outside of a test: - CypressError: The following error originated from your test code, not from Cypress. - - > Test config value \`{ browser }\` must be passed a string, object, or an array. You passed: \`true\` - -When Cypress detects uncaught errors originating from your test code it will automatically fail the current test. - -Cypress could not associate this error to any specific test. - -We dynamically generated a new test to display this failure. +WebKit was launched, but the experimental feature was not enabled. Please add \`experimentalWebKitSupport: true\` to your config file to launch WebKit. +Error: WebKit was launched, but the experimental feature was not enabled. Please add \`experimentalWebKitSupport: true\` to your config file to launch WebKit. [stack trace lines] - - - (Results) - - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ Tests: 1 β”‚ - β”‚ Passing: 0 β”‚ - β”‚ Failing: 1 β”‚ - β”‚ Pending: 0 β”‚ - β”‚ Skipped: 0 β”‚ - β”‚ Screenshots: 1 β”‚ - β”‚ Video: false β”‚ - β”‚ Duration: X seconds β”‚ - β”‚ Spec Ran: invalid-browser.js β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - - - (Screenshots) - - - /XXX/XXX/XXX/cypress/screenshots/invalid-browser.js/An uncaught error was detect (1280x720) - ed outside of a test (failed).png - - -==================================================================================================== - - (Run Finished) - - - Spec Tests Passing Failing Pending Skipped - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ βœ– invalid-browser.js XX:XX 1 - 1 - - β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - - - ` exports['testConfigOverrides / fails when setting invalid config opt with Cypress.config() in before:test:run'] = ` @@ -128,9 +78,9 @@ exports['testConfigOverrides / fails when setting invalid config opt with Cypres (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_event.js/does not run (fail (1280x720) + - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_event.js/does not run (fail (2560x1440) ed).png - - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_event.js/nested -- does not (1280x720) + - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_event.js/nested -- does not (2560x1440) run 2 (failed).png @@ -204,9 +154,9 @@ exports['testConfigOverrides / fails when setting invalid config opt with Cypres (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_async_event.js/does not run (1280x720) + - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_async_event.js/does not run (2560x1440) (failed).png - - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_async_event.js/nested -- do (1280x720) + - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_async_event.js/nested -- do (2560x1440) es not run 2 (failed).png @@ -826,65 +776,6 @@ exports['testConfigOverrides / has originalTitle when skipped due to browser con βœ” All specs passed! XX:XX 2 - - 2 - -` - -exports['testConfigOverrides / maintains runnable body when skipped due to browser config'] = ` - -==================================================================================================== - - (Run Starting) - - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ Cypress: 1.2.3 β”‚ - β”‚ Browser: FooBrowser 88 β”‚ - β”‚ Specs: 1 found (skip-browser.js) β”‚ - β”‚ Searched: cypress/e2e/testConfigOverrides/skip-browser.js β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - - -──────────────────────────────────────────────────────────────────────────────────────────────────── - - Running: skip-browser.js (1 of 1) - - - suite - - is skipped due to test-level browser override (skipped due to browser) - - suite 2 (skipped due to browser) - - is skipped due to suite-level browser override - - - 0 passing - 2 pending - - - (Results) - - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ Tests: 2 β”‚ - β”‚ Passing: 0 β”‚ - β”‚ Failing: 0 β”‚ - β”‚ Pending: 2 β”‚ - β”‚ Skipped: 0 β”‚ - β”‚ Screenshots: 0 β”‚ - β”‚ Video: false β”‚ - β”‚ Duration: X seconds β”‚ - β”‚ Spec Ran: skip-browser.js β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - - -==================================================================================================== - - (Run Finished) - - - Spec Tests Passing Failing Pending Skipped - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ βœ” skip-browser.js XX:XX 2 - - 2 - β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - βœ” All specs passed! XX:XX 2 - - 2 - - - ` exports['testConfigOverrides / fails when passing invalid config values - [firefox]'] = ` @@ -1354,3 +1245,128 @@ https://on.cypress.io/config ` + +exports['testConfigOverrides / experimental retries specific behavior / fails when attempting to set experimental retries as override'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (override-with-experimental-retries.cy.js) β”‚ + β”‚ Searched: cypress/e2e/override-with-experimental-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: override-with-experimental-retries.cy.js (1 of 1) + + + overriding legacy retries with experimental retries + at the describe level + 1) sets the config + + + 0 passing + 1 failing + + 1) overriding legacy retries with experimental retries + at the describe level + sets the config: + CypressError: The config passed to your suite-level overrides has the following validation error: + +The following config keys cannot be set per-suite; they must be set globally: experimentalStrategy,experimentalOptions + +https://on.cypress.io/config + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: override-with-experimental-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– override-with-experimental-retries. XX:XX 1 - 1 - - β”‚ + β”‚ cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - + + +` + +exports['testConfigOverrides / experimental retries specific behavior / succeeds when setting legacy retries as an override to experimental retries'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (override-with-legacy-retries.cy.js) β”‚ + β”‚ Searched: cypress/e2e/override-with-legacy-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: override-with-legacy-retries.cy.js (1 of 1) + + + overriding experimental retries with legacy retries + βœ“ sets the config + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: override-with-legacy-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” override-with-legacy-retries.cy.js XX:XX 1 1 - - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ” All specs passed! XX:XX 1 1 - - - + + +` diff --git a/system-tests/test/testConfigOverrides_spec.ts b/system-tests/test/testConfigOverrides_spec.ts index bfafcdc705f4..eee826b02a3f 100644 --- a/system-tests/test/testConfigOverrides_spec.ts +++ b/system-tests/test/testConfigOverrides_spec.ts @@ -91,6 +91,7 @@ describe('testConfigOverrides', () => { configFile: 'cypress-legacy-retries.config.js', expectedExitCode: 1, browser: '!webkit', + snapshot: true, }) systemTests.it('succeeds when setting legacy retries as an override to experimental retries', { @@ -99,6 +100,7 @@ describe('testConfigOverrides', () => { configFile: 'cypress-experimental-retries.config.js', expectedExitCode: 0, browser: '!webkit', + snapshot: true, }) }) }) From d71a46cf2c1d884ef4ab5badd8f0575a8f28b404 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Fri, 20 Oct 2023 15:03:04 -0400 Subject: [PATCH 26/40] revert testConfigOverrides snapshot --- .../testConfigOverrides_spec.ts.js | 246 ++++++++---------- 1 file changed, 115 insertions(+), 131 deletions(-) diff --git a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js index b27c0a83397d..54c9d8beee58 100644 --- a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js +++ b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js @@ -15,11 +15,61 @@ exports['testConfigOverrides / fails when passing invalid config value browser'] ──────────────────────────────────────────────────────────────────────────────────────────────────── Running: invalid-browser.js (1 of 1) -WebKit was launched, but the experimental feature was not enabled. Please add \`experimentalWebKitSupport: true\` to your config file to launch WebKit. -Error: WebKit was launched, but the experimental feature was not enabled. Please add \`experimentalWebKitSupport: true\` to your config file to launch WebKit. + + + 1) An uncaught error was detected outside of a test + + 0 passing + 1 failing + + 1) An uncaught error was detected outside of a test: + CypressError: The following error originated from your test code, not from Cypress. + + > Test config value \`{ browser }\` must be passed a string, object, or an array. You passed: \`true\` + +When Cypress detects uncaught errors originating from your test code it will automatically fail the current test. + +Cypress could not associate this error to any specific test. + +We dynamically generated a new test to display this failure. [stack trace lines] + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 1 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: invalid-browser.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + + (Screenshots) + + - /XXX/XXX/XXX/cypress/screenshots/invalid-browser.js/An uncaught error was detect (1280x720) + ed outside of a test (failed).png + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– invalid-browser.js XX:XX 1 - 1 - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - + + ` exports['testConfigOverrides / fails when setting invalid config opt with Cypress.config() in before:test:run'] = ` @@ -78,9 +128,9 @@ exports['testConfigOverrides / fails when setting invalid config opt with Cypres (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_event.js/does not run (fail (2560x1440) + - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_event.js/does not run (fail (1280x720) ed).png - - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_event.js/nested -- does not (2560x1440) + - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_event.js/nested -- does not (1280x720) run 2 (failed).png @@ -154,9 +204,9 @@ exports['testConfigOverrides / fails when setting invalid config opt with Cypres (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_async_event.js/does not run (2560x1440) + - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_async_event.js/does not run (1280x720) (failed).png - - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_async_event.js/nested -- do (2560x1440) + - /XXX/XXX/XXX/cypress/screenshots/invalid_before_test_async_event.js/nested -- do (1280x720) es not run 2 (failed).png @@ -776,6 +826,65 @@ exports['testConfigOverrides / has originalTitle when skipped due to browser con βœ” All specs passed! XX:XX 2 - - 2 - +` + +exports['testConfigOverrides / maintains runnable body when skipped due to browser config'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (skip-browser.js) β”‚ + β”‚ Searched: cypress/e2e/testConfigOverrides/skip-browser.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: skip-browser.js (1 of 1) + + + suite + - is skipped due to test-level browser override (skipped due to browser) + + suite 2 (skipped due to browser) + - is skipped due to suite-level browser override + + + 0 passing + 2 pending + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 2 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: skip-browser.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” skip-browser.js XX:XX 2 - - 2 - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ” All specs passed! XX:XX 2 - - 2 - + + ` exports['testConfigOverrides / fails when passing invalid config values - [firefox]'] = ` @@ -1245,128 +1354,3 @@ https://on.cypress.io/config ` - -exports['testConfigOverrides / experimental retries specific behavior / fails when attempting to set experimental retries as override'] = ` - -==================================================================================================== - - (Run Starting) - - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ Cypress: 1.2.3 β”‚ - β”‚ Browser: FooBrowser 88 β”‚ - β”‚ Specs: 1 found (override-with-experimental-retries.cy.js) β”‚ - β”‚ Searched: cypress/e2e/override-with-experimental-retries.cy.js β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - - -──────────────────────────────────────────────────────────────────────────────────────────────────── - - Running: override-with-experimental-retries.cy.js (1 of 1) - - - overriding legacy retries with experimental retries - at the describe level - 1) sets the config - - - 0 passing - 1 failing - - 1) overriding legacy retries with experimental retries - at the describe level - sets the config: - CypressError: The config passed to your suite-level overrides has the following validation error: - -The following config keys cannot be set per-suite; they must be set globally: experimentalStrategy,experimentalOptions - -https://on.cypress.io/config - [stack trace lines] - - - - - (Results) - - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ Tests: 1 β”‚ - β”‚ Passing: 0 β”‚ - β”‚ Failing: 1 β”‚ - β”‚ Pending: 0 β”‚ - β”‚ Skipped: 0 β”‚ - β”‚ Screenshots: 0 β”‚ - β”‚ Video: false β”‚ - β”‚ Duration: X seconds β”‚ - β”‚ Spec Ran: override-with-experimental-retries.cy.js β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - - -==================================================================================================== - - (Run Finished) - - - Spec Tests Passing Failing Pending Skipped - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ βœ– override-with-experimental-retries. XX:XX 1 - 1 - - β”‚ - β”‚ cy.js β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - - - -` - -exports['testConfigOverrides / experimental retries specific behavior / succeeds when setting legacy retries as an override to experimental retries'] = ` - -==================================================================================================== - - (Run Starting) - - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ Cypress: 1.2.3 β”‚ - β”‚ Browser: FooBrowser 88 β”‚ - β”‚ Specs: 1 found (override-with-legacy-retries.cy.js) β”‚ - β”‚ Searched: cypress/e2e/override-with-legacy-retries.cy.js β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - - -──────────────────────────────────────────────────────────────────────────────────────────────────── - - Running: override-with-legacy-retries.cy.js (1 of 1) - - - overriding experimental retries with legacy retries - βœ“ sets the config - - - 1 passing - - - (Results) - - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ Tests: 1 β”‚ - β”‚ Passing: 1 β”‚ - β”‚ Failing: 0 β”‚ - β”‚ Pending: 0 β”‚ - β”‚ Skipped: 0 β”‚ - β”‚ Screenshots: 0 β”‚ - β”‚ Video: false β”‚ - β”‚ Duration: X seconds β”‚ - β”‚ Spec Ran: override-with-legacy-retries.cy.js β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - - -==================================================================================================== - - (Run Finished) - - - Spec Tests Passing Failing Pending Skipped - β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ βœ” override-with-legacy-retries.cy.js XX:XX 1 1 - - - β”‚ - β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - βœ” All specs passed! XX:XX 1 1 - - - - - -` From 6e589f8bdac811b2660fb464dd9f3752237c40f9 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Fri, 20 Oct 2023 16:20:05 -0400 Subject: [PATCH 27/40] update snapshots for test override sys test --- .../testConfigOverrides_spec.ts.js | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js index 54c9d8beee58..e26e54c693a8 100644 --- a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js +++ b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js @@ -1354,3 +1354,128 @@ https://on.cypress.io/config ` + +exports['testConfigOverrides / experimental retries specific behavior / fails when attempting to set experimental retries as override'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (override-with-experimental-retries.cy.js) β”‚ + β”‚ Searched: cypress/e2e/override-with-experimental-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: override-with-experimental-retries.cy.js (1 of 1) + + + overriding legacy retries with experimental retries + at the describe level + 1) sets the config + + + 0 passing + 1 failing + + 1) overriding legacy retries with experimental retries + at the describe level + sets the config: + CypressError: The config passed to your suite-level overrides has the following validation error: + +The following config keys cannot be set per-suite; they must be set globally: experimentalStrategy, experimentalOptions + +https://on.cypress.io/config + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 1 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: override-with-experimental-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– override-with-experimental-retries. XX:XX 1 - 1 - - β”‚ + β”‚ cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - + + +` + +exports['testConfigOverrides / experimental retries specific behavior / succeeds when setting legacy retries as an override to experimental retries'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (override-with-legacy-retries.cy.js) β”‚ + β”‚ Searched: cypress/e2e/override-with-legacy-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: override-with-legacy-retries.cy.js (1 of 1) + + + overriding experimental retries with legacy retries + βœ“ sets the config + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: override-with-legacy-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” override-with-legacy-retries.cy.js XX:XX 1 1 - - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ” All specs passed! XX:XX 1 1 - - - + + +` From 48c6734b2956ed3c594ed5c3856ea1325d25a478 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Fri, 20 Oct 2023 16:51:55 -0400 Subject: [PATCH 28/40] Update packages/config/src/validation.ts Co-authored-by: Chris Breiding --- packages/config/src/validation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/config/src/validation.ts b/packages/config/src/validation.ts index 19b8e5392c2f..27b385aa3664 100644 --- a/packages/config/src/validation.ts +++ b/packages/config/src/validation.ts @@ -120,7 +120,7 @@ export const isValidBrowserList = (_key: string, browsers: any): ErrResult | tru } const isValidExperimentalRetryOptionsConfig = (options: any, strategy: 'detect-flake-but-always-fail' | 'detect-flake-and-pass-on-threshold'): boolean => { - if (options === null) return true + if (options == null) return true // retries must be an integer of 1 or greater const isValidMaxRetries = _.isInteger(options.maxRetries) && options.maxRetries > 0 From e89d8217bb1218336331c98eaa6fe37e12e57468 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 23 Oct 2023 10:24:25 -0400 Subject: [PATCH 29/40] succinct changelog entry; links to docs for details --- cli/CHANGELOG.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index ae0e1a8c8cf0..cc46ccee1f7e 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -5,15 +5,7 @@ _Released 10/24/2023 (PENDING)_ **Features:** -- Users can now specify different retry options with the `experimentalRetries` configuration. These configuration options can be useful when detecting flake and figuring out under what conditions you would like to pass a retried test. The `retries` configuration option includes two new keys, `experimentalStrategy` and `experimentalOptions`. The first, `experimentalStrategy`, can be one of two options: - - `detect-flake-and-pass-on-threshold` - - `detect-flake-but-always-fail` - - `detect-flake-and-pass-on-threshold` is similar to how retries work today. Users will be able to specify a retry limit and specify a required number of passes needed in order for that test to be marked as passed. Today, that limit is `1`, but users can set the limit to whatever they'd like with this strategy by specifying the `experimentalOptions.passesRequired` key in their global configuration. This can be useful if a test is retrying and is known to be flaky, but you want to make sure that the test can at least pass a certain threshold in order to be marked as passed overall, which might help in confidence that the test is just flaky and the failure is not considered legitimate. It's important to note that if the `passesRequired` can not be achieved by the remaining retries of the test, the test will stop retrying and the test will be marked as a failure. - - The other, `detect-flake-but-always-fail`, will always mark a test that enters retries as failed, regardless of how many retried attempts pass. There is an option here, called `experimentalOptions.stopIfAnyPassed`, that will stop the test retries if any retry attempt passes. Without this option, you might want to see what the probability that your test might pass (similar to `detect-flake-and-pass-on-threshold`, but mark the test as failed as you might not want to mark any detected flaky test as a passed test. - - Both of these strategies require the `experimentalOptions.maxRetries` option to be set, which will be the maximum number of retries a test might run. Addressed in [#27930](https://github.com/cypress-io/cypress/pull/27930). +- Introduces experimental configuration options for advanced retry logic: adds `experimentalStrategy` and `experimentalOptions` keys to the `retry` configuration key. See [Experimental Flake Detection Features](https://docs.cypress.io/guides/references/experiments/#Experimental-Flake-Detection-Features) in the documentation. Addressed in [#27930](https://github.com/cypress-io/cypress/pull/27930). ## 13.3.2 From 067c265f421fb893aeb973549e3d34cabc049fe7 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 23 Oct 2023 11:13:48 -0400 Subject: [PATCH 30/40] testConfigOverride system test snapshots --- system-tests/__snapshots__/testConfigOverrides_spec.ts.js | 1 + 1 file changed, 1 insertion(+) diff --git a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js index e26e54c693a8..37fc63f715c3 100644 --- a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js +++ b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js @@ -1390,6 +1390,7 @@ exports['testConfigOverrides / experimental retries specific behavior / fails wh The following config keys cannot be set per-suite; they must be set globally: experimentalStrategy, experimentalOptions https://on.cypress.io/config + Error [stack trace lines] From 4b0f9a24598e8e557f1555188d7d1422b8bf9dc9 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 23 Oct 2023 12:49:07 -0400 Subject: [PATCH 31/40] Update .github/workflows/update_v8_snapshot_cache.yml Co-authored-by: Ryan Manuel --- .github/workflows/update_v8_snapshot_cache.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/update_v8_snapshot_cache.yml b/.github/workflows/update_v8_snapshot_cache.yml index 77e43ac01d61..f2a9572a2a02 100644 --- a/.github/workflows/update_v8_snapshot_cache.yml +++ b/.github/workflows/update_v8_snapshot_cache.yml @@ -8,7 +8,6 @@ on: push: branches: - 'release/**' - - 'feature/experimental-retries' workflow_dispatch: inputs: branch: From 386af088a80be8b8b278e81417f9cda4272ca44b Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 23 Oct 2023 12:49:15 -0400 Subject: [PATCH 32/40] Update cli/CHANGELOG.md Co-authored-by: Ryan Manuel --- cli/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index cc46ccee1f7e..9c06ab63d219 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -5,7 +5,7 @@ _Released 10/24/2023 (PENDING)_ **Features:** -- Introduces experimental configuration options for advanced retry logic: adds `experimentalStrategy` and `experimentalOptions` keys to the `retry` configuration key. See [Experimental Flake Detection Features](https://docs.cypress.io/guides/references/experiments/#Experimental-Flake-Detection-Features) in the documentation. Addressed in [#27930](https://github.com/cypress-io/cypress/pull/27930). +- Introduced experimental configuration options for advanced retry logic: adds `experimentalStrategy` and `experimentalOptions` keys to the `retry` configuration key. See [Experimental Flake Detection Features](https://docs.cypress.io/guides/references/experiments/#Experimental-Flake-Detection-Features) in the documentation. Addressed in [#27930](https://github.com/cypress-io/cypress/pull/27930). ## 13.3.2 From 0800b5f58b12487132044636a6b40ece15c91c57 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 23 Oct 2023 12:49:56 -0400 Subject: [PATCH 33/40] Update packages/driver/src/cypress.ts Co-authored-by: Ryan Manuel --- packages/driver/src/cypress.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/driver/src/cypress.ts b/packages/driver/src/cypress.ts index ddc6c128a52c..279b8b9ebb14 100644 --- a/packages/driver/src/cypress.ts +++ b/packages/driver/src/cypress.ts @@ -280,7 +280,7 @@ class $Cypress { if (_.isObject(testRetries)) { const retriesAsNumberOrBoolean = testRetries[this.config('isInteractive') ? 'openMode' : 'runMode'] - // If experimentalRetries are configured, a experimentalStrategy is present, and the retries configured is a boolean + // If experimentalRetries are configured, an experimentalStrategy is present, and the retries configured is a boolean // then we need to set the mocha '_retries' to 'maxRetries' present in the 'experimentalOptions' configuration. if (testRetries['experimentalStrategy'] && _.isBoolean(retriesAsNumberOrBoolean) && retriesAsNumberOrBoolean) { return testRetries['experimentalOptions'].maxRetries From 711b54863f02cc17f65eb4916cb55df88923c471 Mon Sep 17 00:00:00 2001 From: Matthew Schile Date: Mon, 23 Oct 2023 10:58:58 -0600 Subject: [PATCH 34/40] updating cache-version --- .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 27ba28bd197a..c0830c55590f 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. -10-18-23 +10-23-23 From b459aba882a16e64caf2b6d4f9326c875106cdd2 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 23 Oct 2023 13:26:31 -0400 Subject: [PATCH 35/40] improve typescript usage when appending experimental retry options to experiments in Experimenets.vue --- .../app/src/settings/project/Experiments.vue | 33 +++++++++++-------- .../src/settings/project/projectSettings.ts | 6 ++-- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/app/src/settings/project/Experiments.vue b/packages/app/src/settings/project/Experiments.vue index b86489197e18..426a78e68375 100644 --- a/packages/app/src/settings/project/Experiments.vue +++ b/packages/app/src/settings/project/Experiments.vue @@ -39,7 +39,7 @@ import SettingsSection from '../SettingsSection.vue' import ExternalLink from '@cy/gql-components/ExternalLink.vue' import type { ExperimentsFragment } from '../../generated/graphql' import { useI18n } from '@cy/i18n' -import type { CypressResolvedConfig } from './projectSettings' +import type { CypressResolvedConfig, CypressConfigEntry } from './projectSettings' const { t } = useI18n() gql` @@ -55,24 +55,31 @@ const props = defineProps<{ const localExperiments = computed(() => { // get experiments out of the config - const experimentalConfigurations = props.gql?.config ? (props.gql.config as CypressResolvedConfig).filter((item) => item.field.startsWith('experimental')) : [] + const cfg = (props.gql?.config || []) as CypressResolvedConfig + + const experimentalConfigurations = cfg.filter((item) => item.field.startsWith('experimental')) // get experimental retry properties on the 'retries' config object. Mutate the experimentalConfigurations array as to not have side effects with props.gql.config // TODO: remove this once experimentalRetries becomes GA. This is to be treated as a one off as supported nested experiments inside config is rare. - const { value: { experimentalStrategy, experimentalOptions, from } } = props.gql?.config.find((item) => item.field === 'retries') + // const { value: { experimentalStrategy, experimentalOptions, from } } + const retryConfig = cfg.find((item) => item.field === 'retries') - experimentalConfigurations.push({ - field: 'retries.experimentalStrategy', - from, - value: experimentalStrategy, - }) + if (retryConfig) { + const { value: { experimentalStrategy, experimentalOptions, from } } = retryConfig as CypressConfigEntry & { value: Record } - experimentalConfigurations.push({ - field: 'retries.experimentalOptions', - from, - value: experimentalOptions, - }) + experimentalConfigurations.push({ + field: 'retries.experimentalStrategy', + from, + value: experimentalStrategy, + }) + + experimentalConfigurations.push({ + field: 'retries.experimentalOptions', + from, + value: experimentalOptions, + }) // end TODO removal + } return experimentalConfigurations.map((configItem) => { return { diff --git a/packages/app/src/settings/project/projectSettings.ts b/packages/app/src/settings/project/projectSettings.ts index 317d5cc33bc7..18cd7e4935c5 100644 --- a/packages/app/src/settings/project/projectSettings.ts +++ b/packages/app/src/settings/project/projectSettings.ts @@ -15,8 +15,10 @@ export interface Experiment { key: string } -export type CypressResolvedConfig = Array<{ +export type CypressConfigEntry = { field: string from: 'default'| 'config' | 'plugin' | 'env' value: string | number | boolean | Record | Array -}> +} + +export type CypressResolvedConfig = Array From 9c540138c0ae49c0c23743bd7f62aef92ae529bb Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 23 Oct 2023 15:02:47 -0400 Subject: [PATCH 36/40] Revert "improve typescript usage when appending experimental retry options to experiments in Experimenets.vue" This reverts commit b459aba882a16e64caf2b6d4f9326c875106cdd2. --- .../app/src/settings/project/Experiments.vue | 33 ++++++++----------- .../src/settings/project/projectSettings.ts | 6 ++-- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/packages/app/src/settings/project/Experiments.vue b/packages/app/src/settings/project/Experiments.vue index 426a78e68375..b86489197e18 100644 --- a/packages/app/src/settings/project/Experiments.vue +++ b/packages/app/src/settings/project/Experiments.vue @@ -39,7 +39,7 @@ import SettingsSection from '../SettingsSection.vue' import ExternalLink from '@cy/gql-components/ExternalLink.vue' import type { ExperimentsFragment } from '../../generated/graphql' import { useI18n } from '@cy/i18n' -import type { CypressResolvedConfig, CypressConfigEntry } from './projectSettings' +import type { CypressResolvedConfig } from './projectSettings' const { t } = useI18n() gql` @@ -55,31 +55,24 @@ const props = defineProps<{ const localExperiments = computed(() => { // get experiments out of the config - const cfg = (props.gql?.config || []) as CypressResolvedConfig - - const experimentalConfigurations = cfg.filter((item) => item.field.startsWith('experimental')) + const experimentalConfigurations = props.gql?.config ? (props.gql.config as CypressResolvedConfig).filter((item) => item.field.startsWith('experimental')) : [] // get experimental retry properties on the 'retries' config object. Mutate the experimentalConfigurations array as to not have side effects with props.gql.config // TODO: remove this once experimentalRetries becomes GA. This is to be treated as a one off as supported nested experiments inside config is rare. - // const { value: { experimentalStrategy, experimentalOptions, from } } - const retryConfig = cfg.find((item) => item.field === 'retries') - - if (retryConfig) { - const { value: { experimentalStrategy, experimentalOptions, from } } = retryConfig as CypressConfigEntry & { value: Record } + const { value: { experimentalStrategy, experimentalOptions, from } } = props.gql?.config.find((item) => item.field === 'retries') - experimentalConfigurations.push({ - field: 'retries.experimentalStrategy', - from, - value: experimentalStrategy, - }) + experimentalConfigurations.push({ + field: 'retries.experimentalStrategy', + from, + value: experimentalStrategy, + }) - experimentalConfigurations.push({ - field: 'retries.experimentalOptions', - from, - value: experimentalOptions, - }) + experimentalConfigurations.push({ + field: 'retries.experimentalOptions', + from, + value: experimentalOptions, + }) // end TODO removal - } return experimentalConfigurations.map((configItem) => { return { diff --git a/packages/app/src/settings/project/projectSettings.ts b/packages/app/src/settings/project/projectSettings.ts index 18cd7e4935c5..317d5cc33bc7 100644 --- a/packages/app/src/settings/project/projectSettings.ts +++ b/packages/app/src/settings/project/projectSettings.ts @@ -15,10 +15,8 @@ export interface Experiment { key: string } -export type CypressConfigEntry = { +export type CypressResolvedConfig = Array<{ field: string from: 'default'| 'config' | 'plugin' | 'env' value: string | number | boolean | Record | Array -} - -export type CypressResolvedConfig = Array +}> From 577ae4938cf245d95987ae4f9a5eadaec4b5d49d Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 24 Oct 2023 10:22:20 -0400 Subject: [PATCH 37/40] refactor test config override validation for experimental retry subkeys --- packages/config/src/browser.ts | 20 +++++++++++++++ packages/driver/src/cy/testConfigOverrides.ts | 16 ------------ packages/driver/src/cypress/error_messages.ts | 4 +++ packages/driver/src/util/config.ts | 4 ++- .../testConfigOverrides_spec.ts.js | 25 +++++++++++++------ .../override-with-experimental-retries.cy.js | 22 ++++++++++++++++ system-tests/test/testConfigOverrides_spec.ts | 2 +- 7 files changed, 68 insertions(+), 25 deletions(-) diff --git a/packages/config/src/browser.ts b/packages/config/src/browser.ts index 10bcbbd33588..07018ab7c3c7 100644 --- a/packages/config/src/browser.ts +++ b/packages/config/src/browser.ts @@ -197,6 +197,26 @@ export const validateOverridableAtRunTime = (config: any, isSuiteLevelOverride: return } + // this is unique validation, not applied to the general cy config. + // it will be removed when we support defining experimental retries + // in test config overrides + + // TODO: remove when experimental retry overriding is supported + + if (configKey === 'retries') { + const experimentalRetryCfgKeys = [ + 'experimentalStrategy', 'experimentalOptions', + ] + + Object.keys(config.retries || {}) + .filter((v) => experimentalRetryCfgKeys.includes(v)) + .forEach((invalidExperimentalCfgOverride) => { + onErr({ + invalidConfigKey: `retries.${invalidExperimentalCfgOverride}`, + supportedOverrideLevel: 'global_only', + }) + }) + } // TODO: add a hook to ensure valid testing-type configuration is being set at runtime for all configuration values. // https://github.com/cypress-io/cypress/issues/24365 diff --git a/packages/driver/src/cy/testConfigOverrides.ts b/packages/driver/src/cy/testConfigOverrides.ts index f399a12d109c..92097243f2aa 100644 --- a/packages/driver/src/cy/testConfigOverrides.ts +++ b/packages/driver/src/cy/testConfigOverrides.ts @@ -52,22 +52,6 @@ function setConfig (testConfig: ResolvedTestConfigOverride, config, localConfigO try { testConfig.applied = overrideLevel - // this is unique validation, not applied to the general cy config. - // it will be removed when we support defining experimental retries - // in test config overrides - - // TODO: remove when experimental overriding is supported - - const experimentalRetryCfgKeys = [ - 'experimentalStrategy', 'experimentalOptions', - ] - - const experimentalRetryConfigAttempted = Object.keys(testConfigOverride.retries || {}) - .filter((v) => experimentalRetryCfgKeys.includes(v)) - - if (experimentalRetryConfigAttempted.length) { - throw new Error(`The following config keys cannot be set per-${overrideLevel}; they must be set globally: ${experimentalRetryConfigAttempted.join(', ')}`) - } config(testConfigOverride) } catch (e: any) { diff --git a/packages/driver/src/cypress/error_messages.ts b/packages/driver/src/cypress/error_messages.ts index cd65fc93b9a8..eafe770c003f 100644 --- a/packages/driver/src/cypress/error_messages.ts +++ b/packages/driver/src/cypress/error_messages.ts @@ -272,6 +272,10 @@ export default { message: `The \`{{invalidConfigKey}}\` configuration can only be overridden from a suite-level override.`, docsUrl: 'https://on.cypress.io/config', }, + global_only: { + message: `The \`{{invalidConfigKey}}\` configuration can only be set globally.`, + docsUrl: 'https://on.cypress.io/config', + }, }, invalid_test_override: { message: `The config passed to your {{overrideLevel}}-level overrides has the following validation error:\n\n{{errMsg}}`, diff --git a/packages/driver/src/util/config.ts b/packages/driver/src/util/config.ts index 7c622a011672..950a41fdf130 100644 --- a/packages/driver/src/util/config.ts +++ b/packages/driver/src/util/config.ts @@ -103,7 +103,9 @@ export const validateConfig = (state: State, config: Record, skipCo validateOverridableAtRunTime(config, isSuiteOverride, (validationResult) => { let errKey = 'config.cypress_config_api.read_only' - if (validationResult.supportedOverrideLevel === 'suite') { + if (validationResult.supportedOverrideLevel === 'global_only') { + errKey = 'config.invalid_mocha_config_override.global_only' + } else if (validationResult.supportedOverrideLevel === 'suite') { errKey = 'config.invalid_mocha_config_override.suite_only' } else if (mochaOverrideLevel) { errKey = 'config.invalid_mocha_config_override.read_only' diff --git a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js index 37fc63f715c3..70267c1ed1c2 100644 --- a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js +++ b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js @@ -1377,20 +1377,31 @@ exports['testConfigOverrides / experimental retries specific behavior / fails wh overriding legacy retries with experimental retries at the describe level 1) sets the config + at the test level + 2) sets the config 0 passing - 1 failing + 2 failing 1) overriding legacy retries with experimental retries at the describe level sets the config: CypressError: The config passed to your suite-level overrides has the following validation error: -The following config keys cannot be set per-suite; they must be set globally: experimentalStrategy, experimentalOptions +CypressError: The \`retries.experimentalStrategy\` configuration can only be set globally. + +https://on.cypress.io/config + [stack trace lines] + + 2) overriding legacy retries with experimental retries + at the test level + sets the config: + CypressError: The config passed to your test-level overrides has the following validation error: + +CypressError: The \`retries.experimentalStrategy\` configuration can only be set globally. https://on.cypress.io/config - Error [stack trace lines] @@ -1399,9 +1410,9 @@ https://on.cypress.io/config (Results) β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ Tests: 1 β”‚ + β”‚ Tests: 2 β”‚ β”‚ Passing: 0 β”‚ - β”‚ Failing: 1 β”‚ + β”‚ Failing: 2 β”‚ β”‚ Pending: 0 β”‚ β”‚ Skipped: 0 β”‚ β”‚ Screenshots: 0 β”‚ @@ -1418,10 +1429,10 @@ https://on.cypress.io/config Spec Tests Passing Failing Pending Skipped β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” - β”‚ βœ– override-with-experimental-retries. XX:XX 1 - 1 - - β”‚ + β”‚ βœ– override-with-experimental-retries. XX:XX 2 - 2 - - β”‚ β”‚ cy.js β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ - βœ– 1 of 1 failed (100%) XX:XX 1 - 1 - - + βœ– 1 of 1 failed (100%) XX:XX 2 - 2 - - ` diff --git a/system-tests/projects/experimental-retries/cypress/e2e/override-with-experimental-retries.cy.js b/system-tests/projects/experimental-retries/cypress/e2e/override-with-experimental-retries.cy.js index bd38d32d2a16..d5e10ae32341 100644 --- a/system-tests/projects/experimental-retries/cypress/e2e/override-with-experimental-retries.cy.js +++ b/system-tests/projects/experimental-retries/cypress/e2e/override-with-experimental-retries.cy.js @@ -26,4 +26,26 @@ describe('overriding legacy retries with experimental retries', () => { expect(retries.openMode).to.eq(openMode) }) }) + + describe('at the test level', () => { + it('sets the config', { + retries: { + experimentalStrategy, + openMode, + runMode, + experimentalOptions: { + maxRetries, + passesRequired, + }, + }, + }, () => { + const retries = Cypress.config('retries') + + expect(retries.experimentalStrategy).to.eq(experimentalStrategy) + expect(retries.experimentalOptions?.maxRetries).to.eq(maxRetries) + expect(retries.experimentalOptions?.passesRequired).to.eq(passesRequired) + expect(retries.runMode).to.eq(runMode) + expect(retries.openMode).to.eq(openMode) + }) + }) }) diff --git a/system-tests/test/testConfigOverrides_spec.ts b/system-tests/test/testConfigOverrides_spec.ts index eee826b02a3f..f16d6e311b10 100644 --- a/system-tests/test/testConfigOverrides_spec.ts +++ b/system-tests/test/testConfigOverrides_spec.ts @@ -89,7 +89,7 @@ describe('testConfigOverrides', () => { spec: 'override-with-experimental-retries.cy.js', project: 'experimental-retries', configFile: 'cypress-legacy-retries.config.js', - expectedExitCode: 1, + expectedExitCode: 2, browser: '!webkit', snapshot: true, }) From 1a17cad4dfe999723a4e67aa4fb6076db6d67199 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Tue, 24 Oct 2023 13:43:19 -0400 Subject: [PATCH 38/40] account for error throw differences in browsers in system tests --- .../testConfigOverrides_spec.ts.js | 143 +++++++++++++++++- system-tests/test/testConfigOverrides_spec.ts | 34 ++--- 2 files changed, 158 insertions(+), 19 deletions(-) diff --git a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js index 70267c1ed1c2..9358807ec384 100644 --- a/system-tests/__snapshots__/testConfigOverrides_spec.ts.js +++ b/system-tests/__snapshots__/testConfigOverrides_spec.ts.js @@ -1355,7 +1355,146 @@ https://on.cypress.io/config ` -exports['testConfigOverrides / experimental retries specific behavior / fails when attempting to set experimental retries as override'] = ` +exports['testConfigOverrides / experimental retries specific behavior / fails when attempting to set experimental retries as override [chrome,electron]'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (override-with-experimental-retries.cy.js) β”‚ + β”‚ Searched: cypress/e2e/override-with-experimental-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: override-with-experimental-retries.cy.js (1 of 1) + + + overriding legacy retries with experimental retries + at the describe level + 1) sets the config + at the test level + 2) sets the config + + + 0 passing + 2 failing + + 1) overriding legacy retries with experimental retries + at the describe level + sets the config: + CypressError: The config passed to your suite-level overrides has the following validation error: + +CypressError: The \`retries.experimentalStrategy\` configuration can only be set globally. + +https://on.cypress.io/config + Error + [stack trace lines] + + 2) overriding legacy retries with experimental retries + at the test level + sets the config: + CypressError: The config passed to your test-level overrides has the following validation error: + +CypressError: The \`retries.experimentalStrategy\` configuration can only be set globally. + +https://on.cypress.io/config + Error + [stack trace lines] + + + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 2 β”‚ + β”‚ Passing: 0 β”‚ + β”‚ Failing: 2 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: override-with-experimental-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ– override-with-experimental-retries. XX:XX 2 - 2 - - β”‚ + β”‚ cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ– 1 of 1 failed (100%) XX:XX 2 - 2 - - + + +` + +exports['testConfigOverrides / experimental retries specific behavior / succeeds when setting legacy retries as an override to experimental retries [chrome,electron]'] = ` + +==================================================================================================== + + (Run Starting) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Cypress: 1.2.3 β”‚ + β”‚ Browser: FooBrowser 88 β”‚ + β”‚ Specs: 1 found (override-with-legacy-retries.cy.js) β”‚ + β”‚ Searched: cypress/e2e/override-with-legacy-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +──────────────────────────────────────────────────────────────────────────────────────────────────── + + Running: override-with-legacy-retries.cy.js (1 of 1) + + + overriding experimental retries with legacy retries + βœ“ sets the config + + + 1 passing + + + (Results) + + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Tests: 1 β”‚ + β”‚ Passing: 1 β”‚ + β”‚ Failing: 0 β”‚ + β”‚ Pending: 0 β”‚ + β”‚ Skipped: 0 β”‚ + β”‚ Screenshots: 0 β”‚ + β”‚ Video: false β”‚ + β”‚ Duration: X seconds β”‚ + β”‚ Spec Ran: override-with-legacy-retries.cy.js β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + + +==================================================================================================== + + (Run Finished) + + + Spec Tests Passing Failing Pending Skipped + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ βœ” override-with-legacy-retries.cy.js XX:XX 1 1 - - - β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + βœ” All specs passed! XX:XX 1 1 - - - + + +` + +exports['testConfigOverrides / experimental retries specific behavior / fails when attempting to set experimental retries as override [firefox]'] = ` ==================================================================================================== @@ -1437,7 +1576,7 @@ https://on.cypress.io/config ` -exports['testConfigOverrides / experimental retries specific behavior / succeeds when setting legacy retries as an override to experimental retries'] = ` +exports['testConfigOverrides / experimental retries specific behavior / succeeds when setting legacy retries as an override to experimental retries [firefox]'] = ` ==================================================================================================== diff --git a/system-tests/test/testConfigOverrides_spec.ts b/system-tests/test/testConfigOverrides_spec.ts index f16d6e311b10..871df33694b6 100644 --- a/system-tests/test/testConfigOverrides_spec.ts +++ b/system-tests/test/testConfigOverrides_spec.ts @@ -82,25 +82,25 @@ describe('testConfigOverrides', () => { browser: browserList, expectedExitCode: 1, }) - }) - describe('experimental retries specific behavior', () => { - systemTests.it('fails when attempting to set experimental retries as override', { - spec: 'override-with-experimental-retries.cy.js', - project: 'experimental-retries', - configFile: 'cypress-legacy-retries.config.js', - expectedExitCode: 2, - browser: '!webkit', - snapshot: true, - }) + describe('experimental retries specific behavior', () => { + systemTests.it(`fails when attempting to set experimental retries as override [${browserList}]`, { + spec: 'override-with-experimental-retries.cy.js', + project: 'experimental-retries', + configFile: 'cypress-legacy-retries.config.js', + expectedExitCode: 2, + browser: browserList, + snapshot: true, + }) - systemTests.it('succeeds when setting legacy retries as an override to experimental retries', { - spec: 'override-with-legacy-retries.cy.js', - project: 'experimental-retries', - configFile: 'cypress-experimental-retries.config.js', - expectedExitCode: 0, - browser: '!webkit', - snapshot: true, + systemTests.it(`succeeds when setting legacy retries as an override to experimental retries [${browserList}]`, { + spec: 'override-with-legacy-retries.cy.js', + project: 'experimental-retries', + configFile: 'cypress-experimental-retries.config.js', + expectedExitCode: 0, + browser: browserList, + snapshot: true, + }) }) }) }) From 69e0761abf26bb8300fb06d0b545563e9dc7ba68 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 25 Oct 2023 13:49:12 -0400 Subject: [PATCH 39/40] bump circle cache --- .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 c0830c55590f..9a0917644d0d 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. -10-23-23 +10-25-23 From 5e851688e59abc9b4c01077da700d5a125269149 Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Wed, 25 Oct 2023 15:55:45 -0400 Subject: [PATCH 40/40] bump circle cache again --- .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 9a0917644d0d..7cb1b8d30414 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. -10-25-23 +10-25-23.1