Last active
January 13, 2023 01:10
-
-
Save aeaston/e5b9e3b0f449b2065e9a4c27cf7df979 to your computer and use it in GitHub Desktop.
e2e retry blog post - initial retry script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// run_tests_with_retries.js | |
import { runCLI } from 'jest'; | |
import jestConfig from './jest.config'; | |
const NUM_RETRIES = 3; | |
async function runTestsAndRetry(jestConfig, retriesRemaining) { | |
const { results } = await runCLI(jestConfig, ['e2e/test']); | |
// If there were no failures or we're out of retries, return | |
if (!results.numFailedTests && !results.numFailedTestSuites) { | |
return Promise.resolve(); | |
} | |
if (retriesRemaining === 1) { | |
return Promise.reject(new Error('Out of retries. Some tests are still failing.')); | |
} | |
// Compile a list of the test suites that failed and tell Jest to only run those files next time | |
const failedTestPaths = results.testResults | |
.filter((testResult) => testResult.numFailingTests > 0 || testResult.failureMessage) | |
.map((testResult) => testResult.testFilePath); | |
jestConfig.testMatch = failedTestsPaths; | |
// Decrement retries remaining and retry | |
retriesRemaining = retriesRemaining - 1; | |
console.log(`Retrying failed tests. ${retriesRemaining} attempts remaining.`); | |
return await runTestsAndRetry(jestConfig, retriesRemaining); | |
} | |
runTestsAndRetry(jestConfig, NUM_RETRIES); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You did not get my question.
The above piece of code will not compile at all.
failedTestsPaths
is an undefined variable. It should befailedTestPaths
notfailedTestsPaths
(look for the plural in Test(s))