Skip to content

Instantly share code, notes, and snippets.

@aeaston
Last active January 13, 2023 01:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aeaston/e5b9e3b0f449b2065e9a4c27cf7df979 to your computer and use it in GitHub Desktop.
Save aeaston/e5b9e3b0f449b2065e9a4c27cf7df979 to your computer and use it in GitHub Desktop.
e2e retry blog post - initial retry script
// 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);
@abhidp
Copy link

abhidp commented Jan 13, 2023

You did not get my question.
The above piece of code will not compile at all.
failedTestsPaths is an undefined variable. It should be failedTestPaths not failedTestsPaths (look for the plural in Test(s))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment