bigbluebutton-Github/bigbluebutton-tests/puppeteer/customparameters/util.js

202 lines
5.5 KiB
JavaScript
Raw Normal View History

const path = require('path');
2021-08-20 04:22:31 +08:00
const e = require('../core/elements');
2021-10-18 22:23:00 +08:00
const c = require('./constants');
2021-09-23 01:17:56 +08:00
const { ELEMENT_WAIT_LONGER_TIME } = require('../core/constants');
2021-10-18 22:23:00 +08:00
const { checkElementLengthEqualTo, checkElementLengthDifferentTo, checkElementText, checkElement } = require('../core/util');
async function autoJoinTest(test) {
2021-08-20 04:22:31 +08:00
try {
const resp = await test.page.evaluate(checkElementLengthEqualTo, e.audioModal, 0);
2021-08-20 04:22:31 +08:00
return resp === true;
} catch (err) {
console.log(err);
2021-08-20 04:22:31 +08:00
return false;
}
}
2020-05-13 23:26:30 +08:00
async function listenOnlyMode(test) {
2021-08-20 04:22:31 +08:00
// maybe not used
2020-05-13 23:26:30 +08:00
try {
const resp = await test.page.evaluate(async (connectionSelector, echoYesButton) => {
2021-08-20 04:22:31 +08:00
await document.querySelectorAll(connectionSelector)[0];
return document.querySelectorAll(echoYesButton).length !== 0;
}, e.connectingStatus, e.echoYesButton);
2021-08-20 04:22:31 +08:00
return resp === true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
2020-05-13 23:26:30 +08:00
}
}
async function forceListenOnly(test) {
try {
const checkEchoYes = await test.page.evaluate(checkElementLengthEqualTo, e.echoYesButton, 0);
2021-08-21 04:33:57 +08:00
if (!checkEchoYes) return false;
const resp = await test.page.evaluate(checkElementText, e.toastContainer, 'You have joined the audio conference');
2021-08-21 04:33:57 +08:00
2021-08-20 04:22:31 +08:00
return resp === true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
2021-08-20 04:22:31 +08:00
return false
}
}
async function skipCheck(test) {
2021-08-20 04:22:31 +08:00
// maybe not used
try {
await test.waitForSelector(e.toastContainer);
2021-08-21 04:33:57 +08:00
const resp1 = await test.page.evaluate(checkElementLengthDifferentTo, e.toastContainer, 0);
await test.waitForSelector(e.muteMicrophoneBtn);
const resp2 = await test.page.evaluate(checkElementLengthDifferentTo, e.muteMicrophoneBtn, 0);
return resp1 === true && resp2 === true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
2021-08-20 04:22:31 +08:00
return false;
}
}
function hexToRgb(hex) {
const bigint = parseInt(hex, 16);
const r = (bigint >> 16) & 255;
const g = (bigint >> 8) & 255;
const b = bigint & 255;
return `rgb(${r}, ${g}, ${b})`;
}
async function zoomIn(test) {
try {
2021-08-20 04:22:31 +08:00
await test.page.evaluate((zoomIn) => {
setInterval(() => {
2021-08-20 04:22:31 +08:00
document.querySelector(zoomIn).scrollBy(0, 10);
}, 100);
2021-08-20 04:22:31 +08:00
}, e.zoomIn);
return true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
return false;
}
}
async function zoomOut(test) {
try {
2021-08-20 04:22:31 +08:00
await test.page.evaluate((zoomIn) => {
setInterval(() => {
2021-08-20 04:22:31 +08:00
document.querySelector(zoomIn).scrollBy(10, 0);
}, 100);
2021-08-20 04:22:31 +08:00
}, e.zoomIn);
return true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
return false;
}
}
async function poll(page1, page2) {
try {
await page1.waitForSelector(e.whiteboard, ELEMENT_WAIT_LONGER_TIME);
await page1.waitAndClick(e.actions);
await page1.waitAndClick(e.polling);
await page1.waitAndClick(e.pollYesNoAbstentionBtn);
await page1.waitAndClick(e.startPoll);
await page2.waitForSelector(e.pollingContainer);
await page2.waitAndClick(e.yesBtn);
await page1.waitAndClick(e.publishPollingLabel);
return true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
return false;
}
}
async function previousSlide(test) {
try {
await test.waitAndClick(e.prevSlide);
return true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
return false;
}
}
async function nextSlide(test) {
try {
await test.waitAndClick(e.nextSlide);
return true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
return false;
}
}
async function annotation(test) {
await test.waitAndClick(e.tools);
await test.waitAndClick(e.pencil);
await test.waitAndClick(e.whiteboard);
2021-08-20 04:22:31 +08:00
const annoted = await test.page.evaluate((whiteboard) => {
return document.querySelectorAll(`${whiteboard} > g > g`)[1].innerHTML !== '';
}, e.whiteboard);
return annoted === true;
}
async function presetationUpload(test) {
try {
await test.waitAndClick(e.actions);
await test.waitAndClick(e.uploadPresentation);
const elementHandle = await test.page.$(e.fileUpload);
2021-08-15 03:43:44 +08:00
await elementHandle.uploadFile(path.join(__dirname, `../media/${e.pdfFileName}.pdf`));
await test.waitAndClick(e.confirmBtn);
return true;
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
return false;
}
}
2021-08-03 01:46:17 +08:00
function encodeCustomParams(param) {
try {
let splited = param.split('=');
splited[1] = encodeURIComponent(splited[1]).replace(/%20/g, '+');
return splited.join('=');
2021-08-26 22:13:18 +08:00
} catch (err) {
console.log(err);
2021-08-03 01:46:17 +08:00
}
}
2021-10-18 22:23:00 +08:00
function getAllShortcutParams() {
const getParams = (shortcutArray) => {
return Object.values(shortcutArray.map(e => `"${e.param}"`));
}
return c.shortcuts.replace('$', [...getParams(c.initialShortcuts), ...getParams(c.laterShortcuts)]);
}
async function checkAccesskey(test, key) {
return test.page.evaluate(checkElement, `[accesskey="${key}"]`);
}
async function checkShortcutsArray(test, shortcut) {
for (const { param, key } of shortcut) {
const resp = await checkAccesskey(test, key);
if (!resp) {
await test.logger(`${param} shortcut failed`)
return false;
}
}
return true;
}
exports.zoomIn = zoomIn;
exports.zoomOut = zoomOut;
exports.poll = poll;
exports.previousSlide = previousSlide;
exports.nextSlide = nextSlide;
exports.annotation = annotation;
exports.presetationUpload = presetationUpload;
exports.hexToRgb = hexToRgb;
exports.autoJoinTest = autoJoinTest;
2020-05-13 23:26:30 +08:00
exports.listenOnlyMode = listenOnlyMode;
exports.forceListenOnly = forceListenOnly;
exports.skipCheck = skipCheck;
2021-08-03 01:46:17 +08:00
exports.encodeCustomParams = encodeCustomParams;
2021-10-18 22:23:00 +08:00
exports.getAllShortcutParams = getAllShortcutParams;
exports.checkAccesskey = checkAccesskey;
exports.checkShortcutsArray = checkShortcutsArray;