From 40893d888fee56e5a3f28be27b3e9342381da7af Mon Sep 17 00:00:00 2001 From: smilkuri Date: Wed, 22 Oct 2025 02:51:19 +0000 Subject: [PATCH 1/2] chore(tests): add retry mechanism for e2e tests --- tests/canary/canary.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/canary/canary.js b/tests/canary/canary.js index 05f446e1fd2b..97db7bb97c27 100644 --- a/tests/canary/canary.js +++ b/tests/canary/canary.js @@ -31,7 +31,7 @@ const testWorkspace = path.join(jsv3_root, "..", "canary-aws-sdk-js-v3"); }); verdaccioFork = await runRegistry(["-c", path.join(jsv3_root, "verdaccio", "config.yaml")]); - await localPublishChangedPackages(jsv3_root); + await retry(() => localPublishChangedPackages(jsv3_root)); await spawnProcess("npm", ["init", "-y"], { cwd: testWorkspace }); await spawnProcess("npm", ["install", `@aws-sdk/client-sts@ci`, "--registry", "http://localhost:4873/"], { @@ -71,6 +71,17 @@ function runRegistry(args = [], childOptions = {}) { }); } +async function retry(fn, attempts = 3) { + for (let i = 0; i < attempts; i++) { + try { + return await fn(); + } catch (error) { + if (i === attempts - 1) throw error; + await new Promise((resolve) => setTimeout(resolve, 2000)); + } + } +} + async function localPublishChangedPackages(root) { await spawnProcess("rm", ["-rf", "verdaccio/storage"], { cwd: root, stdio: "inherit" }); @@ -96,5 +107,5 @@ async function localPublishChangedPackages(root) { "--dist-tag", "ci", ]; - await spawnProcess("npx", args, { cwd: root, stdio: "inherit" }); + await retry(() => spawnProcess("npx", args, { cwd: root, stdio: "inherit" })); } From 9cc7b0eca336b4bf241cc93fc045aab981aa0f46 Mon Sep 17 00:00:00 2001 From: smilkuri Date: Wed, 22 Oct 2025 14:57:08 +0000 Subject: [PATCH 2/2] chore(tests): fix retry logic to throw error on last attempt --- tests/canary/canary.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/canary/canary.js b/tests/canary/canary.js index 97db7bb97c27..9d9132f9ac72 100644 --- a/tests/canary/canary.js +++ b/tests/canary/canary.js @@ -77,6 +77,7 @@ async function retry(fn, attempts = 3) { return await fn(); } catch (error) { if (i === attempts - 1) throw error; + console.log(`Retry ${i + 1}/${attempts} failed, retrying...`); await new Promise((resolve) => setTimeout(resolve, 2000)); } }