From 88a87504d1b2c94459ca6585c88fa1551b8459b6 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sat, 6 Apr 2019 19:10:32 +0900 Subject: [PATCH] Use eventually instead of sleep --- e2e-lanthan/eventually.js | 25 +++++++++++++++++++++++++ e2e-lanthan/tab.test.js | 32 ++++++++++++-------------------- 2 files changed, 37 insertions(+), 20 deletions(-) create mode 100644 e2e-lanthan/eventually.js diff --git a/e2e-lanthan/eventually.js b/e2e-lanthan/eventually.js new file mode 100644 index 0000000..c04c277 --- /dev/null +++ b/e2e-lanthan/eventually.js @@ -0,0 +1,25 @@ +const assert = require('assert'); + +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; diff --git a/e2e-lanthan/tab.test.js b/e2e-lanthan/tab.test.js index 36f4acc..93b0fc6 100644 --- a/e2e-lanthan/tab.test.js +++ b/e2e-lanthan/tab.test.js @@ -2,6 +2,7 @@ const express = require('express'); const lanthan = require('lanthan'); const path = require('path'); const assert = require('power-assert'); +const eventually = require('./eventually'); const Key = lanthan.Key; @@ -58,8 +59,6 @@ describe("tab test", () => { let body = await session.findElementByCSS('body'); await body.sendKeys('d'); - await new Promise(resolve => setTimeout(resolve, 100)); - let current = await browser.tabs.query({ windowId: win.id }); assert(current.length === tabs.length - 1); }); @@ -69,8 +68,6 @@ describe("tab test", () => { let body = await session.findElementByCSS('body'); await body.sendKeys(Key.Shift, 'd'); - await new Promise(resolve => setTimeout(resolve, 100)); - let current = await browser.tabs.query({ windowId: win.id }); assert(current.length === 2); }); @@ -80,12 +77,12 @@ describe("tab test", () => { let body = await session.findElementByCSS('body'); await body.sendKeys('z', 'd'); - await new Promise(resolve => setTimeout(resolve, 1000)); - - let current = await browser.tabs.query({ windowId: win.id }); - current.sort((t1, t2) => t1.index - t2.index); - assert(current.length === tabs.length + 1); - assert(current[0].url === current[1].url); + await eventually(async() => { + let current = await browser.tabs.query({ windowId: win.id }); + current.sort((t1, t2) => t1.index - t2.index); + assert(current.length === tabs.length + 1); + assert(current[0].url === current[1].url); + }); }); it('makes pinned by zp', async () => { @@ -169,12 +166,7 @@ describe("tab test", () => { let body = await session.findElementByCSS('body'); await body.sendKeys('u'); - await new Promise(resolve => setTimeout(resolve, 2000)); - let current = await browser.tabs.query({ windowId: win.id }); - if (current.length !== tabs.length) { - await new Promise(resolve => setTimeout(resolve, 50000)); - } assert(current.length === tabs.length); }); @@ -201,10 +193,10 @@ describe("tab test", () => { let body = await session.findElementByCSS('body'); await body.sendKeys('g', 'f'); - await new Promise(resolve => setTimeout(resolve, 1000)); - - let current = await browser.tabs.query({ windowId: win.id }); - assert(current.length === tabs.length + 1); - assert(current[current.length - 1].url === `view-source:${url}#0`); + await eventually(async() => { + let current = await browser.tabs.query({ windowId: win.id }); + assert(current.length === tabs.length + 1); + assert(current[current.length - 1].url === `view-source:${url}#0`); + }); }); });