diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2019-04-06 13:43:04 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-06 13:43:04 +0000 |
commit | 859d0372b5bb7297a0b8ed37a559d88a425f3799 (patch) | |
tree | 293adc0e1963b4ded2760107aa69d1f793751114 /e2e/eventually.js | |
parent | d37e0b92d39fe2f721bfe3330395043eb55861f3 (diff) | |
parent | b604a942a84d7c5d54029b48ae698d15ffe4f5ac (diff) |
Merge pull request #559 from ueokande/lanthan-integration-test
Replace E2E tests with lanthan
Diffstat (limited to 'e2e/eventually.js')
-rw-r--r-- | e2e/eventually.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/e2e/eventually.js b/e2e/eventually.js new file mode 100644 index 0000000..ab0ae25 --- /dev/null +++ b/e2e/eventually.js @@ -0,0 +1,23 @@ +let defaultInterval = 100; +let defaultTimeout = 2000; + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +const eventually = async (fn, timeout = defaultTimeout, interval = defaultInterval) => { + let start = Date.now(); + let loop = async() => { + try { + await fn(); + } catch (err) { + if (Date.now() - start > timeout) { + throw err; + } + await new Promise((resolve) => setTimeout(resolve, interval)) + await loop(); + } + }; + await loop(); +}; +module.exports = eventually; |