From 6e998ec50fed8e131f2760913510c8aa3ea1ee6e Mon Sep 17 00:00:00 2001 From: imentu Date: Sat, 17 Jun 2023 11:30:41 +0800 Subject: [PATCH 1/9] chore: add retry option to VitestRunnerConfig --- packages/runner/src/types/runner.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/runner/src/types/runner.ts b/packages/runner/src/types/runner.ts index 6183bb6065fa..eb1ee9edb24e 100644 --- a/packages/runner/src/types/runner.ts +++ b/packages/runner/src/types/runner.ts @@ -20,6 +20,7 @@ export interface VitestRunnerConfig { maxConcurrency: number testTimeout: number hookTimeout: number + retry: number } export type VitestRunnerImportSource = 'collect' | 'setup' From 9a67c1ad1ad40b67a5b632672e988d4d603dad91 Mon Sep 17 00:00:00 2001 From: imentu Date: Sat, 17 Jun 2023 11:33:22 +0800 Subject: [PATCH 2/9] chore: apply retry config when creating test --- packages/runner/src/suite.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runner/src/suite.ts b/packages/runner/src/suite.ts index 787db602930b..615d0d83ea3f 100644 --- a/packages/runner/src/suite.ts +++ b/packages/runner/src/suite.ts @@ -78,7 +78,7 @@ function createSuiteCollector(name: string, factory: SuiteFactory = () => { }, m mode, suite: undefined!, fails: this.fails, - retry: options?.retry, + retry: options?.retry ?? runner.config.retry, repeats: options?.repeats, meta: Object.create(null), } as Omit as Test From 1393eed9ccce69fa33fae2c6006997157ccd5f05 Mon Sep 17 00:00:00 2001 From: imentu Date: Sat, 17 Jun 2023 11:34:14 +0800 Subject: [PATCH 3/9] feat: global configuration for retry setting --- docs/config/index.md | 9 +++++++++ packages/vitest/src/defaults.ts | 1 + packages/vitest/src/node/cli.ts | 1 + packages/vitest/src/types/config.ts | 7 +++++++ 4 files changed, 18 insertions(+) diff --git a/docs/config/index.md b/docs/config/index.md index fc30c1895b95..4f0cfc12ee0f 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -1452,3 +1452,12 @@ This config option affects truncating values in `test.each` titles and inside th Stop test execution when given number of tests have failed. By default Vitest will run all of your test cases even if some of them fail. This may not be desired for CI builds where you are only interested in 100% successful builds and would like to stop test execution as early as possible when test failures occur. The `bail` option can be used to speed up CI runs by preventing it from running more tests when failures have occured. + +### retry + +- **Type:** `number` +- **Default:** `1` +- **CLI:** `--retry=` +- **Version:** Since Vitest 0.33.0 + +Retry the test specific number of times if it fails. diff --git a/packages/vitest/src/defaults.ts b/packages/vitest/src/defaults.ts index b75f658eb304..50c646365434 100644 --- a/packages/vitest/src/defaults.ts +++ b/packages/vitest/src/defaults.ts @@ -94,6 +94,7 @@ const config = { exclude: defaultExclude, }, slowTestThreshold: 300, + retry: 1, } export const configDefaults: Required> = Object.freeze(config) diff --git a/packages/vitest/src/node/cli.ts b/packages/vitest/src/node/cli.ts index fe18091b547e..c68d17f4c362 100644 --- a/packages/vitest/src/node/cli.ts +++ b/packages/vitest/src/node/cli.ts @@ -48,6 +48,7 @@ cli .option('--inspect-brk', 'Enable Node.js inspector with break') .option('--test-timeout