use session.poll as well for polling when receiving a message
This commit is contained in:
parent
9610e9b57e
commit
20c3023b94
3 changed files with 14 additions and 19 deletions
|
@ -202,13 +202,12 @@ module.exports = class RiotSession {
|
||||||
return this.browser.close();
|
return this.browser.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
async poll(callback, timeout) {
|
async poll(callback, timeout, interval = 100) {
|
||||||
const INTERVAL = 100;
|
|
||||||
let waited = 0;
|
let waited = 0;
|
||||||
while(waited < timeout) {
|
while(waited < timeout) {
|
||||||
await this.delay(INTERVAL);
|
await this.delay(interval);
|
||||||
waited += INTERVAL;
|
waited += interval;
|
||||||
if (callback()) {
|
if (await callback()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ module.exports = async function signup(session, username, password, homeserver)
|
||||||
//wait for registration to finish so the hash gets set
|
//wait for registration to finish so the hash gets set
|
||||||
//onhashchange better?
|
//onhashchange better?
|
||||||
|
|
||||||
const foundHomeUrl = await session.poll(() => {
|
const foundHomeUrl = await session.poll(async () => {
|
||||||
const url = session.page.url();
|
const url = session.page.url();
|
||||||
return url === session.url('/#/home');
|
return url === session.url('/#/home');
|
||||||
}, 5000);
|
}, 5000);
|
||||||
|
|
|
@ -52,22 +52,18 @@ module.exports.receiveMessage = async function(session, expectedMessage) {
|
||||||
return getMessageFromEventTile(lastTile);
|
return getMessageFromEventTile(lastTile);
|
||||||
}
|
}
|
||||||
|
|
||||||
let lastMessage = null;
|
let lastMessage;
|
||||||
let isExpectedMessage = false;
|
await session.poll(async () => {
|
||||||
let totalTime = 0;
|
|
||||||
while (!isExpectedMessage) {
|
|
||||||
try {
|
try {
|
||||||
lastMessage = await getLastMessage();
|
lastMessage = await getLastMessage();
|
||||||
isExpectedMessage = lastMessage &&
|
} catch(err) {
|
||||||
lastMessage.body === expectedMessage.body &&
|
return false;
|
||||||
lastMessage.sender === expectedMessage.sender
|
|
||||||
} catch(err) {}
|
|
||||||
if (totalTime > 5000) {
|
|
||||||
throw new Error("timed out after 5000ms");
|
|
||||||
}
|
}
|
||||||
totalTime += 200;
|
// stop polling when found the expected message
|
||||||
await session.delay(200);
|
return lastMessage &&
|
||||||
}
|
lastMessage.body === expectedMessage.body &&
|
||||||
|
lastMessage.sender === expectedMessage.sender;
|
||||||
|
}, 5000, 200);
|
||||||
assertMessage(lastMessage, expectedMessage);
|
assertMessage(lastMessage, expectedMessage);
|
||||||
session.log.done();
|
session.log.done();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue