From 072805c84870d385c8bca62cb20f3f7e927427c7 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Wed, 20 Sep 2023 12:29:19 -0400 Subject: [PATCH] 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." --- ...perimentalRetries.mochaEvents.snapshots.ts | 1710 ++-- ...perimentalRetries.mochaEvents.snapshots.ts | 7633 ++++++++++++++++- packages/driver/patches/mocha+7.0.1.dev.patch | 35 +- packages/driver/src/cypress/runner.ts | 24 +- packages/server/lib/reporter.js | 10 +- .../experimental_retries.spec.ts.js | 13 +- 6 files changed, 8508 insertions(+), 917 deletions(-) diff --git a/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.snapshots.ts b/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.snapshots.ts index 6b2f506eb5b3..0d29be5d5b5e 100644 --- a/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.snapshots.ts +++ b/packages/app/cypress/e2e/runner/retries.experimentalRetries.mochaEvents.snapshots.ts @@ -7091,72 +7091,6 @@ export const snapshots = { _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', 'hook', @@ -7232,6 +7166,72 @@ export const snapshots = { _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', @@ -7445,6 +7445,7 @@ export const snapshots = { ], ['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' }], @@ -7917,72 +7918,6 @@ export const snapshots = { _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', 'hook', @@ -8058,6 +7993,72 @@ export const snapshots = { _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', @@ -8271,6 +8272,7 @@ export const snapshots = { ], ['mocha', 'end', { end: 'match.date' }], ], + '"detect-flake-and-pass-on-threshold": retries mochaEvents test retry with [only] #1': [ ['mocha', 'start', { start: 'match.date' }], @@ -12611,72 +12613,6 @@ export const snapshots = { _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', 'hook', @@ -12752,6 +12688,72 @@ export const snapshots = { _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', @@ -13437,72 +13439,6 @@ export const snapshots = { _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', 'hook', @@ -13578,6 +13514,72 @@ export const snapshots = { _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', @@ -13791,6 +13793,7 @@ export const snapshots = { ], ['mocha', 'end', { end: 'match.date' }], ], + '"detect-flake-and-pass-on-threshold": retries mochaEvents can retry from [beforeEach] #1': [ ['mocha', 'start', { start: 'match.date' }], @@ -19791,6 +19794,81 @@ export const snapshots = { _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', @@ -19867,81 +19945,6 @@ export const snapshots = { parsedStack: 'match.array', }, ], - [ - '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', 'test end', @@ -20185,6 +20188,7 @@ export const snapshots = { ], ['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' }], @@ -20831,82 +20835,6 @@ export const snapshots = { _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', 'hook', @@ -20984,7 +20912,7 @@ export const snapshots = { ], [ 'mocha', - 'test end', + 'fail', { _cypressTestStatusInfo: { strategy: 'detect-flake-but-always-fail', @@ -21051,25 +20979,16 @@ export const snapshots = { 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, + message: '[error message]', + name: 'AssertionError', + stack: 'match.string', + parsedStack: 'match.array', }, ], [ 'mocha', - 'test:after:run', + 'test end', { _cypressTestStatusInfo: { strategy: 'detect-flake-but-always-fail', @@ -21092,7 +21011,6 @@ export const snapshots = { type: 'test', duration: 'match.number', wallClockStartedAt: 'match.date', - wallClockDuration: 'match.number', timings: { lifecycle: 'match.number', 'before each': [ @@ -21140,7 +21058,93 @@ export const snapshots = { ], [ 'mocha', - 'test:after:run:async', + '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', @@ -21225,6 +21229,7 @@ export const snapshots = { ], ['mocha', 'end', { end: 'match.date' }], ], + '"detect-flake-and-pass-on-threshold": retries mochaEvents can retry from [afterEach] #1': [ ['mocha', 'start', { start: 'match.date' }], @@ -31673,75 +31678,6 @@ export const snapshots = { _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', 'hook', @@ -31818,6 +31754,75 @@ export const snapshots = { _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', @@ -35975,63 +35980,6 @@ export const snapshots = { hooks: '[Array 4]', }, ], - [ - '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', 'hook', @@ -36108,6 +36056,63 @@ export const snapshots = { _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', @@ -37335,6 +37340,88 @@ export const snapshots = { _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', @@ -37406,89 +37493,70 @@ export const snapshots = { ], [ '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', + 'test end', { + _cypressTestStatusInfo: { + strategy: 'detect-flake-but-always-fail', + shouldAttemptsContinue: false, + attempts: 2, + outerStatus: 'failed', + }, id: 'r3', - title: '"after each" hook', - hookName: 'after each', - hookId: 'h1', + order: 1, + title: 'test 1', err: { message: '[error message]', name: 'AssertionError', stack: 'match.string', parsedStack: 'match.array', }, + state: 'passed', 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', + type: 'test', duration: 'match.number', - file: 'relative/path/to/spec.js', - invocationDetails: '{Object 9}', - currentRetry: 0, - retries: -1, + 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 end', + 'test:before:after:run:async', { _cypressTestStatusInfo: { strategy: 'detect-flake-but-always-fail', @@ -37551,7 +37619,7 @@ export const snapshots = { ], [ 'mocha', - 'test:before:after:run:async', + 'test:after:run', { _cypressTestStatusInfo: { strategy: 'detect-flake-but-always-fail', @@ -37574,70 +37642,7 @@ export const snapshots = { 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', + wallClockDuration: 'match.number', timings: { lifecycle: 'match.number', 'before each': [ @@ -39206,63 +39211,6 @@ export const snapshots = { hooks: '[Array 4]', }, ], - [ - 'mocha', - 'fail', - { - _cypressTestStatusInfo: { - strategy: 'detect-flake-but-always-fail', - shouldAttemptsContinue: false, - attempts: 2, - 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: 1, - retries: 1, - _slow: 10000, - }, - { - message: '[error message]', - name: 'AssertionError', - stack: 'match.string', - parsedStack: 'match.array', - }, - ], [ 'mocha', 'hook', @@ -39583,63 +39531,6 @@ export const snapshots = { hooks: '[Array 4]', }, ], - [ - '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', 'hook', @@ -39722,6 +39613,63 @@ export const snapshots = { _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', @@ -40246,6 +40194,7 @@ export const snapshots = { ], ['mocha', 'end', { end: 'match.date' }], ], + '"detect-flake-and-pass-on-threshold": retries mochaEvents cant retry from [before] #1': [ ['mocha', 'start', { start: 'match.date' }], @@ -40900,6 +40849,7 @@ export const snapshots = { ], ['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' }], @@ -47680,6 +47630,44 @@ export const snapshots = { _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', @@ -47739,44 +47727,6 @@ export const snapshots = { 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 end', @@ -49623,6 +49573,44 @@ export const snapshots = { _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', @@ -49682,44 +49670,6 @@ export const snapshots = { 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 end', diff --git a/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.snapshots.ts b/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.snapshots.ts index 40ae62f0ebe8..93a1a226cf31 100644 --- a/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.snapshots.ts +++ b/packages/app/cypress/e2e/runner/runner.experimentalRetries.mochaEvents.snapshots.ts @@ -9154,9 +9154,7636 @@ export const snapshots = { ], ['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', { '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', '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' }, 'after each': [{ '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', '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', { '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', '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' }, 'after each': [{ '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', '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', 'fail', { '_cypressTestStatusInfo': { 'strategy': 'detect-flake-but-always-fail', 'shouldAttemptsContinue': false, 'attempts': 3, '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' }, 'after each': [{ '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', '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', 'fail', { '_cypressTestStatusInfo': { 'strategy': 'detect-flake-but-always-fail', 'shouldAttemptsContinue': false, 'attempts': 4, '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' }, 'after each': [{ 'hookId': 'h1', 'fnDuration': 'match.number', 'afterFnDuration': 'match.number' }] }, 'file': null, 'final': true, 'currentRetry': 3, 'retries': 3, '_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': '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', 'fail', { '_cypressTestStatusInfo': { 'strategy': 'detect-flake-but-always-fail', 'shouldAttemptsContinue': false, 'attempts': 5, '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' }, 'after each': [{ 'hookId': 'h1', 'fnDuration': 'match.number', 'afterFnDuration': 'match.number' }] }, 'file': null, 'final': true, 'currentRetry': 4, 'retries': 4, '_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': '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', 'fail', { '_cypressTestStatusInfo': { 'strategy': 'detect-flake-but-always-fail', 'shouldAttemptsContinue': false, 'attempts': 6, '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' }, 'after each': [{ 'hookId': 'h1', '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': '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', 'fail', { '_cypressTestStatusInfo': { 'strategy': 'detect-flake-but-always-fail', 'shouldAttemptsContinue': false, 'attempts': 7, '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' }, 'after each': [{ 'hookId': 'h1', 'fnDuration': 'match.number', 'afterFnDuration': 'match.number' }] }, 'file': null, 'final': true, 'currentRetry': 6, 'retries': 6, '_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': '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', 'fail', { '_cypressTestStatusInfo': { 'strategy': 'detect-flake-but-always-fail', 'shouldAttemptsContinue': false, 'attempts': 8, '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' }, 'after each': [{ 'hookId': 'h1', 'fnDuration': 'match.number', 'afterFnDuration': 'match.number' }] }, 'file': null, 'final': true, 'currentRetry': 7, 'retries': 7, '_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': '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', 'fail', { '_cypressTestStatusInfo': { 'strategy': 'detect-flake-but-always-fail', 'shouldAttemptsContinue': false, 'attempts': 9, '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' }, 'after each': [{ 'hookId': 'h1', 'fnDuration': 'match.number', 'afterFnDuration': 'match.number' }] }, 'file': null, 'final': true, 'currentRetry': 8, 'retries': 8, '_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': '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', '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' }, 'after each': [{ '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', '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', { '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 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', + { + 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', + { + 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', + { + 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' }], diff --git a/packages/driver/patches/mocha+7.0.1.dev.patch b/packages/driver/patches/mocha+7.0.1.dev.patch index 426899bfe6e8..5e7cf190c65a 100644 --- a/packages/driver/patches/mocha+7.0.1.dev.patch +++ b/packages/driver/patches/mocha+7.0.1.dev.patch @@ -12,7 +12,7 @@ index 0b43004..588e195 100644 runner.fullStackTrace = options.fullTrace; runner.asyncOnly = options.asyncOnly; diff --git a/node_modules/mocha/lib/runner.js b/node_modules/mocha/lib/runner.js -index ceb1a24..d433661 100644 +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) { @@ -63,28 +63,27 @@ index ceb1a24..d433661 100644 var clonedTest = test.clone(); clonedTest.currentRetry(retry + 1); tests.unshift(clonedTest); -@@ -689,8 +725,26 @@ Runner.prototype.runTests = function(suite, fn) { +@@ -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 attempt is marked as 'failed'. -+ if(test.state == STATE_PASSED){ -+ // We might 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. -+ -+ // 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). -+ var lastTestWithErr = (test.prevAttempts || []).find(t => t.state === STATE_FAILED) -+ // TODO: figure out serialization with this looked up error as it isn't printed to the console reporter properly. -+ // Additionally, the OR statement here should be unreachable, but is intended for a fallback in case something is missed (especially under development). -+ err = lastTestWithErr?.err || new Error({ message: `expected test to have state "${testStatusInfo.outerStatus}" but was state "${test.state}".`}) -+ } -+ self.fail(test, err) ++ // 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. @@ -92,7 +91,7 @@ index ceb1a24..d433661 100644 } self.emit(constants.EVENT_TEST_END, test); return self.hookUp(HOOK_TYPE_AFTER_EACH, next); -@@ -1029,3 +1083,4 @@ Runner.constants = constants; +@@ -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/runner.ts b/packages/driver/src/cypress/runner.ts index f040b50310ed..81938054b7dc 100644 --- a/packages/driver/src/cypress/runner.ts +++ b/packages/driver/src/cypress/runner.ts @@ -480,9 +480,27 @@ const overrideRunnerHook = (Cypress, _runner, getTestById, getTest, setTest, get if (test.final !== false) { test.final = true - // If the last test attempt passed, but the outerStatus isn't marked as failed, then we want to emit the mocha 'pass' event. - if (test.state === 'passed' && test?._cypressTestStatusInfo?.outerStatus !== 'failed') { - Cypress.action('runner:pass', wrap(test)) + if (test.state === 'passed') { + 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! + let 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)) diff --git a/packages/server/lib/reporter.js b/packages/server/lib/reporter.js index a2b8078e76bf..1cb6d2e914bf 100644 --- a/packages/server/lib/reporter.js +++ b/packages/server/lib/reporter.js @@ -449,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) } diff --git a/system-tests/__snapshots__/experimental_retries.spec.ts.js b/system-tests/__snapshots__/experimental_retries.spec.ts.js index 615941fb13ca..dd93c0f172a7 100644 --- a/system-tests/__snapshots__/experimental_retries.spec.ts.js +++ b/system-tests/__snapshots__/experimental_retries.spec.ts.js @@ -545,7 +545,6 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f suite 2 ✖(Attempt 1 of 10) test 1 - ✓(Attempt 2 of 10) test 1 ✖(Attempt 2 of 10) test 1 ✓(Attempt 3 of 10) test 1 ✓(Attempt 4 of 10) test 1 @@ -893,7 +892,6 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f suite 2 ✖(Attempt 1 of 10) test 1 - ✓(Attempt 2 of 10) test 1 ✖(Attempt 2 of 10) test 1 ✓(Attempt 3 of 10) test 1 ✓(Attempt 4 of 10) test 1 @@ -1323,8 +1321,6 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f suite 2 ✖(Attempt 1 of 10) test 1 - ✓(Attempt 2 of 10) test 1 - ✖ test 1 ✖(Attempt 2 of 10) test 1 ✓(Attempt 3 of 10) test 1 ✖ test 1 @@ -1334,7 +1330,7 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f 3 passing - 3 failing + 2 failing 1) suite 1 test 1: @@ -1350,13 +1346,6 @@ exports['e2e retries.experimentalStrategy / experimentalBurnIn=false / "detect-f Error [stack trace lines] - 3) suite 2 - test 1: - - [object Object] - Error - [stack trace lines] -