Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(webdriverio): Add webdriverio end to end test framework. #11016

Open
wants to merge 43 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
9857ad9
feat(webdriverio-tests): Create setup for webdriverio.
Jan 28, 2022
4fa46c8
feat(webdriverio-tests): Create setup for webdriverio.
Jan 31, 2022
c45b50d
webdriverio wip
Feb 16, 2022
537df4f
feat(webdriverio): Add webdriverio end to end test framework.
Feb 24, 2022
7183f9a
feat(webdriverio): Add webdriverio end to end test framework.
Feb 24, 2022
aee5bea
feat(webdriverio): Add webdriverio end to end test framework.
Feb 24, 2022
07a3413
feat(webdriverio): Add webdriverio end to end test framework.
Feb 24, 2022
2c8067d
feat(webdriverio): Add webdriverio end to end test framework.
Feb 24, 2022
2bac41e
feat(webdriverio): Add webdriverio end to end test framework.
Feb 25, 2022
654431d
feat(webdriverio): Add webdriverio end to end test framework.
Mar 1, 2022
47d2494
feat(webdriverio): Add webdriverio end to end test framework.
Mar 3, 2022
56ba3a4
feat(webdriverio): Add webdriverio end to end test framework.
Mar 3, 2022
6bd9bab
feat(webdriverio): Add webdriverio end to end test framework.
Mar 7, 2022
5c15a4f
feat(webdriverio): Add webdriverio end to end test framework.
Mar 8, 2022
0398937
feat(webdriverio): Add webdriverio end to end test framework.
Mar 10, 2022
18baa8e
feat(webdriverio): Add webdriverio end to end test framework.
Mar 10, 2022
d9fb63c
feat(webdriverio): Add webdriverio end to end test framework.
Mar 10, 2022
c9ece1e
feat(webdriverio): Add webdriverio end to end test framework.
Mar 15, 2022
5888e73
feat(webdriverio): Add webdriverio end to end test framework.
Mar 15, 2022
05a17c4
feat(webdriverio): Add webdriverio end to end test framework.
Mar 15, 2022
a3171c5
feat(webdriverio): Add webdriverio end to end test framework.
Mar 15, 2022
f4e7790
feat(webdriverio): Add webdriverio end to end test framework.
Mar 15, 2022
676e94b
feat(webdriverio): Add webdriverio end to end test framework.
Mar 16, 2022
72eba04
feat(webdriverio): Add webdriverio end to end test framework.
Mar 16, 2022
28842ee
feat(webdriverio): Add webdriverio end to end test framework.
Mar 16, 2022
888e8a4
feat(webdriverio): Add webdriverio end to end test framework.
Mar 17, 2022
2e455cf
feat(webdriverio): Add webdriverio end to end test framework.
Mar 17, 2022
58dc9ea
feat(webdriverio): Add webdriverio end to end test framework.
Mar 17, 2022
dd14979
feat(webdriverio): Add ability to specify a browser for each particip…
Mar 17, 2022
8a40d06
feat(webdriverio): Add ability to specify a browser for each particip…
Mar 18, 2022
0f85eb5
feat(webdriverio): Remove the concept of moderator browser.
Mar 18, 2022
206c8d1
feat(webdriverio): Add grid configuration.
Mar 18, 2022
62b8692
feat(webdriverio): Change max instances value to 16.
Mar 18, 2022
c4d4843
feat(webdriverio): Add conditional services based on grid availability.
Mar 18, 2022
1ac319d
feat(webdriverio): Add some comments on defined constants.
Mar 18, 2022
f9b4066
feat(webdriverio): Remove .env file.
Mar 18, 2022
a747ac0
feat(webdriverio): Simplify grid url env variable and add env variabl…
Mar 18, 2022
34cff7e
feat(webdriverio): Add console logs as attachment to tests reports.
Mar 18, 2022
e14bb1b
feat(webdriverio): Make sure that grid port parameter is always a num…
Mar 21, 2022
e70f29d
feat(webdriverio): Fix typo on grid url.
Mar 22, 2022
e1e2776
feat(webdriverio): Fix typo on hostname parameter.
Mar 23, 2022
f10151e
feat(webdriverio): Get page objects for each specific browser.
Mar 29, 2022
41bacde
feat(webdriverio): Comment the beforeHook code block.
Mar 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat(webdriverio): Add webdriverio end to end test framework.
tudordan7 committed Mar 16, 2022
commit a3171c533bd7c15ac2477900c37e2443e7ea9cd0
16 changes: 11 additions & 5 deletions test/helpers/chromeSession.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@

