jest のオプション見てたら retryTimes というのがあった。
https://jestjs.io/docs/ja/jest-object#jestretrytimes
しかし普通に書いただけだと動かない。https://github.com/facebook/jest/tree/master/packages/jest-circus と一緒に使えとのこと。 The next-gen test runner for Jest
※ jest のセットアップは省略
yarn add jest-circus -D
30% で成功するテストを 3回繰り返す。
import assert from "assert";
jest.retryTimes(3);
it("retry", () => {
console.log("xxx", Date.now());
assert.ok(Math.random() > 0.3);
});
❯ yarn jest --testRunner='jest-circus/runner' src
yarn run v1.17.3
PASS src/__tests__/retrySpecCheck.test.ts
● Console
console.log src/__tests__/retrySpecCheck.test.ts:5
xxx 1568271139936
console.log src/__tests__/retrySpecCheck.test.ts:5
xxx 1568271139949
console.log src/__tests__/retrySpecCheck.test.ts:5
xxx 1568271139951
flaky test 周りで便利