diff --git a/packages/vitest/src/node/reporters/base.ts b/packages/vitest/src/node/reporters/base.ts index 4330b253c..67305dc4a 100644 --- a/packages/vitest/src/node/reporters/base.ts +++ b/packages/vitest/src/node/reporters/base.ts @@ -1568,15 +1568,12 @@ function formatErrorAttempts( return } const hasRepeats = allAttempts.some((attempt) => attempt.repeatIndex > 0) - const labels = [...attempts].flatMap((attempt) => { - if (!attempt) { - return [] - } - return hasRepeats - ? `repeat ${attempt.repeatIndex} retry ${attempt.retryIndex}` - : String(attempt.retryIndex) - }) - return hasRepeats ? labels.join(', ') : `retry ${labels.join(', ')}` + return [...attempts] + .filter((attempt) => attempt !== undefined) + .map(({ repeatIndex, retryIndex }) => + hasRepeats ? `repeat ${repeatIndex} retry ${retryIndex}` : `retry ${retryIndex}`, + ) + .join(', ') } function getErrorsWithAttempt(task: Task): { error: TestError; attempt?: TaskResultAttempt }[] { diff --git a/test/browser/specs/failure-screenshot.test.ts b/test/browser/specs/failure-screenshot.test.ts index c3433b1cd..b99db481e 100644 --- a/test/browser/specs/failure-screenshot.test.ts +++ b/test/browser/specs/failure-screenshot.test.ts @@ -174,12 +174,12 @@ describe('failure screenshots', () => { // screenshots are taken per attempt, so each soft error lists the same ones expect(extractFailureLines(stderr, root)).toMatchInlineSnapshot(` - " FAIL |chromium| basic.test.ts > soft (retry 0, 1) + " FAIL |chromium| basic.test.ts > soft (retry 0, retry 1) AssertionError: expected 1 to be 2 // Object.is equality Failure screenshots: - /.vitest/attachments/failure-screenshots/basic.test.ts/soft-0-0.png - /.vitest/attachments/failure-screenshots/basic.test.ts/soft-0-1.png - FAIL |chromium| basic.test.ts > soft (retry 0, 1) + FAIL |chromium| basic.test.ts > soft (retry 0, retry 1) AssertionError: expected 2 to be 3 // Object.is equality Failure screenshots: - /.vitest/attachments/failure-screenshots/basic.test.ts/soft-0-0.png diff --git a/test/e2e/test/retry.test.ts b/test/e2e/test/retry.test.ts index 1c0843e01..3025d7cce 100644 --- a/test/e2e/test/retry.test.ts +++ b/test/e2e/test/retry.test.ts @@ -367,7 +367,7 @@ describe('failure summary header', () => { }) expect(extractFailureHeaders(stderr)).toMatchInlineSnapshot(` - " FAIL basic.test.js > always fails (retry 0, 1, 2) + " FAIL basic.test.js > always fails (retry 0, retry 1, retry 2) AssertionError: expected 1 to be 2 // Object.is equality" `) }) @@ -409,9 +409,9 @@ describe('failure summary header', () => { // the loop repeats the first error within each attempt; it still gets one header expect(extractFailureHeaders(stderr)).toMatchInlineSnapshot(` - " FAIL basic.test.js > soft (retry 0, 1) + " FAIL basic.test.js > soft (retry 0, retry 1) AssertionError: expected 1 to be 2 // Object.is equality - FAIL basic.test.js > soft (retry 0, 1) + FAIL basic.test.js > soft (retry 0, retry 1) AssertionError: expected 2 to be 3 // Object.is equality" `) })