import { remote } from 'webdriverio'
import { remote } from 'webdriverio';

/**
* Function that creates a chrome session.
*
* @returns {void}
*/
export default function createChromeSession() {
return remote({
capabilities: {
browserName: 'chrome',
acceptInsecureCerts: true,
"goog:chromeOptions": {
'goog:chromeOptions': {
args: [
'use-fake-device-for-media-stream',
'use-fake-ui-for-media-stream',
@@ -14,8 +20,8 @@ export default function createChromeSession() {
'disable-infobars',
'autoplay-policy=no-user-gesture-required',
'auto-select-desktop-capture-source=Your Entire screen'
],
]
}
}
})
}
});
}
44 changes: 22 additions & 22 deletions test/helpers/constants.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
export const BASE_URL = process.env.BASE_URL || 'https://localhost:8080';

export const BROWSERS = process.env.BROWSERS || ['chrome', 'firefox'];
export const BROWSERS = process.env.BROWSERS || [ 'chrome', 'firefox' ];

export const DEFAULT_CONFIG =
"config.requireDisplayName=false"
+ "&config.debug=true"
+ "&config.testing.testMode=true"
+ "&config.disableAEC=true"
+ "&config.disableNS=true"
+ "&config.enableTalkWhileMuted=false"
+ "&config.callStatsID=false"
+ "&config.alwaysVisibleToolbar=true"
+ "&config.p2p.enabled=false"
+ "&config.p2p.useStunTurn=false"
+ "&config.pcStatsInterval=1500"
+ "&config.prejoinConfig.enabled=false"
+ "&config.gatherStats=true"
+ "&config.disable1On1Mode=true"
+ "&config.analytics.disabled=true"
+ "&interfaceConfig.SHOW_CHROME_EXTENSION_BANNER=false"
+ "&interfaceConfig.DISABLE_FOCUS_INDICATOR=true";
'config.requireDisplayName=false'
+ '&config.debug=true'
+ '&config.testing.testMode=true'
+ '&config.disableAEC=true'
+ '&config.disableNS=true'
+ '&config.enableTalkWhileMuted=false'
+ '&config.callStatsID=false'
+ '&config.alwaysVisibleToolbar=true'
+ '&config.p2p.enabled=false'
+ '&config.p2p.useStunTurn=false'
+ '&config.pcStatsInterval=1500'
+ '&config.prejoinConfig.enabled=false'
+ '&config.gatherStats=true'
+ '&config.disable1On1Mode=true'
+ '&config.analytics.disabled=true'
+ '&interfaceConfig.SHOW_CHROME_EXTENSION_BANNER=false'
+ '&interfaceConfig.DISABLE_FOCUS_INDICATOR=true';

export const FIRST_PARTICIPANT = "First participant";
export const SECOND_PARTICIPANT = "Second participant";
export const THIRD_PARTICIPANT = "Third participant";
export const FIRST_PARTICIPANT = 'First participant';
export const SECOND_PARTICIPANT = 'Second participant';
export const THIRD_PARTICIPANT = 'Third participant';

export const ENTER_KEY = "\uE007";
export const ENTER_KEY = '\uE007';
13 changes: 8 additions & 5 deletions test/helpers/createBrowserSession.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@

import createFirefoxSession from "./firefoxSession";
import createChromeSession from "./chromeSession";
import createChromeSession from './chromeSession';
import { BROWSERS } from './constants';
import createFirefoxSession from './firefoxSession';

