2024-03-06 22:26:03 +08:00
|
|
|
const { devices } = require('@playwright/test');
|
|
|
|
const { test } = require('../fixtures');
|
2021-11-03 00:45:52 +08:00
|
|
|
const { Status } = require('./status');
|
2021-11-16 00:42:29 +08:00
|
|
|
const { MultiUsers } = require('./multiusers');
|
2022-01-20 03:50:59 +08:00
|
|
|
const { GuestPolicy } = require('./guestPolicy');
|
2022-01-29 03:52:22 +08:00
|
|
|
const { LockViewers } = require('./lockViewers');
|
2022-01-20 03:50:59 +08:00
|
|
|
const { MobileDevices } = require('./mobileDevices');
|
2023-10-26 04:29:52 +08:00
|
|
|
const { Timer } = require('./timer');
|
2021-12-10 21:30:29 +08:00
|
|
|
const motoG4 = devices['Moto G4'];
|
|
|
|
const iPhone11 = devices['iPhone 11'];
|
2021-11-03 00:45:52 +08:00
|
|
|
|
2022-01-20 03:50:59 +08:00
|
|
|
test.describe.parallel('User', () => {
|
2022-01-20 21:12:54 +08:00
|
|
|
test.describe.parallel('Actions', () => {
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#set-status--raise-hand-automated
|
2023-07-31 22:24:25 +08:00
|
|
|
test('Raise and lower Hand', async ({ browser, context, page }) => {
|
2022-01-20 21:12:54 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
2022-07-15 22:08:02 +08:00
|
|
|
await multiusers.initModPage(page, true);
|
2022-03-29 21:53:07 +08:00
|
|
|
await multiusers.raiseAndLowerHand();
|
2022-01-20 21:12:54 +08:00
|
|
|
});
|
2022-02-08 03:22:48 +08:00
|
|
|
|
2023-02-04 04:04:45 +08:00
|
|
|
test('Raise Hand Rejected', async ({ browser, context, page }) => {
|
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page, true);
|
|
|
|
await multiusers.raiseHandRejected();
|
|
|
|
});
|
|
|
|
|
2023-09-14 04:11:15 +08:00
|
|
|
test('Toggle user list @ci', async ({ browser, context, page }) => {
|
2022-02-08 03:22:48 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page);
|
|
|
|
await multiusers.toggleUserList();
|
|
|
|
});
|
2021-11-03 00:45:52 +08:00
|
|
|
});
|
2021-12-02 12:12:14 +08:00
|
|
|
|
2022-01-20 21:12:54 +08:00
|
|
|
test.describe.parallel('List', () => {
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#set-status--raise-hand-automated
|
2023-09-26 01:40:11 +08:00
|
|
|
test('Change user status @ci', async ({ browser, page }) => {
|
2022-01-20 21:12:54 +08:00
|
|
|
const status = new Status(browser, page);
|
|
|
|
await status.init(true, true);
|
|
|
|
await status.changeUserStatus();
|
|
|
|
});
|
2021-12-10 21:30:29 +08:00
|
|
|
|
2022-01-20 21:12:54 +08:00
|
|
|
test('User presence check (multiple users)', async ({ browser, context, page }) => {
|
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initPages(page);
|
|
|
|
await multiusers.userPresence();
|
|
|
|
});
|
2022-02-08 02:01:47 +08:00
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#make-viewer-a-presenter-automated
|
2023-09-14 04:11:15 +08:00
|
|
|
test('Make presenter @ci', async ({ browser, context, page }) => {
|
2022-02-08 02:45:42 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initPages(page);
|
|
|
|
await multiusers.makePresenter();
|
|
|
|
});
|
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#taking-presenter-status-back-automated
|
2023-09-14 04:11:15 +08:00
|
|
|
test('Take presenter @ci', async ({ browser, context, page }) => {
|
2022-02-08 02:45:42 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page);
|
|
|
|
await multiusers.initModPage2();
|
|
|
|
await multiusers.takePresenter();
|
|
|
|
});
|
|
|
|
|
2023-09-14 04:11:15 +08:00
|
|
|
test('Promote to moderator @ci', async ({ browser, context, page }) => {
|
2022-02-08 02:01:47 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
2022-02-08 03:22:48 +08:00
|
|
|
await multiusers.initPages(page);
|
2022-02-08 02:01:47 +08:00
|
|
|
await multiusers.promoteToModerator();
|
|
|
|
});
|
|
|
|
|
2023-09-14 04:11:15 +08:00
|
|
|
test('Demote to viewer @ci', async ({ browser, context, page }) => {
|
2022-02-08 02:01:47 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page);
|
|
|
|
await multiusers.initModPage2();
|
|
|
|
await multiusers.demoteToViewer();
|
|
|
|
});
|
2022-12-09 02:32:31 +08:00
|
|
|
|
2023-09-14 04:11:15 +08:00
|
|
|
test('Give and remove whiteboard access @ci', async ({ browser, context, page }) => {
|
2022-12-09 02:32:31 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page);
|
|
|
|
await multiusers.initModPage2();
|
|
|
|
await multiusers.giveAndRemoveWhiteboardAccess();
|
|
|
|
});
|
2023-01-13 19:16:49 +08:00
|
|
|
|
2023-11-03 02:51:51 +08:00
|
|
|
test('Remove user @ci', async ({ browser, context, page }) => {
|
2023-01-13 19:16:49 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page, true);
|
|
|
|
await multiusers.initModPage2(true);
|
|
|
|
await multiusers.removeUser();
|
|
|
|
});
|
|
|
|
|
2024-03-07 01:28:18 +08:00
|
|
|
// User is currently getting stuck when trying to rejoin - no error message is shown
|
|
|
|
test('Remove user and prevent rejoining @flaky', async ({ browser, context, page }) => {
|
2023-01-13 19:16:49 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page, true);
|
2023-08-23 04:25:50 +08:00
|
|
|
await multiusers.initModPage2(true, context, { joinParameter: 'userID=Moderator2' });
|
2023-01-13 19:16:49 +08:00
|
|
|
await multiusers.removeUserAndPreventRejoining(context);
|
|
|
|
});
|
2021-12-10 21:30:29 +08:00
|
|
|
});
|
|
|
|
|
2022-01-20 21:12:54 +08:00
|
|
|
test.describe.parallel('Manage', () => {
|
|
|
|
test.describe.parallel('Guest policy', () => {
|
2023-05-19 21:11:24 +08:00
|
|
|
test.describe.parallel('ASK_MODERATOR @ci', () => {
|
2022-10-11 04:08:47 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#ask-moderator
|
2022-10-11 01:47:44 +08:00
|
|
|
test('Message to guest lobby', async ({ browser, context, page }) => {
|
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.messageToGuestLobby();
|
|
|
|
});
|
2023-09-14 04:11:15 +08:00
|
|
|
test('Allow Everyone', async ({ browser, context, page }) => {
|
2022-10-11 01:47:44 +08:00
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.allowEveryone();
|
|
|
|
});
|
|
|
|
test('Deny Everyone', async ({ browser, context, page }) => {
|
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.denyEveryone();
|
|
|
|
});
|
2022-11-26 03:54:32 +08:00
|
|
|
|
2022-10-11 01:47:44 +08:00
|
|
|
test('Remember choice', async ({ browser, context, page }) => {
|
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.rememberChoice();
|
|
|
|
});
|
|
|
|
|
2023-05-19 21:11:24 +08:00
|
|
|
test.describe.parallel('Actions to specific pending user @ci', () => {
|
2022-10-11 01:47:44 +08:00
|
|
|
test('Message', async ({ browser, context, page }) => {
|
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.messageToSpecificUser();
|
|
|
|
});
|
2022-11-26 03:54:32 +08:00
|
|
|
|
2023-09-14 04:11:15 +08:00
|
|
|
test('Accept', async ({ browser, context, page }) => {
|
2022-10-11 01:47:44 +08:00
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.acceptSpecificUser();
|
|
|
|
});
|
2022-11-26 03:54:32 +08:00
|
|
|
|
2022-10-11 01:47:44 +08:00
|
|
|
test('Deny', async ({ browser, context, page }) => {
|
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.denySpecificUser();
|
|
|
|
});
|
|
|
|
});
|
2022-01-20 21:12:54 +08:00
|
|
|
});
|
2021-12-10 21:30:29 +08:00
|
|
|
|
2022-01-20 21:12:54 +08:00
|
|
|
test('ALWAYS_ACCEPT', async ({ browser, context, page }) => {
|
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.alwaysAccept();
|
|
|
|
});
|
2022-10-11 04:08:47 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#always-deny
|
2023-05-19 21:11:24 +08:00
|
|
|
test('ALWAYS_DENY @ci', async ({ browser, context, page }) => {
|
2022-01-20 21:12:54 +08:00
|
|
|
const guestPolicy = new GuestPolicy(browser, context);
|
|
|
|
await guestPolicy.initModPage(page);
|
|
|
|
await guestPolicy.alwaysDeny();
|
|
|
|
});
|
2022-01-20 03:50:59 +08:00
|
|
|
});
|
2022-02-04 04:07:25 +08:00
|
|
|
|
2023-09-26 21:07:32 +08:00
|
|
|
test.describe.parallel('Lock viewers @ci', () => {
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#webcam
|
2022-02-04 04:07:25 +08:00
|
|
|
test('Lock Share webcam', async ({ browser, context, page }) => {
|
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockShareWebcam();
|
2022-02-04 04:07:25 +08:00
|
|
|
});
|
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#see-other-viewers-webcams
|
2023-11-03 02:51:51 +08:00
|
|
|
test('Lock See other viewers webcams', async ({ browser, context, page }) => {
|
2022-02-04 04:07:25 +08:00
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockSeeOtherViewersWebcams();
|
2022-02-04 04:07:25 +08:00
|
|
|
});
|
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#microphone
|
2022-02-04 04:07:25 +08:00
|
|
|
test('Lock Share microphone', async ({ browser, context, page }) => {
|
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockShareMicrophone();
|
2022-02-04 04:07:25 +08:00
|
|
|
});
|
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#public-chat
|
2022-02-04 04:07:25 +08:00
|
|
|
test('Lock Send public chat messages', async ({ browser, context, page }) => {
|
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockSendPublicChatMessages();
|
2022-02-04 04:07:25 +08:00
|
|
|
});
|
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#private-chat
|
2022-02-04 04:07:25 +08:00
|
|
|
test('Lock Send private chat messages', async ({ browser, context, page }) => {
|
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockSendPrivateChatMessages();
|
2022-02-04 04:07:25 +08:00
|
|
|
});
|
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#shared-notes-1
|
2023-07-05 02:01:19 +08:00
|
|
|
test('Lock Edit Shared Notes', async ({ browser, context, page }) => {
|
2022-02-04 04:07:25 +08:00
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockEditSharedNotes();
|
2022-02-04 04:07:25 +08:00
|
|
|
});
|
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#see-other-viewers-in-the-users-list
|
2023-10-06 20:09:20 +08:00
|
|
|
test('Lock See other viewers in the Users list', async ({ browser, context, page }) => {
|
2022-02-04 04:07:25 +08:00
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockSeeOtherViewersUserList();
|
2023-07-03 21:01:05 +08:00
|
|
|
});
|
|
|
|
|
2024-03-02 03:52:29 +08:00
|
|
|
test('Lock see other viewers annotations', async ({ browser, context, page }) => {
|
2023-07-03 21:01:05 +08:00
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockSeeOtherViewersAnnotations();
|
2023-07-03 21:01:05 +08:00
|
|
|
});
|
|
|
|
|
2023-12-06 02:15:25 +08:00
|
|
|
test('Lock see other viewers cursor @flaky', async ({ browser, context, page }) => {
|
2023-07-03 21:01:05 +08:00
|
|
|
const lockViewers = new LockViewers(browser, context);
|
|
|
|
await lockViewers.initPages(page);
|
2023-07-05 21:05:57 +08:00
|
|
|
await lockViewers.lockSeeOtherViewersCursor();
|
2022-02-04 04:07:25 +08:00
|
|
|
});
|
|
|
|
});
|
2022-02-04 22:13:42 +08:00
|
|
|
|
2022-07-26 03:42:48 +08:00
|
|
|
// https://docs.bigbluebutton.org/2.6/release-tests.html#saving-usernames
|
2022-03-21 23:04:43 +08:00
|
|
|
test('Save user names', async ({ browser, context, page }, testInfo) => {
|
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initPages(page);
|
|
|
|
await multiusers.saveUserNames(testInfo);
|
|
|
|
});
|
|
|
|
|
2024-03-13 03:58:22 +08:00
|
|
|
// following test is not expected to work, the feature will be fully implemented as a plugin only
|
|
|
|
test.skip('Select random user', async ({ browser, context, page }) => {
|
2022-02-04 22:13:42 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page);
|
|
|
|
await multiusers.selectRandomUser();
|
|
|
|
});
|
2022-12-14 02:42:11 +08:00
|
|
|
|
|
|
|
test('Mute all users', async ({ browser, context, page }) => {
|
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page, false);
|
|
|
|
await multiusers.initModPage2(false);
|
|
|
|
await multiusers.initUserPage(false);
|
|
|
|
await multiusers.muteAllUsers();
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Mute all users except presenter', async ({ browser, context, page }) => {
|
|
|
|
const multiusers = new MultiUsers(browser, context);
|
|
|
|
await multiusers.initModPage(page, false);
|
|
|
|
await multiusers.initModPage2(false);
|
|
|
|
await multiusers.initUserPage(false);
|
|
|
|
await multiusers.muteAllUsersExceptPresenter();
|
|
|
|
});
|
2023-01-10 21:39:18 +08:00
|
|
|
|
2023-01-11 00:59:08 +08:00
|
|
|
test('Write closed captions', async ({ browser, context, page }) => {
|
2023-01-10 21:39:18 +08:00
|
|
|
const multiusers = new MultiUsers(browser, context);
|
2023-01-11 00:59:08 +08:00
|
|
|
await multiusers.initModPage(page, true);
|
|
|
|
await multiusers.initModPage2(true);
|
2023-01-10 21:39:18 +08:00
|
|
|
await multiusers.writeClosedCaptions();
|
|
|
|
});
|
2021-12-10 21:30:29 +08:00
|
|
|
});
|
|
|
|
|
2022-01-20 03:50:59 +08:00
|
|
|
test.describe.parallel('Mobile devices', () => {
|
2022-03-08 02:56:08 +08:00
|
|
|
test.beforeEach(({ browserName }) => {
|
|
|
|
test.skip(browserName === 'firefox', 'Mobile tests are not able in Firefox browser');
|
|
|
|
});
|
|
|
|
|
2023-09-16 03:38:43 +08:00
|
|
|
test('Mobile Tag Name For Mobile User @ci', async ({ browser }) => {
|
2022-01-20 03:50:59 +08:00
|
|
|
const context = await browser.newContext({ ...iPhone11 });
|
|
|
|
const mobilePage = await context.newPage();
|
|
|
|
const mobileDevices = new MobileDevices(browser, context);
|
|
|
|
await mobileDevices.initModPage(mobilePage);
|
|
|
|
await mobileDevices.mobileTagName();
|
|
|
|
});
|
2021-12-10 21:30:29 +08:00
|
|
|
|
2023-02-14 21:59:46 +08:00
|
|
|
test('Whiteboard should not be accessible when chat panel or user list are active on mobile devices', async ({ browser }) => {
|
2022-01-20 03:50:59 +08:00
|
|
|
test.fixme();
|
|
|
|
const iphoneContext = await browser.newContext({ ...iPhone11 });
|
|
|
|
const motoContext = await browser.newContext({ ...motoG4 });
|
|
|
|
const modPage = await iphoneContext.newPage();
|
|
|
|
const mobileDevices = new MobileDevices(browser, iphoneContext);
|
|
|
|
await mobileDevices.initModPage(modPage);
|
|
|
|
await mobileDevices.initUserPage(true, motoContext);
|
|
|
|
await mobileDevices.whiteboardNotAppearOnMobile();
|
|
|
|
});
|
|
|
|
|
2023-02-14 21:59:46 +08:00
|
|
|
test('User List should not appear when Chat Panel or Whiteboard are active on mobile devices', async ({ browser }) => {
|
2023-08-23 04:25:50 +08:00
|
|
|
test.fixme();
|
2022-01-20 03:50:59 +08:00
|
|
|
const iphoneContext = await browser.newContext({ ...iPhone11 });
|
|
|
|
const motoContext = await browser.newContext({ ...motoG4 });
|
|
|
|
const modPage = await iphoneContext.newPage();
|
|
|
|
const mobileDevices = new MobileDevices(browser, iphoneContext);
|
|
|
|
await mobileDevices.initModPage(modPage);
|
|
|
|
await mobileDevices.initUserPage(true, motoContext);
|
2023-02-14 21:59:46 +08:00
|
|
|
await mobileDevices.userListNotAppearOnMobile();
|
2022-01-20 03:50:59 +08:00
|
|
|
});
|
2021-12-10 21:30:29 +08:00
|
|
|
|
2023-02-14 21:59:46 +08:00
|
|
|
test('Chat Panel should not appear when UserList or Whiteboard are active on mobile devices', async ({ browser }) => {
|
2022-01-20 03:50:59 +08:00
|
|
|
const iphoneContext = await browser.newContext({ ...iPhone11 });
|
|
|
|
const motoContext = await browser.newContext({ ...motoG4 });
|
|
|
|
const modPage = await iphoneContext.newPage();
|
|
|
|
const mobileDevices = new MobileDevices(browser, iphoneContext);
|
|
|
|
await mobileDevices.initModPage(modPage);
|
|
|
|
await mobileDevices.initUserPage(true, motoContext);
|
|
|
|
await mobileDevices.chatPanelNotAppearOnMobile();
|
|
|
|
});
|
2021-12-10 21:30:29 +08:00
|
|
|
});
|
2021-11-03 06:50:20 +08:00
|
|
|
});
|
2023-10-26 04:29:52 +08:00
|
|
|
|
|
|
|
test('Timer', async ({ browser, context, page })=> {
|
|
|
|
const timer = new Timer(browser, context);
|
|
|
|
await timer.initModPage(page, true);
|
|
|
|
await timer.timerTest();
|
|
|
|
});
|