working consent test by accepting server notices invite and clicking on link, also create room

This commit is contained in:
Bruno Windels 2018-07-20 18:51:25 +02:00
parent bc1da0565e
commit a74a753a05
6 changed files with 132 additions and 16 deletions

28
tests/consent.js Normal file
View file

@ -0,0 +1,28 @@
/*
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 helpers = require('../helpers');
const assert = require('assert');
module.exports = async function acceptTerms(page) {
const reviewTermsButton = await helpers.waitAndQuerySelector(page, '.mx_QuestionDialog button.mx_Dialog_primary', 5000);
const termsPagePromise = helpers.waitForNewPage();
await reviewTermsButton.click();
const termsPage = await termsPagePromise;
const acceptButton = await termsPage.$('input[type=submit]');
await acceptButton.click();
await helpers.delay(500); //TODO yuck, timers
}

32
tests/create-room.js Normal file
View file

@ -0,0 +1,32 @@
/*
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 helpers = require('../helpers');
const assert = require('assert');
module.exports = async function createRoom(page, roomName) {
//TODO: brittle selector
const createRoomButton = await helpers.waitAndQuerySelector(page, '.mx_RoleButton[aria-label="Create new room"]');
await createRoomButton.click();
const roomNameInput = await helpers.waitAndQuerySelector(page, '.mx_CreateRoomDialog_input');
await helpers.replaceInputText(roomNameInput, roomName);
const createButton = await helpers.waitAndQuerySelector(page, '.mx_Dialog_primary');
await createButton.click();
await page.waitForSelector('.mx_MessageComposer');
}

View file

@ -0,0 +1,44 @@
/*
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 helpers = require('../helpers');
const assert = require('assert');
module.exports = async function acceptServerNoticesInviteAndConsent(page, name) {
//TODO: brittle selector
const invitesHandles = await helpers.waitAndQueryAll(page, '.mx_RoomTile_name.mx_RoomTile_invite');
const invitesWithText = await Promise.all(invitesHandles.map(async (inviteHandle) => {
const text = await helpers.innerText(page, inviteHandle);
return {inviteHandle, text};
}));
const inviteHandle = invitesWithText.find(({inviteHandle, text}) => {
return text.trim() === name;
}).inviteHandle;
await inviteHandle.click();
const acceptInvitationLink = await helpers.waitAndQuerySelector(page, ".mx_RoomPreviewBar_join_text a:first-child");
await acceptInvitationLink.click();
const consentLink = await helpers.waitAndQuerySelector(page, ".mx_EventTile_body a", 1000);
const termsPagePromise = helpers.waitForNewPage();
await consentLink.click();
const termsPage = await termsPagePromise;
const acceptButton = await termsPage.$('input[type=submit]');
await acceptButton.click();
await helpers.delay(500); //TODO yuck, timers
}

View file

@ -65,9 +65,9 @@ module.exports = async function signup(page, username, password, homeserver) {
console.log(xhrLogs.logs());
*/
await acceptTerms(page);
//await acceptTerms(page);
await helpers.delay(10000);
await helpers.delay(2000);
//printElements('page', await page.$('#matrixchat'));
// await navigation_promise;
@ -75,13 +75,3 @@ module.exports = async function signup(page, username, password, homeserver) {
const url = page.url();
assert.strictEqual(url, helpers.riotUrl('/#/home'));
}
async function acceptTerms(page) {
const reviewTermsButton = await helpers.waitAndQuerySelector(page, '.mx_QuestionDialog button.mx_Dialog_primary');
const termsPagePromise = helpers.waitForNewPage();
await reviewTermsButton.click();
const termsPage = await termsPagePromise;
const acceptButton = await termsPage.$('input[type=submit]');
await acceptButton.click();
await helpers.delay(500); //TODO yuck, timers
}