/**
* Function that creates a browser session.
*
* @returns {void}
*/
export default function createBrowserSession() {
for (let i = 0; i < BROWSERS.length; i++) {
const browserName = BROWSERS[i];
@@ -15,5 +19,4 @@ export default function createBrowserSession() {
return
}
}

}
}
7 changes: 6 additions & 1 deletion test/helpers/createMeetingRoom.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
/**
* Create meeting room function.
*
* @returns {void}
*/
export default function createMeetingRoom(meetingUrl) {
browser.url(meetingUrl)
browser.url(meetingUrl);
}
7 changes: 6 additions & 1 deletion test/helpers/createMeetingUrl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { v4 as uuidv4 } from "uuid";
import { v4 as uuidv4 } from 'uuid';
import { BASE_URL, BROWSERS, DEFAULT_CONFIG } from './constants';

/**
* Function that creates a meeting url.
*
* @returns {void}
*/
export default function createMeetingUrl() {
for (let i = 0; i < BROWSERS.length; i++) {
const browserName = BROWSERS[i];
26 changes: 16 additions & 10 deletions test/helpers/firefoxSession.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
import { remote } from 'webdriverio'
import { remote } from 'webdriverio';

/**
* Function that creates a firefox session.
*
* @returns {void}
*/
export default function createFirefoxSession() {
return remote({
capabilities: {
browserName: 'firefox',
acceptInsecureCerts: true,
"moz:firefoxOptions": {
"prefs": {
"media.navigator.streams.fake": true,
"media.navigator.permission.disabled": true,
"media.peerconnection.ice.tcp": true,
"intl.accept_languages": "en",
"media.autoplay.default": 0
'moz:firefoxOptions': {
'prefs': {
'media.navigator.streams.fake': true,
'media.navigator.permission.disabled': true,
'media.peerconnection.ice.tcp': true,
'intl.accept_languages': 'en',
'media.autoplay.default': 0
}
}
}
})
};
});
}
14 changes: 10 additions & 4 deletions test/helpers/isParticipantModerator.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
/**
* Function that checks if the participant is moderator.
*
* @returns {void}
*/
export default async function isParticipantModerator() {
await browser.execute(() => {
return window.APP.store.getState()['features/base/participants'].local.role === 'moderator'
});
}
await browser.execute(() => {
return window.APP.store.getState()['features/base/participants'].local.role
=== 'moderator';
});
}
15 changes: 12 additions & 3 deletions test/helpers/openParticipantsPane.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
const ParticipantsPane = require("../page-objects/ParticipantsPane");
const Toolbox = require("../page-objects/Toolbox")
const ParticipantsPane = require('../page-objects/ParticipantsPane');
const Toolbox = require('../page-objects/Toolbox');

/**
* Open participants pane function.
*
* @returns {void}
*/
export default async function openParticipantsPane() {
const toolbox = await Toolbox.ToolboxView;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This reads super weird because you are awaiting a property. Please call it something like getXXX


await expect(toolbox).toBeDisplayed();
const participantsButton = await Toolbox.ParticipantsPaneButton
const participantsButton = await Toolbox.ParticipantsPaneButton;

await expect(participantsButton).toBeDisplayed();
await participantsButton.click();
const participantsPane = await ParticipantsPane.ParticipantsPaneView;

await expect(participantsPane).toBeDisplayed();
}
4 changes: 2 additions & 2 deletions test/page-objects/ParticipantsPane.js
Original file line number Diff line number Diff line change
@@ -6,6 +6,6 @@ class ParticipantsPane {
// Participants pane object.
get ParticipantsPaneView() {
return $('.participants_pane');
};
}
}
module.exports = new ParticipantsPane();
module.exports = new ParticipantsPane();
2 changes: 1 addition & 1 deletion test/page-objects/PrejoinScreen.js
Original file line number Diff line number Diff line change
@@ -14,4 +14,4 @@ class PrejoinScreen {
}
}

module.exports = new PrejoinScreen();
module.exports = new PrejoinScreen();
6 changes: 3 additions & 3 deletions test/page-objects/SecurityDialog.js
Original file line number Diff line number Diff line change
@@ -6,12 +6,12 @@ class SecurityDialog {
// Security dialog object.
get SecurityDialogView() {
return $('.security-dialog');
};
}

// Lobby switch object.
get LobbySwitch() {
return $('[aria-label="cross"]');
};
}

// Lobby enabled object. Check if lobby is enabled.
get LobbyEnabled() {
@@ -24,4 +24,4 @@ class SecurityDialog {
}
}

