hermione-retry-command
Advanced tools
Comparing version 1.0.0 to 1.1.0
@@ -11,49 +11,32 @@ 'use strict'; | ||
const retryScreenshot = (retriesLeft, prevBase64 = null) => { | ||
const retryIndex = retryCount - retriesLeft + 1; | ||
const screenshotWithRetries = async () => { | ||
let retriesLeft = retryCount; | ||
let base64; | ||
return originScreenshot() | ||
.then(base64 => { | ||
if (!retriesLeft || (base64 && !utils.isBlankScreenshot(base64.value))) { | ||
return base64; | ||
} | ||
try { | ||
base64 = await originScreenshot(); | ||
} catch (e) { | ||
throw e; | ||
} | ||
debug(`Retrying #${retryIndex} ${base64 ? 'blank' : 'null'} screenshot in ${retryInterval} ms`); | ||
while (retriesLeft && utils.isBlankScreenshot(base64.value)) { | ||
await Promise.delay(retryInterval); | ||
retriesLeft -= 1; | ||
debug(`Retrying #${retryCount - retriesLeft + 1} blank screenshot in ${retryInterval} ms`); | ||
if (retryInterval > 0) { | ||
return Promise.delay(retryInterval).then(() => retryScreenshot(retriesLeft, base64)); | ||
} | ||
retriesLeft -= 1; | ||
return retryScreenshot(retriesLeft, base64); | ||
}) | ||
.catch((e) => { | ||
if (retriesLeft === retryCount) { | ||
throw e; | ||
} | ||
try { | ||
base64 = await originScreenshot(); | ||
} catch (e) { | ||
retriesLeft = 0; | ||
debug(`Failed to make screenshot after blank screenshot: ${e}`); | ||
} | ||
} | ||
if (!retriesLeft) { | ||
if (prevBase64) { | ||
return prevBase64; | ||
} else { | ||
throw e; | ||
} | ||
} | ||
debug(`Retrying #${retryIndex} failed screenshot in ${retryInterval} ms`); | ||
retriesLeft -= 1; | ||
if (retryInterval > 0) { | ||
return Promise.delay(retryInterval).then(() => retryScreenshot(retriesLeft, prevBase64)); | ||
} | ||
return retryScreenshot(retriesLeft, prevBase64); | ||
}); | ||
return base64; | ||
}; | ||
browser.addCommand('screenshot', () => retryScreenshot(retryCount), true); | ||
browser.addCommand('screenshot', async () => await screenshotWithRetries(), true); | ||
}; |
{ | ||
"name": "hermione-retry-command", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "Plugin to retry commands in hermione", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
11445
148