wait for the message to be sent

This commit is contained in:
Bruno Windels 2018-09-11 18:28:50 +02:00
parent 40577109c2
commit 4a4b1f65aa
6 changed files with 37 additions and 40 deletions

View file

@ -25,13 +25,13 @@ const receiveMessage = require('./tests/receive-message');
const createRoom = require('./tests/create-room'); const createRoom = require('./tests/create-room');
const changeRoomSettings = require('./tests/room-settings'); const changeRoomSettings = require('./tests/room-settings');
const acceptServerNoticesInviteAndConsent = require('./tests/server-notices-consent'); const acceptServerNoticesInviteAndConsent = require('./tests/server-notices-consent');
const getE2EDeviceFromSettings = require('./tests/e2e-device'); const {enableLazyLoading, getE2EDeviceFromSettings} = require('./tests/settings');
const verifyDeviceForUser = require("./tests/verify-device"); const verifyDeviceForUser = require("./tests/verify-device");
module.exports = async function scenario(createSession, createRestSession) { module.exports = async function scenario(createSession, createRestSession) {
async function createUser(username) { async function createUser(username) {
const session = await createSession(username); const session = await createSession(username);
await signup(session, session.username, 'testtest'); await signup(session, session.username, 'testtest', session.hsUrl);
await acceptServerNoticesInviteAndConsent(session); await acceptServerNoticesInviteAndConsent(session);
return session; return session;
} }
@ -83,3 +83,8 @@ async function createE2ERoomAndTalk(alice, bob) {
await sendMessage(bob, bobMessage); await sendMessage(bob, bobMessage);
await receiveMessage(alice, {sender: "bob", body: bobMessage, encrypted: true}); await receiveMessage(alice, {sender: "bob", body: bobMessage, encrypted: true});
} }
async function aLLtest(alice, bob) {
await enableLazyLoading(alice);
}

View file

@ -58,9 +58,10 @@ class Logger {
} }
module.exports = class RiotSession { module.exports = class RiotSession {
constructor(browser, page, username, riotserver) { constructor(browser, page, username, riotserver, hsUrl) {
this.browser = browser; this.browser = browser;
this.page = page; this.page = page;
this.hsUrl = hsUrl;
this.riotserver = riotserver; this.riotserver = riotserver;
this.username = username; this.username = username;
this.consoleLog = new LogBuffer(page, "console", (msg) => `${msg.text()}\n`); this.consoleLog = new LogBuffer(page, "console", (msg) => `${msg.text()}\n`);
@ -72,14 +73,14 @@ module.exports = class RiotSession {
this.log = new Logger(this.username); this.log = new Logger(this.username);
} }
static async create(username, puppeteerOptions, riotserver) { static async create(username, puppeteerOptions, riotserver, hsUrl) {
const browser = await puppeteer.launch(puppeteerOptions); const browser = await puppeteer.launch(puppeteerOptions);
const page = await browser.newPage(); const page = await browser.newPage();
await page.setViewport({ await page.setViewport({
width: 1280, width: 1280,
height: 800 height: 800
}); });
return new RiotSession(browser, page, username, riotserver); return new RiotSession(browser, page, username, riotserver, hsUrl);
} }
async tryGetInnertext(selector) { async tryGetInnertext(selector) {
@ -161,6 +162,22 @@ module.exports = class RiotSession {
return await this.queryAll(selector); return await this.queryAll(selector);
} }
waitForReload(timeout = 5000) {
return new Promise((resolve, reject) => {
const timeoutHandle = setTimeout(() => {
this.browser.removeEventListener('domcontentloaded', callback);
reject(new Error(`timeout of ${timeout}ms for waitForReload elapsed`));
}, timeout);
const callback = async () => {
clearTimeout(timeoutHandle);
resolve();
};
this.page.once('domcontentloaded', callback);
});
}
waitForNewPage(timeout = 5000) { waitForNewPage(timeout = 5000) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const timeoutHandle = setTimeout(() => { const timeoutHandle = setTimeout(() => {

View file

@ -1,31 +0,0 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
const assert = require('assert');
module.exports = async function getE2EDeviceFromSettings(session) {
session.log.step(`gets e2e device/key from settings`);
const settingsButton = await session.query('.mx_BottomLeftMenu_settings');
await settingsButton.click();
const deviceAndKey = await session.waitAndQueryAll(".mx_UserSettings_section.mx_UserSettings_cryptoSection code", 1000);
assert.equal(deviceAndKey.length, 2);
const id = await (await deviceAndKey[0].getProperty("innerText")).jsonValue();
const key = await (await deviceAndKey[1].getProperty("innerText")).jsonValue();
const closeButton = await session.query(".mx_RoomHeader_cancelButton");
await closeButton.click();
session.log.done();
return {id, key};
}

View file

@ -25,5 +25,7 @@ module.exports = async function sendMessage(session, message) {
const text = await session.innerText(composer); const text = await session.innerText(composer);
assert.equal(text.trim(), message.trim()); assert.equal(text.trim(), message.trim());
await composer.press("Enter"); await composer.press("Enter");
// wait for the message to appear sent
await session.waitAndQuery(".mx_EventTile_last:not(.mx_EventTile_sending)");
session.log.done(); session.log.done();
} }

View file

@ -26,6 +26,8 @@ program
.option('--riot-url [url]', "riot url to test", "http://localhost:5000") .option('--riot-url [url]', "riot url to test", "http://localhost:5000")
.parse(process.argv); .parse(process.argv);
const hsUrl = 'http://localhost:5005';
async function runTests() { async function runTests() {
let sessions = []; let sessions = [];
console.log("running tests ..."); console.log("running tests ...");
@ -43,7 +45,7 @@ async function runTests() {
const restCreator = new RestSessionCreator( const restCreator = new RestSessionCreator(
'synapse/installations/consent', 'synapse/installations/consent',
'http://localhost:5005', hsUrl,
__dirname __dirname
); );
@ -52,7 +54,7 @@ async function runTests() {
} }
async function createSession(username) { async function createSession(username) {
const session = await RiotSession.create(username, options, program.riotUrl); const session = await RiotSession.create(username, options, program.riotUrl, hsUrl);
sessions.push(session); sessions.push(session);
return session; return session;
} }

View file

@ -31,9 +31,11 @@ python -m synapse.app.homeserver \
--generate-config \ --generate-config \
--report-stats=no --report-stats=no
# apply configuration # apply configuration
REGISTRATION_SHARED_SECRET=$(uuidgen)
cp -r $BASE_DIR/config-templates/$CONFIG_TEMPLATE/. ./ cp -r $BASE_DIR/config-templates/$CONFIG_TEMPLATE/. ./
sed -i "s#{{SYNAPSE_ROOT}}#$(pwd)/#g" homeserver.yaml sed -i "s#{{SYNAPSE_ROOT}}#$(pwd)/#g" homeserver.yaml
sed -i "s#{{SYNAPSE_PORT}}#${PORT}#g" homeserver.yaml sed -i "s#{{SYNAPSE_PORT}}#${PORT}#g" homeserver.yaml
sed -i "s#{{FORM_SECRET}}#$(uuidgen)#g" homeserver.yaml sed -i "s#{{FORM_SECRET}}#$(uuidgen)#g" homeserver.yaml
sed -i "s#{{REGISTRATION_SHARED_SECRET}}#$(uuidgen)#g" homeserver.yaml sed -i "s#{{REGISTRATION_SHARED_SECRET}}#${REGISTRATION_SHARED_SECRET}#g" homeserver.yaml
sed -i "s#{{MACAROON_SECRET_KEY}}#$(uuidgen)#g" homeserver.yaml sed -i "s#{{MACAROON_SECRET_KEY}}#$(uuidgen)#g" homeserver.yaml
echo REGISTRATION_SHARED_SECRET=$REGISTRATION_SHARED_SECRET=