module.exports = new SecurityDialog();
module.exports = new SecurityDialog();
12 changes: 6 additions & 6 deletions test/page-objects/Toolbox.js
Original file line number Diff line number Diff line change
@@ -8,26 +8,26 @@ class Toolbox {
const video = $('#largeVideo');
video.moveTo();
return $('.toolbox-content-items');
};
}

// More action object.
get MoreActionOption() {
return $('.toolbox-button-wth-dialog div');
};
}

// Overflow menu object.
get OverflowMenu() {
return $('#overflow-menu');
};
}

// Security option button object.
get SecurityOptionButton() {
return $('[aria-label="Security options"]');
};
}

// Participants pane button object.
get ParticipantsPaneButton() {
return $("[aria-label='Participants']");
};
}
}
module.exports = new Toolbox();
module.exports = new Toolbox();
10 changes: 5 additions & 5 deletions test/page-objects/notifications/LobbyNotification.js
Original file line number Diff line number Diff line change
@@ -6,21 +6,21 @@ class LobbyNotification {
// Lobby notification object.
get Notification() {
return $('#notifications-container');
};
}

// View lobby button object.
get ViewLobby() {
return $('[data-testid="notify.viewLobby"]');
};
}

// Admit lobby button object.
get AdmitLobby() {
return $('[data-testid="lobby.admit"]');
};
}

