diff options
Diffstat (limited to 'src/handlers/index.js')
-rw-r--r-- | src/handlers/index.js | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/handlers/index.js b/src/handlers/index.js index 188547c..d4eaf43 100644 --- a/src/handlers/index.js +++ b/src/handlers/index.js @@ -2,11 +2,33 @@ const { Types } = require('mongoose'); const Bluebird = require('bluebird'); const UserModel = require('../services/users/user.model.js'); const launchUserSession = require('./launchUserSession.js'); +const attendConference = require('./attendConference.js'); +const { clickElementBySelector } = require('./utils.js'); + +const { EDUFPMI_URL } = process.env; const handleJobAsUser = async (job, user) => { console.log(`Running job as ${user.username}`); - return launchUserSession(user); + + const { conferenceId } = job.attrs.data; + const conferenceUrl = `${EDUFPMI_URL}/mod/bigbluebuttonbn/view.php?id=${conferenceId}`; + + const browser = await launchUserSession(user, false); + const page = await browser.newPage(); + await page.goto(conferenceUrl); + + // Launch the conference in a new tab + const conferencePagePromise = new Promise(resolve => browser.on( + 'targetcreated', + target => resolve(target.page()) + )); + await clickElementBySelector(page, 'input#join_button_input'); + const conferencePage = await conferencePagePromise; + + await attendConference(conferencePage, () => console.log(`Joined the conference at ${conferenceUrl}`)); + + await browser.close(); }; const handleJob = async job => { @@ -19,7 +41,7 @@ const handleJob = async job => { } }); - console.log({ participants }) + console.log('Participants: ', participants.map(participant => participant.username)); return Bluebird.map(participants, participant => handleJobAsUser(job, participant)); }; |