add brekout room invitation stress test
This commit is contained in:
parent
0f56a05a93
commit
fcd60a76b6
@ -192,7 +192,7 @@ class BreakoutJoinConfirmation extends Component {
|
||||
))
|
||||
}
|
||||
</select>
|
||||
{ waiting ? <span>{intl.formatMessage(intlMessages.generatingURL)}</span> : null}
|
||||
{ waiting ? <span data-test="labelGeneratingURL">{intl.formatMessage(intlMessages.generatingURL)}</span> : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -539,6 +539,7 @@ class BreakoutRoom extends PureComponent {
|
||||
size="lg"
|
||||
label={intl.formatMessage(intlMessages.endAllBreakouts)}
|
||||
className={styles.endButton}
|
||||
data-test="endBreakoutRoomsButton"
|
||||
onClick={() => {
|
||||
this.closePanel();
|
||||
endAllBreakouts();
|
||||
|
@ -10,6 +10,7 @@ exports.CLIENT_RECONNECTION_TIMEOUT = 120000;
|
||||
// STRESS TESTS VARS
|
||||
exports.JOIN_AS_MODERATOR_TEST_ROUNDS = 100;
|
||||
exports.MAX_JOIN_AS_MODERATOR_FAIL_RATE = 0.05;
|
||||
exports.BREAKOUT_ROOM_INVITATION_TEST_ROUNDS = 10;
|
||||
|
||||
// MEDIA CONNECTION TIMEOUTS
|
||||
exports.VIDEO_LOADING_WAIT_TIME = 15000;
|
||||
|
@ -52,6 +52,9 @@ exports.breakoutRoomsButton = 'div[aria-label="Breakout Rooms"]';
|
||||
exports.generateRoom1 = 'button[aria-label="Generate URL Room 1"]';
|
||||
exports.joinGeneratedRoom1 = 'button[aria-label="Generated Room 1"]';
|
||||
exports.joinRoom1 = 'button[aria-label="Join room Room 1"]';
|
||||
exports.allowChoiceRoom = 'input[id="freeJoinCheckbox"]';
|
||||
exports.labelGeneratingURL = 'span[data-test="labelGeneratingURL"]';
|
||||
exports.endBreakoutRoomsButton = 'button[data-test="endBreakoutRoomsButton"]';
|
||||
|
||||
// Chat
|
||||
exports.chatButton = 'div[data-test="chatButton"]';
|
||||
|
@ -4,9 +4,10 @@ const c = require('../core/constants');
|
||||
const util = require('./util');
|
||||
const { checkElementLengthEqualTo } = require('../core/util');
|
||||
|
||||
class Stress extends Page {
|
||||
class Stress {
|
||||
constructor() {
|
||||
super();
|
||||
this.modPage = new Page();
|
||||
this.userPages = [];
|
||||
}
|
||||
|
||||
async moderatorAsPresenter(testName) {
|
||||
@ -14,26 +15,97 @@ class Stress extends Page {
|
||||
const maxFailRate = c.JOIN_AS_MODERATOR_TEST_ROUNDS * c.MAX_JOIN_AS_MODERATOR_FAIL_RATE;
|
||||
let failureCount = 0;
|
||||
for (let i = 1; i <= c.JOIN_AS_MODERATOR_TEST_ROUNDS; i++) {
|
||||
await this.init(true, true, testName, `Moderator-${i}`);
|
||||
await this.waitForSelector(e.userAvatar);
|
||||
const hasPresenterClass = await this.page.evaluate(util.checkIncludeClass, e.userAvatar, e.presenterClassName);
|
||||
await this.waitAndClick(e.actions);
|
||||
const canStartPoll = await this.page.evaluate(checkElementLengthEqualTo, e.polling, 1);
|
||||
await this.modPage.init(true, true, testName, `Moderator-${i}`);
|
||||
await this.modPage.waitForSelector(e.userAvatar);
|
||||
const hasPresenterClass = await this.modPage.page.evaluate(util.checkIncludeClass, e.userAvatar, e.presenterClassName);
|
||||
await this.modPage.waitAndClick(e.actions);
|
||||
const canStartPoll = await this.modPage.page.evaluate(checkElementLengthEqualTo, e.polling, 1);
|
||||
if (!hasPresenterClass || !canStartPoll) {
|
||||
failureCount++;
|
||||
await this.screenshot(testName, `loop-${i}-failure-${testName}`);
|
||||
await this.modPage.screenshot(testName, `loop-${i}-failure-${testName}`);
|
||||
}
|
||||
await this.close();
|
||||
await this.logger(`Loop ${i} of ${c.JOIN_AS_MODERATOR_TEST_ROUNDS} completed`);
|
||||
await this.modPage.close();
|
||||
await this.modPage.logger(`Loop ${i} of ${c.JOIN_AS_MODERATOR_TEST_ROUNDS} completed`);
|
||||
if (failureCount > maxFailRate) return false;
|
||||
}
|
||||
return true;
|
||||
} catch (err) {
|
||||
await this.close();
|
||||
this.logger(err);
|
||||
await this.modPage.logger(err);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
async breakoutRoomInvitation(testName) {
|
||||
try {
|
||||
await this.modPage.init(true, true, testName, 'Moderator');
|
||||
for (let i = 1; i <= c.BREAKOUT_ROOM_INVITATION_TEST_ROUNDS; i++) {
|
||||
const userName = `User-${i}`;
|
||||
const userPage = new Page();
|
||||
await userPage.init(false, true, testName, userName, this.modPage.meetingId);
|
||||
await userPage.logger(`${userName} joined`);
|
||||
this.userPages.push(userPage);
|
||||
}
|
||||
|
||||
// Create breakout rooms with the allow choice option enabled
|
||||
await this.modPage.bringToFront();
|
||||
await this.modPage.waitAndClick(e.manageUsers);
|
||||
await this.modPage.waitAndClick(e.createBreakoutRooms);
|
||||
await this.modPage.waitAndClick(e.allowChoiceRoom);
|
||||
await this.modPage.screenshot(testName, '01-modPage-before-create-breakout-rooms-allowing-choice');
|
||||
await this.modPage.waitAndClick(e.modalConfirmButton);
|
||||
|
||||
for (const page of this.userPages) {
|
||||
await page.bringToFront();
|
||||
const firstCheck = await page.hasElement(e.modalConfirmButton, c.ELEMENT_WAIT_LONGER_TIME);
|
||||
const secondCheck = await page.wasRemoved(e.labelGeneratingURL, c.ELEMENT_WAIT_LONGER_TIME);
|
||||
|
||||
if (!firstCheck || !secondCheck) {
|
||||
await page.screenshot(testName, `${page.effectiveParams.fullName}-breakout-modal-failed`);
|
||||
return false;
|
||||
}
|
||||
await page.screenshot(testName, `${page.effectiveParams.fullName}-breakout-modal-allowing-choice-success`);
|
||||
}
|
||||
|
||||
// End breakout rooms
|
||||
await this.modPage.bringToFront();
|
||||
await this.modPage.waitAndClick(e.breakoutRoomsItem);
|
||||
await this.modPage.waitAndClick(e.endBreakoutRoomsButton);
|
||||
await this.modPage.closeAudioModal();
|
||||
|
||||
// Create breakout rooms with the allow choice option NOT enabled (randomly assign)
|
||||
await this.modPage.waitAndClick(e.manageUsers);
|
||||
await this.modPage.waitAndClick(e.createBreakoutRooms);
|
||||
await this.modPage.waitAndClick(e.randomlyAssign);
|
||||
await this.modPage.screenshot(testName, '02-modPage-before-create-breakout-rooms-not-allowing-choice');
|
||||
await this.modPage.waitAndClick(e.modalConfirmButton);
|
||||
|
||||
for (const page of this.userPages) {
|
||||
await page.bringToFront();
|
||||
const check = await page.hasElement(e.modalConfirmButton);
|
||||
|
||||
if (!check) {
|
||||
await page.screenshot(testName, `${page.effectiveParams.fullName}-breakout-modal-not-allowing-choose-failed`);
|
||||
return false;
|
||||
}
|
||||
await page.screenshot(testName, `${page.effectiveParams.fullName}-breakout-modal-not-allowing-choose-success`);
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (err) {
|
||||
await this.modPage.logger(err);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
async closeUserPages() {
|
||||
for (const page of this.userPages) {
|
||||
try {
|
||||
await page.close();
|
||||
} catch (err) {
|
||||
await this.modPage.logger(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = exports = Stress;
|
@ -7,11 +7,31 @@ const stressTest = () => {
|
||||
let response;
|
||||
try {
|
||||
const testName = 'firstModeratorAsPresenter';
|
||||
await test.logger('begin of ', testName);
|
||||
await test.modPage.logger('begin of ', testName);
|
||||
response = await test.moderatorAsPresenter(testName);
|
||||
await test.logger('end of ', testName);
|
||||
await test.modPage.logger('end of ', testName);
|
||||
} catch (err) {
|
||||
await test.logger(err);
|
||||
await test.modPage.logger(err);
|
||||
} finally {
|
||||
await test.modPage.close();
|
||||
}
|
||||
expect(response).toBe(true);
|
||||
});
|
||||
|
||||
// Check that all users invited to a breakout room can join it
|
||||
test.only('All users must receive breakout room invitations', async () => {
|
||||
const test = new Stress();
|
||||
let response;
|
||||
try {
|
||||
const testName = 'breakoutRoomInvitation';
|
||||
await test.modPage.logger('begin of ', testName);
|
||||
response = await test.breakoutRoomInvitation(testName);
|
||||
await test.modPage.logger('end of ', testName);
|
||||
} catch (err) {
|
||||
await test.modPage.logger(err);
|
||||
} finally {
|
||||
await test.modPage.close();
|
||||
await test.closeUserPages();
|
||||
}
|
||||
expect(response).toBe(true);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user