// Reject lobby button object.
get RejectLobby() {
return $('[data-testid="lobby.reject"]');
};
}
}
module.exports = new LobbyNotification();
module.exports = new LobbyNotification();
6 changes: 3 additions & 3 deletions test/page-objects/notifications/LobbyRejectNotification.js
Original file line number Diff line number Diff line change
@@ -3,9 +3,9 @@
*/
class LobbyRejectNotification {

//Lobby reject notification object
// Lobby reject notification object.
get Notification() {
return $('[data-testid="lobby.joinRejectedMessage"]');
};
}
}
module.exports = new LobbyRejectNotification();
module.exports = new LobbyRejectNotification();
14 changes: 14 additions & 0 deletions test/specs/lobbyAdmitParticipant.js
Original file line number Diff line number Diff line change
@@ -15,30 +15,40 @@ import createMeetingRoom from "../helpers/createMeetingRoom";
describe('Activate lobby and admit participant', () => {
let meetingUrl;
let Participant;

it('should open jitsi-meet app and enable lobby by first participant', async () => {
meetingUrl = await createMeetingUrl();
await createMeetingRoom(meetingUrl)
const prejoinTextInput = await $('.prejoin-input-area input');

await prejoinTextInput.setValue(FIRST_PARTICIPANT);
await browser.keys(ENTER_KEY);
const toolbox = await Toolbox.ToolboxView;

await expect(toolbox).toBeDisplayed();
const toolbarSecurityOption = await Toolbox.MoreActionOption;

await expect(toolbarSecurityOption).toBeDisplayed();
await toolbarSecurityOption.click();
const overflowMenu = await Toolbox.OverflowMenu;

await expect(overflowMenu).toBeDisplayed();
const securityOptionsButton = await Toolbox.SecurityOptionButton;

await expect(securityOptionsButton).toBeDisplayed();
await securityOptionsButton.click();
const securityDialog = await SecurityDialog.SecurityDialogView;

await expect(securityDialog).toBeDisplayed();
const lobbySwitch = await SecurityDialog.LobbySwitch;

await expect(lobbySwitch).toBeDisplayed();
await lobbySwitch.click();
const lobbyEnabled = await SecurityDialog.LobbyEnabled;

await expect(lobbyEnabled).toBeDisplayed();
const securityDialogCloseButton = await SecurityDialog.SecurityDialogCloseButton;

await expect(securityDialogCloseButton).toBeDisplayed();
await securityDialogCloseButton.click();
});
@@ -47,15 +57,19 @@ describe('Activate lobby and admit participant', () => {
Participant = await createBrowserSession()
await Participant.url(meetingUrl);
const prejoinTextInput = await Participant.$('.prejoin-input-area input');

await prejoinTextInput.setValue(SECOND_PARTICIPANT);
await Participant.keys(ENTER_KEY);
});
it('Moderator should admit the user that wants to join the meeting', async () => {
const notification = await LobbyNotification.Notification;

await expect(notification).toBeDisplayed();
const lobbyAdmitBtn = await LobbyNotification.AdmitLobby;

await expect(lobbyAdmitBtn).toBeDisplayed();
const lobbyRejectBtn = await LobbyNotification.RejectLobby;

await expect(lobbyRejectBtn).toBeDisplayed();
await lobbyAdmitBtn.click();
await openParticipantsPane();
19 changes: 16 additions & 3 deletions test/specs/lobbyRejectParticipant.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
const LobbyNotification = require("../page-objects/notifications/LobbyNotification");
import { v4 as uuidv4 } from "uuid";
//const LobbyRejectNotification = require("../page-objects/notifications/LobbyRejectNotification")
const Toolbox = require("../page-objects/Toolbox");
const SecurityDialog = require("../page-objects/SecurityDialog");
@@ -9,7 +8,6 @@ import {
SECOND_PARTICIPANT
} from "../helpers/constants"
import createBrowserSession from "../helpers/createBrowserSession";
import openParticipantsPane from "../helpers/openParticipantsPane";
import createMeetingUrl from "../helpers/createMeetingUrl"
import createMeetingRoom from "../helpers/createMeetingRoom";

@@ -20,51 +18,66 @@ describe('Activate lobby and admit participant', () => {
meetingUrl = await createMeetingUrl();
await createMeetingRoom(meetingUrl)
const prejoinTextInput = await $('.prejoin-input-area input');

await prejoinTextInput.setValue(FIRST_PARTICIPANT);
await browser.keys(ENTER_KEY);
const toolbox = await Toolbox.ToolboxView;

await expect(toolbox).toBeDisplayed();
const toolbarSecurityOption = await Toolbox.MoreActionOption;

await expect(toolbarSecurityOption).toBeDisplayed();
await toolbarSecurityOption.click();
const overflowMenu = await Toolbox.OverflowMenu;

await expect(overflowMenu).toBeDisplayed();
const securityOptionsButton = await Toolbox.SecurityOptionButton;

await expect(securityOptionsButton).toBeDisplayed();
await securityOptionsButton.click();
const securityDialog = await SecurityDialog.SecurityDialogView;

await expect(securityDialog).toBeDisplayed();
const lobbySwitch = await SecurityDialog.LobbySwitch;

await expect(lobbySwitch).toBeDisplayed();
await lobbySwitch.click();
const lobbyEnabled = await SecurityDialog.LobbyEnabled;

await expect(lobbyEnabled).toBeDisplayed();
const securityDialogCloseButton = await SecurityDialog.SecurityDialogCloseButton;

await expect(securityDialogCloseButton).toBeDisplayed();
await securityDialogCloseButton.click();
});
it('should open jitsi-meet with same room name where second participant wants to join', async () => {
Participant = await createBrowserSession()
await Participant.url(meetingUrl);
const prejoinTextInput = await Participant.$('.prejoin-input-area input');

await prejoinTextInput.setValue(SECOND_PARTICIPANT);
await Participant.keys(ENTER_KEY);
});
it('Moderator should reject the user that wants to join the meeting', async () => {
const notification = await LobbyNotification.Notification;

await expect(notification).toBeDisplayed();
const lobbyAdmitBtn = await LobbyNotification.AdmitLobby;

await expect(lobbyAdmitBtn).toBeDisplayed();
const lobbyRejectBtn = await LobbyNotification.RejectLobby;

await expect(lobbyRejectBtn).toBeDisplayed();
await lobbyRejectBtn.click();
// TODO: Find a solution to select Participant.LobbyNotification.Notidication
// instead of Participant.$('#notifications-container').
const rejectNotification = await Participant.$('#notifications-container');

await expect(rejectNotification).toBeDisplayed();
// TODO: Find a solution to select Participant.LobbyRejectNotification.Notidication
// instead of Participant.$('[data-testid="lobby.joinRejectedMessage"]').
const rejectedMessage = await Participant.$('[data-testid="lobby.joinRejectedMessage"]')
const rejectedMessage = await Participant.$('[data-testid="lobby.joinRejectedMessage"]');

await expect(rejectedMessage).toBeDisplayed();
await browser.deleteSession();
await Participant.deleteSession();
32 changes: 23 additions & 9 deletions test/specs/viewLobby.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
const LobbyNotification = require("../page-objects/notifications/LobbyNotification");
const Toolbox = require("../page-objects/Toolbox");
const ParticipantsPane = require("../page-objects/ParticipantsPane");
const SecurityDialog = require("../page-objects/SecurityDialog");
const LobbyNotification = require('../page-objects/notifications/LobbyNotification');
const Toolbox = require('../page-objects/Toolbox');
const ParticipantsPane = require('../page-objects/ParticipantsPane');
const SecurityDialog = require('../page-objects/SecurityDialog');
import {
ENTER_KEY,
FIRST_PARTICIPANT,
SECOND_PARTICIPANT,
THIRD_PARTICIPANT
} from "../helpers/constants"
import createBrowserSession from "../helpers/createBrowserSession";
import createMeetingUrl from "../helpers/createMeetingUrl"
import createMeetingRoom from "../helpers/createMeetingRoom";
} from '../helpers/constants';
import createBrowserSession from '../helpers/createBrowserSession';
import createMeetingUrl from '../helpers/createMeetingUrl';
import createMeetingRoom from '../helpers/createMeetingRoom';

describe('Open jitsimeet app, enable lobby and view lobby', () => {
let meetingUrl;
@@ -20,50 +20,64 @@ describe('Open jitsimeet app, enable lobby and view lobby', () => {
meetingUrl = await createMeetingUrl();
await createMeetingRoom(meetingUrl)
const prejoinTextInput = await $('.prejoin-input-area input');

await prejoinTextInput.setValue(FIRST_PARTICIPANT);
await browser.keys(ENTER_KEY);
const toolbox = await Toolbox.ToolboxView;

await expect(toolbox).toBeDisplayed();
const toolbarSecurityOption = await Toolbox.MoreActionOption;

await expect(toolbarSecurityOption).toBeDisplayed();
await toolbarSecurityOption.click();
const overflowMenu = await Toolbox.OverflowMenu;

await expect(overflowMenu).toBeDisplayed();
const securityOptionsButton = await Toolbox.SecurityOptionButton;

await expect(securityOptionsButton).toBeDisplayed();
await securityOptionsButton.click();
const securityDialog = await SecurityDialog.SecurityDialogView;

await expect(securityDialog).toBeDisplayed();
const lobbySwitch = await SecurityDialog.LobbySwitch;

await expect(lobbySwitch).toBeDisplayed();
await lobbySwitch.click();
const lobbyEnabled = await SecurityDialog.LobbyEnabled;

await expect(lobbyEnabled).toBeDisplayed();
const securityDialogCloseButton = await SecurityDialog.SecurityDialogCloseButton;

await expect(securityDialogCloseButton).toBeDisplayed();
await securityDialogCloseButton.click();
});
it('second participant should ask to join the meeting', async () => {
Participant1 = await createBrowserSession()
await Participant1.url(meetingUrl);
const prejoinTextInput = await Participant1.$('.prejoin-input-area input');

await prejoinTextInput.setValue(SECOND_PARTICIPANT);
await Participant1.keys(ENTER_KEY);
});
it('third participant should ask to join the meeting', async () => {
Participant2 = await createBrowserSession()
await Participant2.url(meetingUrl);
const prejoinTextInput = await Participant2.$('.prejoin-input-area input');

await prejoinTextInput.setValue(THIRD_PARTICIPANT);
await Participant2.keys(ENTER_KEY);
});
it('Moderator should press the view button from lobby notification', async () => {
const viewLobbyNotification = await LobbyNotification.Notification;

await expect(viewLobbyNotification).toBeDisplayed();
const viewLobbyBtn = await LobbyNotification.ViewLobby;

await expect(viewLobbyBtn).toBeDisplayed();
await viewLobbyBtn.click();
const participantsPane = await ParticipantsPane.ParticipantsPaneView
const participantsPane = await ParticipantsPane.ParticipantsPaneView;

await expect(participantsPane).toBeDisplayed();
await browser.deleteSession();
await Participant1.deleteSession();