2022-03-29 21:53:07 +08:00
|
|
|
const { default: test } = require('@playwright/test');
|
2021-11-30 02:39:52 +08:00
|
|
|
const Page = require('../core/page');
|
2022-11-08 00:18:52 +08:00
|
|
|
const { MultiUsers } = require('../user/multiusers');
|
2022-03-29 21:53:07 +08:00
|
|
|
const { getSettings } = require('../core/settings');
|
2022-07-21 03:44:09 +08:00
|
|
|
const e = require('../core/elements');
|
2022-11-08 00:18:52 +08:00
|
|
|
const { startSharedNotes, getNotesLocator, getShowMoreButtonLocator, getExportButtonLocator, getExportPlainTextLocator, getMoveToWhiteboardLocator, getSharedNotesUserWithoutPermission } = require('./util');
|
2022-07-21 03:44:09 +08:00
|
|
|
const { expect } = require('@playwright/test');
|
2022-11-08 00:18:52 +08:00
|
|
|
const { ELEMENT_WAIT_TIME, ELEMENT_WAIT_LONGER_TIME, ELEMENT_WAIT_EXTRA_LONG_TIME } = require('../core/constants');
|
2022-07-21 03:44:09 +08:00
|
|
|
const { sleep } = require('../core/helpers');
|
2021-11-30 02:39:52 +08:00
|
|
|
|
2022-11-08 00:18:52 +08:00
|
|
|
class SharedNotes extends MultiUsers {
|
|
|
|
constructor(browser, context) {
|
|
|
|
super(browser, context);
|
2021-11-30 02:39:52 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
async openSharedNotes() {
|
2022-03-29 21:53:07 +08:00
|
|
|
const { sharedNotesEnabled } = getSettings();
|
|
|
|
test.fail(!sharedNotesEnabled, 'Shared notes is disabled');
|
2022-11-08 00:18:52 +08:00
|
|
|
await startSharedNotes(this.modPage);
|
2021-11-30 02:39:52 +08:00
|
|
|
}
|
2022-07-21 03:44:09 +08:00
|
|
|
|
|
|
|
async editMessage(notesLocator) {
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.down('Shift');
|
2022-07-21 03:44:09 +08:00
|
|
|
let i = 7;
|
|
|
|
while(i > 0) {
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.press('ArrowLeft');
|
2022-07-21 03:44:09 +08:00
|
|
|
i--;
|
|
|
|
}
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.up('Shift');
|
|
|
|
await this.modPage.press('Backspace');
|
2022-07-21 03:44:09 +08:00
|
|
|
i = 5;
|
|
|
|
while(i > 0) {
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.press('ArrowLeft');
|
2022-07-21 03:44:09 +08:00
|
|
|
i--;
|
|
|
|
}
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.press('!');
|
2022-07-21 03:44:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
async typeInSharedNotes() {
|
|
|
|
const { sharedNotesEnabled } = getSettings();
|
|
|
|
test.fail(!sharedNotesEnabled, 'Shared notes is disabled');
|
2022-11-08 00:18:52 +08:00
|
|
|
await startSharedNotes(this.modPage);
|
|
|
|
const notesLocator = getNotesLocator(this.modPage);
|
2022-07-21 03:44:09 +08:00
|
|
|
await notesLocator.type(e.message);
|
|
|
|
this.editMessage(notesLocator);
|
|
|
|
const editedMessage = '!Hello';
|
|
|
|
await expect(notesLocator).toContainText(editedMessage, { timeout : ELEMENT_WAIT_TIME });
|
|
|
|
}
|
|
|
|
|
|
|
|
async formatMessage(notesLocator) {
|
|
|
|
|
|
|
|
// U for '!'
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.down('Shift');
|
|
|
|
await this.modPage.press('ArrowLeft');
|
|
|
|
await this.modPage.up('Shift');
|
|
|
|
await this.modPage.press('Control+U');
|
|
|
|
await this.modPage.press('ArrowLeft');
|
2022-07-21 03:44:09 +08:00
|
|
|
|
|
|
|
// B for 'World'
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.down('Shift');
|
2022-07-21 03:44:09 +08:00
|
|
|
let i = 5;
|
|
|
|
while(i > 0) {
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.press('ArrowLeft');
|
2022-07-21 03:44:09 +08:00
|
|
|
i--;
|
|
|
|
}
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.up('Shift');
|
|
|
|
await this.modPage.press('Control+B');
|
|
|
|
await this.modPage.press('ArrowLeft');
|
2022-07-21 03:44:09 +08:00
|
|
|
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.press('ArrowLeft');
|
2022-07-21 03:44:09 +08:00
|
|
|
|
|
|
|
// I for 'Hello'
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.down('Shift');
|
2022-07-21 03:44:09 +08:00
|
|
|
i = 5;
|
|
|
|
while(i > 0) {
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.press('ArrowLeft');
|
2022-07-21 03:44:09 +08:00
|
|
|
i--;
|
|
|
|
}
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.up('Shift');
|
|
|
|
await this.modPage.press('Control+I');
|
|
|
|
await this.modPage.press('ArrowLeft');
|
2022-07-21 03:44:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
async formatTextInSharedNotes() {
|
|
|
|
const { sharedNotesEnabled } = getSettings();
|
|
|
|
test.fail(!sharedNotesEnabled, 'Shared notes is disabled');
|
2022-11-08 00:18:52 +08:00
|
|
|
await startSharedNotes(this.modPage);
|
|
|
|
const notesLocator = getNotesLocator(this.modPage);
|
2022-07-21 03:44:09 +08:00
|
|
|
await notesLocator.type(e.message);
|
2022-11-17 02:18:03 +08:00
|
|
|
await this.formatMessage(notesLocator);
|
2022-07-21 03:44:09 +08:00
|
|
|
const html = await notesLocator.innerHTML();
|
|
|
|
|
|
|
|
const uText = '<u>!</u>';
|
|
|
|
await expect(html.includes(uText)).toBeTruthy();
|
|
|
|
|
|
|
|
const bText = '<b>World</b>';
|
|
|
|
await expect(html.includes(bText)).toBeTruthy();
|
|
|
|
|
|
|
|
const iText = '<i>Hello</i>'
|
2022-11-17 02:18:03 +08:00
|
|
|
await expect(html.includes(iText)).toBeTruthy();
|
2022-07-21 03:44:09 +08:00
|
|
|
}
|
|
|
|
|
2022-11-08 00:18:52 +08:00
|
|
|
async exportSharedNotes(page) {
|
2022-07-21 03:44:09 +08:00
|
|
|
const { sharedNotesEnabled } = getSettings();
|
|
|
|
test.fail(!sharedNotesEnabled, 'Shared notes is disabled');
|
2022-11-08 00:18:52 +08:00
|
|
|
await startSharedNotes(this.modPage);
|
|
|
|
const notesLocator = getNotesLocator(this.modPage);
|
2022-07-21 03:44:09 +08:00
|
|
|
await notesLocator.type(e.message);
|
|
|
|
|
2022-11-08 00:18:52 +08:00
|
|
|
const showMoreButtonLocator = getShowMoreButtonLocator(this.modPage);
|
2022-07-21 03:44:09 +08:00
|
|
|
await showMoreButtonLocator.click();
|
|
|
|
|
2022-11-08 00:18:52 +08:00
|
|
|
const exportButtonLocator = getExportButtonLocator(this.modPage);
|
2022-07-21 03:44:09 +08:00
|
|
|
await exportButtonLocator.click();
|
|
|
|
|
2022-11-08 00:18:52 +08:00
|
|
|
const exportPlainTextLocator = getExportPlainTextLocator(this.modPage);
|
|
|
|
page.waitForEvent('download');
|
2022-07-21 03:44:09 +08:00
|
|
|
await exportPlainTextLocator.click();
|
|
|
|
await sleep(500);
|
|
|
|
}
|
2022-11-08 00:18:52 +08:00
|
|
|
|
2022-11-17 02:18:03 +08:00
|
|
|
async convertNotesToWhiteboard() {
|
2022-11-08 00:18:52 +08:00
|
|
|
const { sharedNotesEnabled } = getSettings();
|
|
|
|
test.fail(!sharedNotesEnabled, 'Shared notes is disabled');
|
|
|
|
await startSharedNotes(this.modPage);
|
|
|
|
const notesLocator = getNotesLocator(this.modPage);
|
|
|
|
await notesLocator.type('test');
|
|
|
|
await sleep(1000);
|
|
|
|
|
2022-11-12 02:35:14 +08:00
|
|
|
await this.modPage.waitAndClick(e.notesOptions);
|
2022-11-08 00:18:52 +08:00
|
|
|
await this.modPage.waitAndClick(e.sendNotesToWhiteboard);
|
|
|
|
|
|
|
|
await this.modPage.hasText(e.currentSlideText, /test/, 20000);
|
|
|
|
await this.userPage.hasText(e.currentSlideText, /test/);
|
|
|
|
}
|
|
|
|
|
|
|
|
async editSharedNotesWithMoreThanOneUSer() {
|
|
|
|
const { sharedNotesEnabled } = getSettings();
|
|
|
|
test.fail(!sharedNotesEnabled, 'Shared notes is disabled');
|
|
|
|
await startSharedNotes(this.modPage);
|
|
|
|
const notesLocator = getNotesLocator(this.modPage);
|
|
|
|
await notesLocator.type(e.message);
|
|
|
|
|
|
|
|
await startSharedNotes(this.userPage);
|
|
|
|
const notesLocatorUser = getNotesLocator(this.userPage);
|
|
|
|
await notesLocatorUser.press('Delete');
|
|
|
|
await notesLocatorUser.type('J');
|
|
|
|
|
|
|
|
const editedMessage = 'Jello World!';
|
|
|
|
await expect(notesLocator).toContainText(editedMessage, { timeout : ELEMENT_WAIT_TIME });
|
|
|
|
await expect(notesLocatorUser).toContainText(editedMessage, { timeout : ELEMENT_WAIT_TIME });
|
|
|
|
}
|
|
|
|
|
|
|
|
async seeNotesWithoutEditPermission() {
|
|
|
|
const { sharedNotesEnabled } = getSettings();
|
|
|
|
test.fail(!sharedNotesEnabled, 'Shared notes is disabled');
|
|
|
|
|
|
|
|
await startSharedNotes(this.modPage);
|
|
|
|
const notesLocator = getNotesLocator(this.modPage);
|
2022-11-17 02:18:03 +08:00
|
|
|
await notesLocator.type('Hello');
|
2022-11-08 00:18:52 +08:00
|
|
|
|
|
|
|
await startSharedNotes(this.userPage);
|
|
|
|
|
|
|
|
await this.modPage.waitAndClick(e.manageUsers);
|
|
|
|
await this.modPage.waitAndClick(e.lockViewersButton);
|
|
|
|
await this.modPage.waitAndClickElement(e.lockEditSharedNotes);
|
|
|
|
await this.modPage.waitAndClick(e.applyLockSettings);
|
|
|
|
|
|
|
|
const notesLocatorUser = getSharedNotesUserWithoutPermission(this.userPage);
|
|
|
|
await expect(notesLocatorUser).toContainText(/Hello/, { timeout : 20000 });
|
2022-11-17 02:18:03 +08:00
|
|
|
await this.userPage.wasRemoved(e.etherpadFrame);
|
|
|
|
}
|
|
|
|
|
|
|
|
async pinNotesOntoWhiteboard() {
|
|
|
|
const { sharedNotesEnabled } = getSettings();
|
|
|
|
test.fail(!sharedNotesEnabled, 'Shared notes is disabled');
|
|
|
|
|
|
|
|
await startSharedNotes(this.modPage);
|
|
|
|
await this.modPage.waitAndClick(e.notesOptions);
|
|
|
|
await this.modPage.waitAndClick(e.pinNotes);
|
|
|
|
await this.modPage.hasElement(e.unpinNotes);
|
2022-11-22 21:44:28 +08:00
|
|
|
|
2022-11-17 02:18:03 +08:00
|
|
|
const notesLocator = getNotesLocator(this.modPage);
|
|
|
|
await notesLocator.type('Hello');
|
2022-11-22 21:44:28 +08:00
|
|
|
const notesLocatorUser = getNotesLocator(this.userPage1);
|
2022-11-17 02:18:03 +08:00
|
|
|
|
|
|
|
await expect(notesLocator).toContainText(/Hello/, { timeout : 20000 });
|
2022-11-19 00:38:46 +08:00
|
|
|
await expect(notesLocatorUser).toContainText(/Hello/);
|
2022-11-08 00:18:52 +08:00
|
|
|
}
|
2021-11-30 02:39:52 +08:00
|
|
|
}
|
|
|
|
|
2022-11-08 00:18:52 +08:00
|
|
|
exports.SharedNotes = SharedNotes;
|