From cc735970adab31d500a5ad299fdb0e9bd2bed219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Sat, 21 Feb 2026 21:07:20 +0200 Subject: [PATCH] fix(runner): mark repeated tests as finished on last run (#9707) --- packages/runner/src/run.ts | 7 +------ test/cli/fixtures/reported-tasks/1_first.test.ts | 4 ++++ test/cli/test/reported-tasks.test.ts | 8 ++++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/runner/src/run.ts b/packages/runner/src/run.ts index db1d5ae3f892..21fcad7aacc3 100644 --- a/packages/runner/src/run.ts +++ b/packages/runner/src/run.ts @@ -658,12 +658,7 @@ export async function runTest(test: Test, runner: VitestRunner): Promise { }) if (test.result!.state !== 'fail') { - if (!test.repeats) { - test.result!.state = 'pass' - } - else if (test.repeats && retry === retryCount) { - test.result!.state = 'pass' - } + test.result!.state = 'pass' } } catch (e) { diff --git a/test/cli/fixtures/reported-tasks/1_first.test.ts b/test/cli/fixtures/reported-tasks/1_first.test.ts index 81d4d62dc76f..69b47ea745b3 100644 --- a/test/cli/fixtures/reported-tasks/1_first.test.ts +++ b/test/cli/fixtures/reported-tasks/1_first.test.ts @@ -86,6 +86,10 @@ it('registers a metadata', (ctx) => { ctx.task.meta.key = 'value' }) +it('should not show up as pending test when finished (#9689)', { retry: 2, repeats: 2 }, ({ task }) => { + expect(task.result?.state).toBe('run') +}) + declare module 'vitest' { interface TaskMeta { key?: string diff --git a/test/cli/test/reported-tasks.test.ts b/test/cli/test/reported-tasks.test.ts index 101ba9a3c5a7..d5248674c291 100644 --- a/test/cli/test/reported-tasks.test.ts +++ b/test/cli/test/reported-tasks.test.ts @@ -76,15 +76,15 @@ it('correctly reports a file', ({ testModule, files, project }) => { expect(testModule.location).toBeUndefined() expect(testModule.moduleId).toBe(resolve(root, './1_first.test.ts')) expect(testModule.project).toBe(project) - expect(testModule.children.size).toBe(17) + expect(testModule.children.size).toBe(18) const tests = [...testModule.children.tests()] - expect(tests).toHaveLength(12) + expect(tests).toHaveLength(13) const deepTests = [...testModule.children.allTests()] - expect(deepTests).toHaveLength(22) + expect(deepTests).toHaveLength(23) expect.soft([...testModule.children.allTests('skipped')]).toHaveLength(8) - expect.soft([...testModule.children.allTests('passed')]).toHaveLength(9) + expect.soft([...testModule.children.allTests('passed')]).toHaveLength(10) expect.soft([...testModule.children.allTests('failed')]).toHaveLength(5) expect.soft([...testModule.children.allTests('pending')]).toHaveLength(0)