mirror of https://github.com/vector-im/riot-web
wait for next sync before inspecting memberlist
before we needed a 10s delay here to make the test work reliable, this should be faster in the best case.pull/21833/head
parent
16b2f09915
commit
36708cc5db
|
@ -102,7 +102,8 @@ async function joinCharliesWhileAliceIsOffline(alice, charly6to10) {
|
||||||
await member6.talk("where is charly?");
|
await member6.talk("where is charly?");
|
||||||
}
|
}
|
||||||
member6.log.unmute().done();
|
member6.log.unmute().done();
|
||||||
await delay(1000);
|
const catchupPromise = alice.waitForNextSuccessfulSync();
|
||||||
await alice.setOffline(false);
|
await alice.setOffline(false);
|
||||||
await delay(1000);
|
await catchupPromise;
|
||||||
|
await delay(2000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,6 +161,33 @@ module.exports = class RiotSession {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
waitForSyncResponseWith(predicate) {
|
||||||
|
return this.page.waitForResponse(async (response) => {
|
||||||
|
if (response.request().url().indexOf("/sync") === -1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return predicate(response);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** wait for a /sync request started after this call that gets a 200 response */
|
||||||
|
async waitForNextSuccessfulSync() {
|
||||||
|
const syncUrls = [];
|
||||||
|
function onRequest(request) {
|
||||||
|
if (request.url().indexOf("/sync") !== -1) {
|
||||||
|
syncUrls.push(request.url());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.page.on('request', onRequest);
|
||||||
|
|
||||||
|
await this.page.waitForResponse((response) => {
|
||||||
|
return syncUrls.includes(response.request().url()) && response.status() === 200;
|
||||||
|
});
|
||||||
|
|
||||||
|
this.page.removeListener('request', onRequest);
|
||||||
|
}
|
||||||
|
|
||||||
goto(url) {
|
goto(url) {
|
||||||
return this.page.goto(url);
|
return this.page.goto(url);
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,10 +64,7 @@ module.exports.receiveMessage = async function(session, expectedMessage) {
|
||||||
if (isExpectedMessage) {
|
if (isExpectedMessage) {
|
||||||
assertMessage(lastMessage, expectedMessage);
|
assertMessage(lastMessage, expectedMessage);
|
||||||
} else {
|
} else {
|
||||||
await session.page.waitForResponse(async (response) => {
|
await session.waitForSyncResponseWith(async (response) => {
|
||||||
if (response.request().url().indexOf("/sync") === -1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const body = await response.text();
|
const body = await response.text();
|
||||||
if (expectedMessage.encrypted) {
|
if (expectedMessage.encrypted) {
|
||||||
return body.indexOf(expectedMessage.sender) !== -1 &&
|
return body.indexOf(expectedMessage.sender) !== -1 &&
|
||||||
|
|
Loading…
Reference in New Issue