From 1d2cc5647b592011e4d4837667f4e9a78708f7fd Mon Sep 17 00:00:00 2001 From: Robbie Coomber Date: Mon, 21 Aug 2023 10:17:43 +0100 Subject: [PATCH] Add retries --- .github/workflows/testcafe.yml | 2 +- package.json | 3 ++- scripts/run-browserstack-with-retries.mjs | 30 +++++++++++++++++++++++ yarn.lock | 2 +- 4 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 scripts/run-browserstack-with-retries.mjs diff --git a/.github/workflows/testcafe.yml b/.github/workflows/testcafe.yml index 1c585ac77..a59ebefcd 100644 --- a/.github/workflows/testcafe.yml +++ b/.github/workflows/testcafe.yml @@ -50,4 +50,4 @@ jobs: run: yarn build-rollup - name: Run ${{ matrix.name }} test - run: yarn testcafe "browserstack:${{ matrix.browserstack }}" + run: node scripts/run-browserstack-with-retries.mjs --browser "browserstack:${{ matrix.browserstack }}" --retries 3 diff --git a/package.json b/package.json index 716ca98db..b0430ef98 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,8 @@ "testcafe": "1.19.0", "testcafe-browser-provider-browserstack": "1.14.0", "tslib": "^2.4.0", - "typescript": "^4.7.4" + "typescript": "^4.7.4", + "yargs": "^17.7.2" }, "lint-staged": { "*.{ts,tsx,js,json}": "prettier --write", diff --git a/scripts/run-browserstack-with-retries.mjs b/scripts/run-browserstack-with-retries.mjs new file mode 100644 index 000000000..47201686e --- /dev/null +++ b/scripts/run-browserstack-with-retries.mjs @@ -0,0 +1,30 @@ +import yargs from "yargs" + +import {spawnSync} from "child_process" + + +const main = async () => { + const argv= yargs(process.argv).argv + const retries = argv.retries || 3 + const browser = argv.browser + if (!browser) { + throw new Error("Missing browser argument") + } + + + for (let i = 0; i < retries; i++) { + console.log(`Running test ${i + 1}/${retries}`) + const result = spawnSync("yarn", ["testcafe", browser], {stdio: "inherit"}) + if (result.status === 0) { + console.log("Test succeeded") + return + } + console.log("Test failed") + } +} + + +main().catch(e => { + console.error(e) + process.exit(1) +}) \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 94259686a..2e79f3e4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12212,7 +12212,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.5.1: +yargs@^17.3.1, yargs@^17.5.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==