From 9a117627564f1880080a3d2e3f118a5bb6be76c9 Mon Sep 17 00:00:00 2001 From: imentu Date: Wed, 28 Jun 2023 00:08:25 +0800 Subject: [PATCH] feat: introduce global configuration for retry setting (fix #3598) (#3603) Co-authored-by: Vladimir --- docs/config/index.md | 9 +++++++ docs/guide/cli.md | 1 + packages/runner/src/suite.ts | 2 +- packages/runner/src/types/runner.ts | 1 + packages/vitest/src/node/cli.ts | 1 + packages/vitest/src/types/config.ts | 7 ++++++ test/config/fixtures/retry/retry.test.ts | 10 ++++++++ test/config/fixtures/retry/vitest.config.ts | 8 +++++++ test/config/test/retry.test.ts | 26 +++++++++++++++++++++ 9 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 test/config/fixtures/retry/retry.test.ts create mode 100644 test/config/fixtures/retry/vitest.config.ts create mode 100644 test/config/test/retry.test.ts diff --git a/docs/config/index.md b/docs/config/index.md index fc30c1895b95..e80739854b95 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:** `0` +- **CLI:** `--retry=` +- **Version:** Since Vitest 0.32.3 + +Retry the test specific number of times if it fails. diff --git a/docs/guide/cli.md b/docs/guide/cli.md index b13e93804c91..84f5d0704376 100644 --- a/docs/guide/cli.md +++ b/docs/guide/cli.md @@ -93,6 +93,7 @@ Run only [benchmark](https://vitest.dev/guide/features.html#benchmarking-experim | `--inspect` | Enables Node.js inspector | | `--inspect-brk` | Enables Node.js inspector with break | | `--bail ` | Stop test execution when given number of tests have failed | +| `--retry ` | Retry the test specific number of times if it fails | | `-h, --help` | Display available CLI options | ::: tip 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 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' diff --git a/packages/vitest/src/node/cli.ts b/packages/vitest/src/node/cli.ts index fe18091b547e..f8d16d7b3975 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