diff options
author | frankiebee <frankie.diamond@gmail.com> | 2018-03-14 06:27:26 +0800 |
---|---|---|
committer | frankiebee <frankie.diamond@gmail.com> | 2018-03-14 06:27:26 +0800 |
commit | a2c14ad02b6f080efe18535d64efe4acdaa5f310 (patch) | |
tree | a4f10bab758b35c5344557907c7c95a396e4fbb9 /test/lib/util.js | |
parent | c465d510b100fdf9926413751df04cbd59de68eb (diff) | |
parent | c83a9ceb04a485149fe65fbb2b44f0adeda696b1 (diff) | |
download | tangerine-wallet-browser-a2c14ad02b6f080efe18535d64efe4acdaa5f310.tar tangerine-wallet-browser-a2c14ad02b6f080efe18535d64efe4acdaa5f310.tar.gz tangerine-wallet-browser-a2c14ad02b6f080efe18535d64efe4acdaa5f310.tar.bz2 tangerine-wallet-browser-a2c14ad02b6f080efe18535d64efe4acdaa5f310.tar.lz tangerine-wallet-browser-a2c14ad02b6f080efe18535d64efe4acdaa5f310.tar.xz tangerine-wallet-browser-a2c14ad02b6f080efe18535d64efe4acdaa5f310.tar.zst tangerine-wallet-browser-a2c14ad02b6f080efe18535d64efe4acdaa5f310.zip |
Merge remote-tracking branch 'origin/i#3509' into i#3509
Diffstat (limited to 'test/lib/util.js')
-rw-r--r-- | test/lib/util.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/lib/util.js b/test/lib/util.js new file mode 100644 index 000000000..626280745 --- /dev/null +++ b/test/lib/util.js @@ -0,0 +1,53 @@ +module.exports = { + timeout, + queryAsync, + findAsync, + pollUntilTruthy, +} + +function timeout (time) { + return new Promise((resolve, reject) => { + setTimeout(resolve, time || 1500) + }) +} + +async function findAsync(container, selector, opts) { + try { + return await pollUntilTruthy(() => { + const result = container.find(selector) + if (result.length > 0) return result + }, opts) + } catch (err) { + throw new Error(`Failed to find element within interval: "${selector}"`) + } +} + +async function queryAsync(jQuery, selector, opts) { + try { + return await pollUntilTruthy(() => { + const result = jQuery(selector) + if (result.length > 0) return result + }, opts) + } catch (err) { + throw new Error(`Failed to find element within interval: "${selector}"`) + } +} + +async function pollUntilTruthy(fn, opts = {}){ + const pollingInterval = opts.pollingInterval || 100 + const timeoutInterval = opts.timeoutInterval || 5000 + const start = Date.now() + let result + while (!result) { + // check if timedout + const now = Date.now() + if ((now - start) > timeoutInterval) { + throw new Error(`pollUntilTruthy - failed to return truthy within interval`) + } + // check for result + result = fn() + // run again after timeout + await timeout(pollingInterval, timeoutInterval) + } + return result +} |