add ll tests to check if all expected members are in memberlist

also move verify-device use case to timeline to reuse memberlist
query for this test.
This commit is contained in:
Bruno Windels 2018-09-13 12:03:29 +02:00
parent 5d06c65ce5
commit 239e6a4bce
3 changed files with 33 additions and 11 deletions

View file

@ -25,7 +25,7 @@ const {receiveMessage} = require('../usecases/timeline');
const createRoom = require('../usecases/create-room');
const changeRoomSettings = require('../usecases/room-settings');
const {getE2EDeviceFromSettings} = require('../usecases/settings');
const verifyDeviceForUser = require('../usecases/verify-device');
const {verifyDeviceForUser} = require('../usecases/memberlist');
module.exports = async function e2eEncryptionScenarios(alice, bob) {
console.log(" creating an e2e encrypted room and join through invite:");

View file

@ -23,14 +23,17 @@ const {
scrollToTimelineTop
} = require('../usecases/timeline');
const createRoom = require('../usecases/create-room');
const {getMembersInMemberlist} = require('../usecases/memberlist');
const changeRoomSettings = require('../usecases/room-settings');
const {enableLazyLoading} = require('../usecases/settings');
const assert = require('assert');
module.exports = async function lazyLoadingScenarios(alice, bob, charlies) {
console.log(" creating a room for lazy loading member scenarios:");
await enableLazyLoading(alice);
await setupRoomWithBobAliceAndCharlies(alice, bob, charlies);
await checkPaginatedDisplayNames(alice, charlies);
await checkMemberList(alice, charlies);
}
const room = "Lazy Loading Test";
@ -69,3 +72,16 @@ async function checkPaginatedDisplayNames(alice, charlies) {
}, []);
await checkTimelineContains(alice, expectedMessages, "Charly #1-10");
}
async function checkMemberList(alice, charlies) {
alice.log.step("checks the memberlist contains herself, bob and all charlies");
const displayNames = (await getMembersInMemberlist(alice)).map((m) => m.displayName);
assert(displayNames.includes("alice"));
assert(displayNames.includes("bob"));
charlies.sessions.forEach((charly) => {
assert(displayNames.includes(charly.displayName()),
`${charly.displayName()} should be in the member list, ` +
`only have ${displayNames}`);
});
alice.log.done();
}

View file

@ -16,16 +16,13 @@ limitations under the License.
const assert = require('assert');
module.exports = async function verifyDeviceForUser(session, name, expectedDevice) {
module.exports.verifyDeviceForUser = async function(session, name, expectedDevice) {
session.log.step(`verifies e2e device for ${name}`);
const memberNameElements = await session.queryAll(".mx_MemberList .mx_EntityTile_name");
const membersAndNames = await Promise.all(memberNameElements.map(async (el) => {
return [el, await session.innerText(el)];
}));
const matchingMember = membersAndNames.filter(([el, text]) => {
return text === name;
}).map(([el]) => el)[0];
await matchingMember.click();
const membersAndNames = await getMembersInMemberlist(session);
const matchingLabel = membersAndNames.filter((m) => {
return m.displayName === name;
}).map((m) => m.label)[0];
await matchingLabel.click();
const firstVerifyButton = await session.waitAndQuery(".mx_MemberDeviceInfo_verify");
await firstVerifyButton.click();
const dialogCodeFields = await session.waitAndQueryAll(".mx_QuestionDialog code");
@ -39,4 +36,13 @@ module.exports = async function verifyDeviceForUser(session, name, expectedDevic
const closeMemberInfo = await session.query(".mx_MemberInfo_cancel");
await closeMemberInfo.click();
session.log.done();
}
}
async function getMembersInMemberlist(session) {
const memberNameElements = await session.waitAndQueryAll(".mx_MemberList .mx_EntityTile_name");
return Promise.all(memberNameElements.map(async (el) => {
return {label: el, displayName: await session.innerText(el)};
}));
}
module.exports.getMembersInMemberlist = getMembersInMemberlist;