aboutsummaryrefslogtreecommitdiff
path: root/e2e/eventually.js
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2019-04-06 13:43:04 +0000
committerGitHub <noreply@github.com>2019-04-06 13:43:04 +0000
commit859d0372b5bb7297a0b8ed37a559d88a425f3799 (patch)
tree293adc0e1963b4ded2760107aa69d1f793751114 /e2e/eventually.js
parentd37e0b92d39fe2f721bfe3330395043eb55861f3 (diff)
parentb604a942a84d7c5d54029b48ae698d15ffe4f5ac (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.js23
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;